A while back John Vincent spawned the hashtag #monitoringsucks. Oh and does it. Nagios is still state of the art in the monitoring world. And damn that’s depressing.
So since #monitoringsucks appeared I’ve been hoping that some people who take heart and start writing modular, scalable, and extensible monitoring components and tools.
The team at Sonian have kicked off things with the introduction of Sensu. Sensu is a new cloud monitoring framework with a Message Bus-based model. Sonian describes the concept as:
The idea behind Sensu is simple, schedule the remote execution of checks and collect their results. As mentioned above, Sensu uses RabbitMQ to route check requests and results, this is the secret sauce. Checks will always have an intended target; servers with certain responsibilities, such as serving web pages (webserver) or data storage (elasticsearch). A Sensu client has a set of subscriptions based on its server’s responsibilities, the client will execute checks that are published to these subscriptions. A Sensu server has a result subscription, this is where clients publish check results. Since each component only connects to RabbitMQ, there is no need for an external discovery mechanism, new servers are monitored immediately.
It’s an interesting concept and one I think merits some development. It’s not quite the direction I think is needed totally. It’s still heading towards a somewhat more monolithic framework than I feel is needed. I’d like to see things broken into a lot smaller components but it’s a really good start.
To make it a bit easier to try Sensu out I’ve added a Puppet module and Vagrant file to help you build it. Tim Sharpe of GitHub fame is also working on it and has developed his own module too. I’ve also added some plugins to monitor Puppet and an alerting handler to send check notifications to IRC.