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で解析してよしなに活用しています。もし既存の監視データを活かしつつ、何かをやる際の選択肢としてご検討いただければ幸いです。