Muninなどのグラフデータを簡単に解析する方法

ペパボのホスティング事業部では主にnagiosで監視を行い、Muninを利用してシステムリソースの可視化を行っています。
先日ある改善を行った際に、各サーバの過去1日のロードアベレージにおける最高値、最低値、平均値を取得する必要があり、その際にそれらしいAPIがMuninになかったので、.rrdファイルをRRDToolを利用して解析し、jsonで結果を返却するprdというコマンドを開発しました。

使い方

$ prd example.jp-cpu-user-d.rrd | jq
[{
 "name": "example.jp-cpu-user-d.rrd",
  "max": 2010,
  "min": 1566,
  "avg": 1790
}]

このようなに引数にファイル名を指定すると、そのファイルを解析した結果をjsonで返却します。複数ファイルを渡した場合はこのように、複数の結果が返却されます。

$ prd example.jp-cpu-user-d.rrd example.jp-cpu-system-d.rrd  | jq
[{
 "name": "example.jp-cpu-user-d.rrd",
  "max": 2010,
  "min": 1566,
  "avg": 1790
},
{
 "name": "example.jp-cpu-system-d.rrd",
  "max": 1020,
  "min": 1136,
  "avg": 890
}]

僕自身の利用においてはSSH越しにMuninサーバに対して直接実行して、Rubyで解析してよしなに活用しています。もし既存の監視データを活かしつつ、何かをやる際の選択肢としてご検討いただければ幸いです。