ZABBIXで脱・人手頼りの統合監視

最終回 一歩進んだ監視のカスタマイズ


ミラクル・リナックス株式会社

青山 雄一
2010/3/3


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

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

ユーザーパラメータとは

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

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

ユーザーパラメータ
図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モジュールの動作確認

 次に、「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 ←ユーザーパラメータで定義したもの
データ型
数値(整数)
乗数
使用しない
保存時の計算
差分

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

第5回へ
1/3

Index
ZABBIXで脱・人手頼りの統合監視
 最終回 一歩進んだ監視のカスタマイズ
Page 1
 ユーザーパラメータとは
  ユーザーパラメータを利用したApacheのアクセス数監視
Page 2
 nagiosプラグインを利用したMySQL監視
 設定のインクルードで設定管理を楽に
Page 3
 ユーザーパラメータ関連のトラブルシューティング
 ZABBIX 1.8の新機能
 終わりに


 Linux Squareフォーラム Linux/システム学習関連記事
連載:Windowsユーザーに教えるLinuxの常識(全12回)
Windowsのセオリーが通用しないLinux。Linux初心者向けに、LinuxというOSの考え方/常識をゼロから伝授!
連載:LFSで作って学ぶLinuxの仕組み(全4回)
管理者(root)は、何をしなければならないのか? 管理に際して検討すべきことは? 管理のための技術とは? など、駆け出し管理者のための考え方や方法論を検討する
連載:Linux管理者への道(全8回)
「Linux From Scratch」というシンプルなLinuxをインストール&環境構築する作業を通して、LinuxがOSとして機能するための仕組みや設定を見直そう
Linux Squareフォーラム全記事インデックス

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します

TechTargetジャパン

Linux Square フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ



- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH