Getting back to work as a full time sysadmin was great, I got back to speed on scalability, updated my toolbox and learnt about other fantastic tools, like Graphite. Graphite is a graphing tool, extremely configurable and scalable. One thing, though, bothered me: the lack of good tools to send server metrics to it. I tried collectd graphite plugins and none did what I wanted the way I wanted.
So I decided to flex my node.js dev muscles and here is HoardD. This is a node.js app written in coffee-script that basically runs scripts and tools to get information about a server and sends it to carbon (Graphite’s storage backend). It’s easily expansible to include more metrics and very very fast and small (11MB or so, depending on scripts loaded, most of it is node).
At this moment there are basic scripts (uptime, memory, cpu, vmstat) and also 2 DB specific ones (redis and mysql). I will be fixing and adding scripts as I need on my day to day work, but the tool is already very usable. I am accepting push requests and patches to.
You can get HoardD on my github repo, there’s more info on the README there.
Below are some examples of graphics created with Graphite using the metrics sent by HoardD:
CPU stats from
vmstat. Not a very busy server right?
Redis memory usage.
MySQL Bytes transferred and received:
MySQL counters for various operations:
Catching the exact moment when InnoDB flushes its dirty pages
MySQL slave lag: