ZABBIX(赤)でmunin-node(緑)プロセスを監視しようとしても、zabbix-agentのバージョンが1.4系の場合は key に proc.num[munin-node] を指定しても、常に結果が 0 。正常に検出することが出来ない。代案として、proc.num[perl,,,”munin-node”] を用いることで、munin-node の稼働状況を確認することが出来た。以下は、通常の監視方法と、代替案を見つけるまでの手順を記す。
■ ZABBIX でも munin-node を監視したい!
Linux サーバ上で稼働する munin-node を監視するために、ZABBIX を用いた。目的は munin-node を監視して、停止している状況があれば、通知して復旧するため。ZABBIXの代わりに、もちろん、他の監視ツールでも良い。たまたま監視対象のサーバでは zabbix-agentd が稼働していたので、そのまま利用することにした。
プロセスの監視を行いたい場合は、対象サーバで zabbix_agentd が動作し、かつ ZABBIX server から監視対象に加える必要がある。
さて、稼働中のプロセス(daemon)を監視するには、標準テンプレート ‘Template OS Linux’ の設定が参考になった。参考にしたのは、アイテム「Number of processes」。標準の key は「proc.num[]」であり、サーバ内の合計プロセス数を表示するもの。
今回 ‘munin-node’ の監視を行いたいので、その場合は、proc.num の引数に指定しておくとよい。通常であれば、key を次のようにして監視する。
proc.num[munin-node]
proc.numの引数詳細は、ドキュメントを参照のこと。
しかし、zabbix_agentd のバージョンが古いと、このように key を指定しても検出できない事があった(おそらく仕様上の違いと思われるが、詳しくは調査していない)。
分かっているのは、対象サーバの zabbix-agent が version 1.4.7 と古かったこと。ちなみに RHEL5.x の環境で動作していた。
$ rpm -qi zabbix-agent Name : zabbix-agent Relocations: (not relocatable) Version : 1.4.7 Vendor: Fedora Project Release : 1.el5 Build Date: 2011年01月04日 05時01分51秒
おそらくzabbix-agentのバージョンを上げることで回避出来たであろう。しかし、勝手に変更できない環境だったため、 別の方法を模索する。ネットで同様の状況が発生していないか調べた所、似たような現象が発生している記事を発見。
そのページを参考に、zabbix_agentd のテストモードを使い、動作テストを行う。
まず、Apache ( httpd ) の検出が可能かどうかテスト。proc.num のプロセス名は ‘httpd‘ を入力。
$/usr/sbin/zabbix_agentd -t proc.num[httpd] proc.num[httpd] [u|10]
[ ] の左側 u は正常に値が取得出来ていて、’10‘ は httpd が 10 起動しているという意味。これがkey記述違いだとすると [m|ZBX_NOTSUPPORTED] になる(このあたり、詳しい意味を知りたいのだが、ドキュメントを発見できなかった。。)。
ちなみに、テストは ZABBIX 2.0.x であれば、zabbix_get を使う方法もアリ。
$ zabbix_get -s 127.0.0.1 -p 10050 -k proc.num 10
さて、このように httpd のカウントが正常に出来ている事を確認。次は munin-node に対し、同様に実行。
$ /usr/sbin/zabbix_agentd -t proc.num[munin-node] proc.num[munin-node] [u|0]
エラーは出ないものの、カウント数は「0」件。ps コマンドで見ると、
$ ps ax | grep munin 4360 ? Ss 0:24 /usr/bin/perl -wT /usr/sbin/munin-node 6265 pts/0 S+ 0:00 grep munin
正常表示されている。
次に、先のページを参考に、’perl‘ が実行しているコマンドライン ‘munin-node‘ のプロセス数をカウントしてみる。
$ /usr/sbin/zabbix_agentd -t proc.num[perl,,,"munin-node"] proc.num[perl,,,munin-node] [u|1]
今度は ‘1‘ と、正常にカウントされている事を確認。
あとは、ZABBIX上の Item で、 key の箇所に当てはめると完成。
ちなみに、ダウンをトリガとして検出するには、Expression(条件式を) 「{<HOST>:proc.num[perl,,,”munin-node”].last(0)}<1」とする。
これで、munin-nodeが落ちていても、ZABBIX を使って検出できるので安心だ。