MRTGによるシステムのモニター

Last edited on 2010/05/05 (水) - 23:22

MRTGのインストール

QNAP TS-109にMRTGをインストールすることにした。MRTGはもともとルーターのトラフィックデータをグラフ化して表示するツールらしい。MRTGについては以下のサイトがある。

MRTG MRTG 日本語翻訳サイト

MRTGをQNAPにインストールするにあたっては,QNAP Forumの中のトピックのページが参考になる。 ここに書かれている手順でインストールすることができた。注意点としては、ipkgでもperlがインストールできてしまうのだが、ここに書かれている通りあらかじめikpgを使わないでperlをインストールしておくことである。

(追記:perlを別にインストールするのは、ipkgのperl がchroot環境でないとエラーを出して動かないためだったが、chroot環境でなくても動くようになったので、ipkgのperlを使えばよくなった)

最後にcrontabを編集して定期的にデータを取得するようにする。しばらくの間は15分おきにデータを取るようにしていたが、そこまで細かくやることもないかと思い、今は1時間ごとにデータを取っている。最近ではHDD をspin down させているので、HDDを無駄に動かすのがいやで、さらに、1日1回にしてしまった。

さてここまでで一応トラフィックデータをグラフ表示することができた。しかし、本当はHDDの温度変化が知りたかったのである。いろいろネットで調べてみるとsmarttoolsというパッケージをインストールして、smartctlというコマンドでHDDのSMART情報を取得すればよいらしい。幸いにもQNAP用にipkgでインストールすることができるようだ。これはどうしてわかったかというと、QNAP公式フォーラムの中に、 Current Ipkg feeds available for QNAP NASというトピックを見つけたからだ。すばらしい! ipkgを使って簡単にインストールすることができた。

ところが、smartctl を以下のように実行してもエラーが出てしまう。SMART機能を持っていないなどとたわけたことをいうのだ。 これを解決するのはかなり時間がかかった。結局、-d marvel というオプションをつければよかったのだ。これもなぜわかったかというと、Monitor disks temperatureというトピックの中にヒントが書いてあった。TS-109はシングルディスクだが RAIDコントローラをバイパスしなければいけない点はTS-209と同じらしい。

ついでに、CPU負荷とDisk使用量とメモリ/Swap空き容量のデータも取ることにした。これもネットで調べてみるとsnmpでデータを取ることができるらしい。snmp+mrtgの設定のメモ ? ありえるえりあというページを参考にして、snmpd.conf と mrtg/localhost.cfg を書き換えて、CPU負荷とDisk使用量とメモリ/SWAP空き容量をグラフにすることができた。

ちなみに、mrtgの設定ファイル(localhost.cfg)を変更して新たなデータを取得する場合、indexmakerの実行が必要になるのと、mrtgを3回実行しないとデータが反映されないようなので注意が必要である。

config ファイルを設定するときの注意

MRTGに限らずデーモン系の各種configファイルの設定を変えたときは、該当するデーモンプロセスを初期化しなければならない。Unixではさんざんやってきたはずなのに、しばらく触ってなかったせいか、よく忘れてしまい、「あれ?おかしいな変わらないなあ」などと相当悩んでしまった。わかってしまえばばかばかしい。 具体的には、ps | grep XXXX などとやってプロセス番号を見つけて、kill -1 NNNN とやっている。 crontab を書き換えたは、以下を実行する。 /etc/init.d/crond.sh restart

再起動時の対処

ある時、TS-109を再起動したらデータがとれなくなってしまった。ipkg install net_snmp としただけでは、再起動時に自動的にsnmpdが起動するようになっていない。autorun.shに
/opt/sbin/snmpd -c /opt/etc/snmpd.conf
と書いておく必要がある。

レンタルサーバにコピーして外からチェック

レンタルサーバにデータをコピーして外部からチェックできるようにした。ちなみに自宅のNASは外からはアクセスできないようにしている。

以下のスクリプトでレンタルサーバにFTPで転送している。
ftp -i -n < ftpcmd2.txt >> ftp2.log
ftpcmd2.txt の中身はこんな具合。
open <example.com> user <user> <password> bin cd <directory> lcd /share/Qweb/mrtg mput *.png *.html disconnect bye

これでとりあえず外からでもTS-109の様子をチェックすることができるようになった。そうすると携帯電話からも見たくなってきた。そのままでは、i-modeブラウザでは見えない。そこで、以下のようにi-mode用のデータを作ることにした。

#!/bin/sh cd <working directory> for png in `ls *.png` do base=`basename -s .png $png` /usr/local/bin/convert $png -resize 220x60 m/$base.gif done for html in `ls *.html` do sed s/png/gif/g $html > m/$html done

i-modeはpngを表示できないのでgifに変換する。幸いにもレンタルサーバでImageMagicをサポートしていたので、これを使った。ついでにサイズも変えている。そして、gifの画像ファイルを参照するようにhtmlファイルも書き換えている。 これでi-modeからチェックができるようになった。

直接MRTGでgifを生成する方法も考えたが、調べてみるとMRTGはGDライブラリを使っており、PNGしか生成できないようだった。

MRTGの出力結果

出力結果は、このページ へどうぞ。