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 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