2013年6月25日火曜日

MRTGで「ERROR: I guess another mrtg is running.」のメッセージ

ちょっとトラブったときの対処をまとめる。

MRTGのWebページが表示されているが、データは更新されなくなった。
まずサーバにログインすると、mailがどんどん送られてた。
中身を確認すると、以下のメッセージが。

...
Tuesday, 25 June 2013 at 18:00: ERROR: I guess another mrtg is running. A lockfile (/var/lock/mrtg/mrtg_l) aged
300 seconds is hanging around. If you are sure that no other mrtg
is running you can remove the lockfile
...

lockfileが残っていたため、MRTGの起動に失敗していたらしい。
なので、/var/lock/mrtg/配下のファイルを全て削除してみたが、現象は解消しない。

気になったのでMRTGの状態を確認してみた。

# ps ax | grep mrtg
 3547 ?        Ss     0:00 /usr/bin/perl -w /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l -
 3550 ?        S      0:00 /bin/sh /etc/mrtg/temper_mrtg.sh
 3551 ?        S      0:00 /bin/sh /etc/mrtg/temper_mrtg.sh
 3733 ?        Ss     0:00 /usr/bin/perl -w /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l -
 3736 ?        S      0:00 /bin/sh /etc/mrtg/temper_mrtg.sh
 3737 ?        S      0:00 /bin/sh /etc/mrtg/temper_mrtg.sh
...

mrtgはcrontabで定義されていたため、10分毎にコマンドが実行されており、実行されたプロセスが消えずにどんどん残っていったらしい。
なんでプロセスが残ってるのか分からず、crontabに定義されてたプロセスを実行したら…確かに無応答になった。

中の処理を確認したら、前に組み込んだ温度測定のコマンド[/usr/local/bin/temper]が無応答になってたことが判明!
よくよく見てみると…USB温度計が接続されてなかった。
接続されていないとコマンドが無応答になるらしい。

マシンを再起動して接続したら、ちゃんと動くようになりました。
もちろん、MRTGも正しく更新されるようになりました。
よかった、よかった。