Making Sensu work with Graphite

Reading time ~1 minute

Like many companies, I’m sure, we’re investigating using Sensu for monitoring and Graphite for metrics collecting. The docs for making these two commuicate together over AMQP are pretty good except for one thing.

Using the docs that I’ve read, when you start up Sensu first with its default options for AMQP, and then start up Graphite to read from that queue, Graphite will crash every time it tries to create the exchange. The reason for this, after lots of hair-pulling and debugging, is because Graphite is hard-coded to set up a durable exchange for its metrics, while Sensu’s default is to set up a non-durable exchange. RabbitMQ will not allow you to create an exchange with the same name and different options, so whichever piece of software created the exchange will work, but the other will blow up all over your face.

The solution to this is pretty simple, but I haven’t seen it documented anywhere. Simply add "durable": true to your exchange configuration in your Sensu config.json like so:

{
    "handlers": {
        "graphite": {
          "exchange": {
            "name": "graphite",
            "type": "topic",
            "key": "metrics",
            "durable": true
          },
          "type": "amqp",
          "send_only_check_output": true
        },
    }
}

Hope that helps!

The Fastest Way to Success

What's the fastest way to success? We're all looking for shortcuts. Continue reading

Tips for New (or Not So New) Managers

Published on February 28, 2016

Migrating from WordPress to Octopress

Published on July 31, 2012