Cactiのグラフを1分間隔で出力するには + おまけ

Cactiのグラフを1分間隔で出力するときのメモ。まぁCactiってよりrrdtoolがポイントなんだけど。。

Poller

値を取得するPollerの設定は2つです。

Cactiの管理画面

Cactiにログインして

(Configuration) Settings > Poller

と進んで「Poller Interval」と「Cron Interval」をそれぞれ「Every Minute」とする。

cron

pollerのcronを1分間隔に変更

* * * * * php /path/to/cacti/poller.php > /dev/null 2>&1

> /dev/nullってやるとイス投げられるらしいよ

Data Templates

Pollerは値を取るだけで、こっちだけ変えても肝心のグラフは相変わらず5分間隔で出力されるので、グラフも1分間隔で出力されるようにData Templatesも変更する。
同じくCactiにログインして

(Templates) Data Templates

から変更したいテンプレートを選択する。

テンプレート設定の「Data Source」項目の「Step」が300(=5分)になっているのでこれを「60」に変更する。

…今こうしてまとめてみて思ったんだけど、今後の運用のことを考えるとチェックボックにチェック付けておくのもいいかもしれない

もう作っちゃったグラフはどうすんだよ問題

↑の2つの設定にしておいて新しくグラフを作成すると1分間でグラフが出力されるようになるけど、Data Templatesの設定はグラフ作成時(rrdtool create)の設定項目なので、既存のグラフには反映されない。
既存のグラフも設定を変更する場合はrrdtoolコマンドをつかう。(これが書きたかった)

で、よくCPUやメモリの最大値を変更するときはrrdtool tuneってオプションつけて値を変更してて、今回もこれでいけるもんだと考えてたんだけど(余裕余裕って調子のってた)、どうやら「Step」はtuneで変更できないらしい。
Stepは rrdtool create 時の項目ですね。

んでまぁ色々試行錯誤してみたら

  1. rrdtool dump
  2. Step項目を変更
  3. rrdtool restore

してやれば普通に値が変更されることを確認したので

#!/bin/sh

TMPDIR="/path/to/tmpdir"

cd /path/to/cacti/rra

for rrd in `ls -1 *.rrd`; do
   rrdtool info $rrd | grep step
   rrdtool dump $rrd $TMPDIR/$rrd.xml
   sed -i s/\<step\>300/\<step\>60/g $TMPDIR/$rrd.xml
   mv $rrd $TMPDIR/$rrd.bk
   rrdtool restore $TMPDIR/$rrd.xml $rrd
   chown cactiuser:cactiuser $rrd
   rrdtool info $rrd | grep step
done

みたいな簡単なシェルを書いて(すごく無理やりっぽいけど)変更しました。
いや、CPUだけでいいよって時は`ls -1 *cpu*.rrd`みたくしとけばおk

おまけ!

関係ないけどCactiつながりってことで。

Graph Tressの設定でItemを追加するとき(ホストとか)ツリーに表示する順番を変えるのって結構めんどい。
小さい↑↓のアイコンをポチポチって。。登録ホストがたくさんあるときはまじ地獄。

実は最近知ったんだけど、これ「Sorting Type」って設定がある。しかも目の前にある。。
デフォは「Manual Ordering(No Sorting)」になってるので、これを「Natural Ordering」にしてやるとそれっぽく勝手にソートしてくれる。

いや、これ盲点っていうか。。今までの苦労はなんだったんだよ。。