ZABBIX でも munin-node を監視したい!

ZABBIX でも munin-node を監視したい! はてなブックマーク - ZABBIX でも munin-node を監視したい!


自分用φ(..)メモメモ

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 を使って検出できるので安心だ。