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

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 220×60 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の出力結果

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

PAGE TOP