気まぐれSE日記

地方でエンジニアしてます

RRDToolの勉強

サーバの監視ソフトというのを探していたのですが、
SNMPPHPperlMySQLなどと依存するソフトが多い。

以前muninも試したのですが、あれはperlmodule等の設定あるし、ちょっと見づらい。
cactiと言うのもあるんですがあれもMySQLが必要って..ことでNG


このように依存するソフトが多いと素人さんにサーバに監視ソフトのインストールを依頼すると大変なんですよね。簡単に設置できるものはないかなあと思ったが、ほんとに良いのが無い。


しようがないので自作しようと思いました。


たいした知識がないので /procからCPUとメモリとネットワークトラフィックのみ
取得してグラフ表示させるってものです。MRTGでも良いんですけど、目的のサーバにgdが入ってないし、SNMPも入ってないのでNG。
で、RRDToolが入ってたのでそれで実行させてみることにしました。



RRDToolは昔から使ってみたいと思いつつ理解できない部分があったのでさわっていませんでしたが、今回やってみて意外とデキルと思いました。ただ、設定項目大杉なのが難点ですかね。

値取得スクリプト

各種CPU・メモリ等の値取得に関しては完全手抜きでbashスクリプト書いた。

  • CPU利用率の取得は、MRTGの奴を参考というかパク(ry (他の案としては、topとpsコマンドでの値取得があるが精度がイマイチ)
  • 空きメモリはfree コマンドで-/+ buffers/cache 行のfree列を取ってくる。usedの方も取得しても良いと思う。
  • ネットワークに関しては /proc/net/dev のとりあえずeth0のbytesを取得するようにした。
  • あと、PostgreSQLの接続数なんかも載せました。これはmuninのスクリプトをほぼそのまま流用。

としたよ。



RRDToolを使ってみた

今回RRDTool 1.2.24で試しましたが、グラフ化のところでどうやっても画像が0x0のままで出力できないというところで大ハマリしました。これは、LINEやAREAを追加してやればいいということでした。Web上の解説だと書いてないんだよねこれが。


rrdtool graph cpu.png -t "CPU" DEF:cpu=cpu.rrd:cpu:LAST \
-u 100 \
--vertical-label "%" \
AREA:cpu#009900:cpu \
GPRINT:cpu:LAST:"last\: %6.2lf%% / " \
GPRINT:cpu:AVERAGE:"ave\: %6.2lf%%"

↑とりあえず、平均も出した。
まだ途中なのでできてきたら画像を載せます。


画像の通り、一応動くようになりましたが途中で
データがNanで入る現象が出てグラフが抜けるのが今わからんところです。

→これは、データ取得間隔の設定をcronで3分としたのにrrd側が5分のままなのが原因だった。