Muninのグラフを少し修正したかった。
特に歴史を改ざんしたかったわけではなくDERIVEなグラフに対してプラグインが0とかの値を返してしまうとグラフの値がおかしくなってしまうため、これを修正したかった。
先にまとめだけ書くと、検索したら出てくるように、MuninのデータはRRDTOOLを使ってデータを管理しているので、rrdtoolコマンドでdumpしてrestoreすればよい。
しかし、muninにより(標準だと)5分間に1回更新されてしまうので非常に素早くXMLファイルを書き換える必要がある。また、muninがmuninユーザで動いているとき、rootでデータを作ってしまうとmuninが書き込めなくなる。ということで下のようなスクリプトを書いておいた。
modify_rrd.sh
#!/bin/bash -x
#
# muninのデータを修正するツール
#
name=`basename ${1}`
tmp_xml="/tmp/${name}.xml";
rrdtool dump ${1} ${tmp_xml};
vim ${tmp_xml};
\mv ${1}{,.backup};
rrdtool restore ${tmp_xml} ${1};
chown munin:munin ${1};
$ sudo ./modify_rrd.sh /var/lib/munin/example.com/example2-if_eth0-up-c.rrd
こんなのを書いておけば、上のようなコマンドを叩くだけでvimが開いてXML書き換えて保存すればrestoreされる。これでデータを慌てて書き換えて権限を変えわすれてデータがなくなったりすることもなくなった。