連載
» 2010年03月03日 00時00分 公開

ZABBIXで脱・人手頼りの統合監視(6):一歩進んだ監視のカスタマイズ (1/3)

この連載では、オープンソースの運用監視ソフトウェア「ZABBIX」ではどんなことができるのかを、実際の使い方とともに紹介していきます(編集部)

[青山雄一,ミラクル・リナックス株式会社]

 前回は、ZABBIXの応用的な監視機能である「Web監視」を利用して、Webサービスを監視する方法を紹介しました。最終回となる今回は、「ユーザーパラメータ」という機能を利用して、ZABBIXでは標準で用意されていないところまで監視項目を拡張し、監視する方法を紹介します。

ユーザーパラメータとは

 ユーザーパラメータとは、ZABBIXエージェントに任意のコマンドを実行させ、その出力結果を監視する機能です。

 ユーザーパラメータは、以下のような動作を行います。まず、ZABBIXサーバはZABBIXエージェントに対し、事前に定義した任意のキーの収集要求を送信します。ZABBIXエージェントは要求されたキーに対応したコマンドを実行します。そして、コマンドの実行結果(標準出力に出力された文字列)を、監視結果としてZABBIXエージェントに送信します。

図1 ユーザーパラメータの動作 図1 ユーザーパラメータの動作

 このようにユーザーパラメータを利用することで、ZABBIXには標準で用意されていない項目、例えば各アプリケーションのパフォーマンス情報を取得したり、いままで人手による監視に利用していたスクリプトの実行結果を取得したりと、よりニーズに合った監視ができるようになります。

ユーザーパラメータを利用したApacheのアクセス数監視

 では例として、Apacheのモジュールである「statusモジュール」を利用して、Webサーバのアクセス数を監視するための設定を行ってみましょう。最初に、Apacheに必要なモジュールが組み込まれていることを確認します。

# apachectl -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c                  ←この行が出力されることを確認

 続いてApacheの設定を確認します。以下のように/etc/http/conf/httpd.confで「LoadModule status_module modules/mod_status.so」「ExtendedStatus On」の2行が有効になっていることを確認してください。

# grep "LoadModule status_module modules/mod_status.so" /etc/httpd/conf/httpd.conf
LoadModule status_module modules/mod_status.so
# grep ExtendedStatus /etc/httpd/conf/httpd.conf
ExtendedStatus On

 さらに、以下のディレクティブを有効にします。

<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1    ←この部分を、server-statusを参照可能にさせるホストに修正
</Location>

 上記の設定が完了したら、Apacheを再起動します。

# service httpd restart

 ブラウザで以下のURLを開き、statusモジュールが正しく動作していることを確認します。

http://<サーバのIPアドレス>/server-status

 以下のページが表示されたならば、statusモジュールが有効になっています。

画面1 statusモジュールの動作確認 画面1 statusモジュールの動作確認

 次に、「apachectlコマンド」で同様の情報が取得できることを確認します。

# apachectl fullstatus

 ユーザーパラメータは、zabbixユーザーで実行されます。そのため、zabbixユーザーに実行権限のないコマンドは、ユーザーの変更や権限の変更などを行って、実行できるよう設定する必要があります。

 ユーザーパラメータで実行したいコマンドが一般ユーザーで実行できるか、パーミッションを確認します。

# ls -l /usr/sbin/apachectl
-rwxr-xr-x 1 root root 3916  7月 10  2007 /usr/sbin/apachectl

 この結果、apachectlコマンドは一般ユーザーでも実行できることが分かります。

 ここではapachectlを使って、Total accessesの値を監視します。apachectlの実行結果は多くの情報を含んでおり、複数行にわたることもあります。そこで、ZABBIXで扱いやすいように、コマンドで数値のみが出力されるよう、grepとawkを使って下記のように整形します。

# apachectl fullstatus | grep "Total accesses" | awk '{ print $3}'

 次に、ユーザーパラメータを登録します。これは、任意のキーとコマンドをひも付けて設定します。この場合は、/etc/zabbix/zabbix_agentd.confに以下の内容を追加します。

# vi /etc/zabbix/zabbix_agentd.conf
UserParameter=apache-accesses,/usr/sbin/apachectl fullstatus|grep "Total accesses"|awk '{ print $3}'

 この設定の書式は以下のとおりです。

UserParameter=<任意のキー名称>,コマンド


 コマンドに|(パイプ)を使う場合は、|(パイプ)の前後にスペースが入らないように注意してください。

 /etc/zabbix/zabbix_agentd.confにユーザーパラメータを登録したら、ZABBIXエージェントを再起動します。

# service zabbix-agent restart

 では、正しくユーザーパラメータが登録できているかどうかを、次のコマンドで確認しましょう。これは、zabbix-serverが動作しているホストで実行します。

# zabbix_get -s<ZABBIXエージェント側のIPアドレス> -kapache-accesses

 zabbix_getは、ZABBIXエージェントの動作を確認するためのコマンドです。正しく値が取得できていたら、ユーザーパラメータの設定は完了です。

 さらに、運用を楽にするため、ZABBIXのWebインターフェイスにアイテムを登録します。

項目 設定例
名前 http accesses
タイプ ZABBIXエージェント
キー apache-accesses ←ユーザーパラメータで定義したもの
データ型 数値(整数)
乗数 使用しない
保存時の計算 差分

 上記のようにアイテムを設定すると、先ほど定義したユーザーパラメータを使っての監視が開始されます。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。