Diamond is a python daemon that collects system metrics and publishes them to Graphite. It is capable of collecting CPU, memory, network, i/o, load and disk metrics. Additionally, it features an API for implementing custom collectors for gathering metrics from almost any source.
Measure Anything, Measure Everything. Sounds great, but how do you actually accomplish this? There are dozens of options for measuring system metrics so why build another one? Simple. They all failed on of these basic tests.
Configuration – Deploy a server. Setup monitoring. So far, so good? Now deploy another 1000. How hard is it to monitor them? We believe that the first server should be as simple as the thousandth, even if each one is slightly different.
Online changes – Why restart your monitoring to add a new monitoring metric? Just add/update a collector and Diamond will detect and start collecting the new metric automatically.
Easy deployment – Written in python to allow deployment to a verity of distros with the same files. This means you don’t have to compile binaries or worry about operating system upgrades breaking things.
Configuration management – We allow overrides to the main configuration file to allow multiple ways to manage your configuration. Have a configuration manager that allows roles? Add in a diamond collector configuration file per role and have diamond do the rest.
Scale – Diamond has successfully been deployed to clusters of 1000 machines pushing 3 million points per minute.
Documentation – Not every monitoring solution documents the wide verity of collectors it supports. We are constantly improving our documentation.