Did you know? DZone has great portals for Python, Cloud, NoSQL, and HTML5!
DevOps Zone is brought to you in partnership with:

Mitch Pronschinske is the Senior Content Curator (aka. "Lord of the Zones") at DZone. That means he writes and searches for the finest developer content in the land so that you don't have to. He often has hotdogs for lunch, likes to make his own ringtones, enjoys card and board games, and is married to an underwear model. Mitch is a DZone employee and has posted 1703 posts at DZone. You can read more from them at their website. View Full User Profile

Moncli: Decentralized, Horizontally Scalable Monitoring

02.16.2012
Email
Views: 1221
  • submit to reddit
The DevOps Zone is presented by DZone with partners including ThoughtWorks Studios and UrbanCode to bring you the most interesting and relevant content on the DevOps movement.  See today's top DevOps content and be sure to check out ThoughtWorks Studio's Continuous Delivery Whitepapers and UrbanCode's Webinars.
Nagios has long been the de facto monitoring framework, giving you the ability to pull metrics from an OS or server that aren't easily accessable over the network. Now we're beginning to see an explosion of new open source projects, mainly around DevOps and the #monitoringsucks movements, that provide monitoring features that are less "one size fits all".  Jelle Smet recently added his own monitoring tool to the mix called "Moncli."  Here was his reasoning behind creating this tool:

When running into scalability problems with my Nagios setup, I realized that the reason for this is the fact that Nagios always has to take the initiative to poll a client.  This is in Nagios terminology called an active check.  It’s of course normal that a client receives instructions on what it needs to do like which plugin to execute or which thresholds to evaluate.  However, if you think about it, why do we have to repeat the same question over and over again while in essence nothing has ever changed between the current and the previous request? Isn’t it normal we ask a question once and say report back at this interval and carry on until further notice?

So why not offloading all (or most of) the scheduling effort a central monitoring system has to perform to the monitoring clients running on your hosts?

 -Jelle Smet


Jelle also wanted to take things one step further and turn his individual clients into "independent miniature monitoring engines” allowing the system to shift load onto various clients, making it a decentralized setup. 

So to do this, Jelle created Moncli, which uses RabbitMQ as it's message broker.  It's written in Python and its compatible with any framework built on the Nagios core.  There's a lot of interesting details about Moncli that I won't go into here but you should check out Jelle Smet's blog post on his rationale behind the design of Moncli, and then check out the docs for a quick list of points

Get the full story on Moncli

Moncli GitHub
Moncli Documentation

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

ThoughtWorks Studios and UrbanCode, the sponsors of the DevOps Zone, are champions of the DevOps movement.  Their deployment tooling solutions focus on the entire software development lifecycle, involving all parts of an organization, which helps facilitate a migration to the DevOps philosophy.