ZabbixでApacheを監視する

ZabbixでApacheの監視項目を入れてみたのでその設定メモ。
apacheのmod_statusで表示される項目をzabbix.comが配布しているpythonスクリプトで取得してzabbix_senderでサーバへ送付する方法を取ります。
元ネタはこちら

Apacheでmod_statusを見えるようにする。

このあたりは省略。
ちゃんと設定できると http://server-name/server-status でこんな画面が見えるはずです。


監視スクリプトをダウンロード

ここから監視用pythonスクリプトをダウンロード。上記の/server-statusが参照できるサーバ上の適当なところへ保存します。
私の場合は、apacheが動作しているサーバ上に /usr/local/apache2/bin/ZabbixApacheUpdater.py と保存しました。

cronを仕掛ける

上記のスクリプトを定期的の動作させるためcronを仕込む。
こんな行を追加。

* * * * * /usr/local/bin/python /usr/local/apache2/bin/ZabbixApacheUpdater.py -c hostname -z zabbix.server.name > /tmp/za.log 2>&1

"-c"オプションで指定するのが監視対象のホスト名なんですが、ここにはzabbixサーバで指定しているホスト名と同じ名前を記述する必要があるようです。当然ちゃんと名前解決できる必要がある。
このスクリプトでhttp経由でserver-statusにアクセスして必要な情報を取得してzabbix_senderでzabbixサーバへ情報を送信しています。私の環境ではzabbixクライアントを手動でインストールしたのでzabbix_senderの位置がこのスクリプトの期待しているところと違います。スクリプトのオプションでパス指定はできるのですが、面倒なのでスクリプトを修正。

zabbixサーバへテンプレートをインポート

こんどはサーバ側の設定。zabbixサーバへテンプレートをインポートします。テンプレートはここ。ローカルPCにでもこのxmlをダウンロード。zabbixのWebインタフェースで「テンプレート」→「テンプレートのインポート」。
「ファイルを選択」から先ほどダウンロードしたxmlファイルを指定して「インポート」をクリック。

ホストにテンプレートをリンクさせる

「設定」→「ホスト」から対象ホストを選択、リンクしているテンプレートの「追加」でTemplate_App_Apache_Statsを追加。

これでmod_statusで参照できる情報がzabbixでストアされるようになりました。が、zabbixサーバ側のログを見ているとzabbix_senderからの情報がとれたり取れなかったりしているみたい。

21972:20121019:174815.289 item [hogehoge:apache[localhost,Uptime]] became not supported: ZBX_NOTSUPPORTED
21975:20121019:175005.657 item [hogehoge:apache[localhost,Openslotwithnocurrentprocess]] became supported

こんなふうに交互にとれた、とれないと言ってくる。名前解決かなぁ。