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

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

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

nagiosプラグインを利用したMySQL監視

 ユーザーパラメータの機能を使えば、ZABBIXからnagiosのプラグインを利用した監視を行うことも可能です。もし手元のシステムで、すでにnagiosを用いてサーバの監視を行っている場合はとても有効です。

 nagiosは、オープンソースの統合監視ソフトとして古くから多くのユーザーに利用されており、日本語の情報も多く存在しています。また、プラグインを追加することで、監視機能を拡張させることができます。nagiosのプラグインは自作も可能なので、すでにnagiosでプラグインを作り込んで、多くのサーバを監視している方も多いのではないでしょうか?

 nagiosのプラグインは、シェルより直接実行可能なバイナリとなっています。そのため、ユーザーパラメータでnagiosプラグインを登録すれば、nagiosで監視をしていたサーバに対し、容易に、zabbixで同等の監視を行うことができます。

 では例として、/usr/localにnagiosプラグインがインストールされている場合を考え、MySQLの監視方法を説明してみましょう。

 nagiosの標準のプラグインでは、MySQL監視用として以下の2つのプラグインが用意されています。

  • check_mysql
    特定のホストのMySQLの状態を確認するプラグインです。MySQLの健全性やパフォーマンスを監視できます。
  • check_mysql_query
    特定のホストで稼働しているMySQLにクエリを発行し、その結果を表示します。

 この2つを利用して、ZABBIXから監視を行ってみましょう。まず、それぞれのプラグインのパーミッションを確認します。

# ls -l /usr/local/nagios/libexec/check_mysql
-rwxr-xr-x 1 root root 82989 10月 28 02:32 /usr/local/nagios/libexec/check_mysql
# ls -l /usr/local/nagios/libexec/check_mysql_query
-rwxr-xr-x 1 root root 78789 10月 28 02:32 /usr/local/nagios/libexec/check_mysql_query          

 これを見ると、どちらのプラグインも一般ユーザーで実行できることが分かります。では、直接プラグインを実行して、正しく値が取得できることを確認しましょう。

 まずはcheck_mysqlを使って、ZABBIX用にデータベースの情報を取得します。

# /usr/local/nagios/libexec/check_mysql -d zabbix -H localhost -u root -p zabbix
Uptime: 43113  Threads: 22  Questions: 538109  Slow queries: 0  Opens: 418  Flush tables: 1  Open tables: 91  Queries per second avg: 12.481

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

check_mysql -d <DB名> -H <ホスト名> -u <MySQL接続ユーザー> -p <パスワード>


 ここでは例として、毎秒のクエリ数を監視します。awkを使って、目的の値のみが出力されるように調整します。

# /usr/local/nagios/libexec/check_mysql -d zabbix -H localhost -u root|awk '{print $22}'
13.821

 次にcheck_mysql_queryを利用して、ZABBIX用のデータベースから、取得不可アイテムの総数を取得するクエリを発行します。

# /usr/local/nagios/libexec/check_mysql_query -d zabbix -u root -d zabbix -q "select count(*) from items where status=3;"
QUERY OK: 'select count(*) from items where  status=3;' returned 18.000000

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

check_mysql_query -d <DB名> -u <MySQL接続ユーザー名> -p <パスワード> -q <発行するSQL>


 ここでもクエリの結果のみを取得できるよう、check_mysqlと同様に調整を掛けます。

# /usr/local/nagios/libexec/check_mysql_query -d zabbix -u root -d zabbix -q "select count(*) from items where status=3;"|cut -d "'" -f 3-|awk '{print $2}'
18.000000

 目的の値が取得できていることを確認できたら、ユーザーパラメータの登録を行います。

UserParameter=mysql-query_per_sec,/usr/local/nagios/libexec/check_mysql -d zabbix -H localhost -u root|awk '{print $22}'
UserParameter=mysql-query,/usr/local/nagios/libexec/check_mysql_query -d zabbix -u root -d zabbix -q "select count(*) from items where  status=3;"|cut -d "'" -f 3-|awk '{print $2}'

 ユーザーパラメータの登録が終わったら、ZABBIXエージェントの再起動を行います。

# service zabbix-agent restart

 ZABBIXエージェントの再起動を確認したら、zabbix_getコマンドを使って、ユーザーパラメータの設定が正しく行われているか確認しましょう。

# zabbix_get -slocalhost -kmysql-query_per_sec
13.914
# zabbix_get -slocalhost -kmysql-query
18.000000

 上記のように値が取得できれば、設定は完了です。あとはZABBIXのWebインターフェイスで、アイテムの設定を行いましょう。

項目 設定例
名前 MySQL query per second
タイプ ZABBIXエージェント
キー mysql-query_per_sec ←ユーザーパラメータで定義したもの
データ型 数値(浮動小数)
乗数 使用しない
保存時の計算 なし

項目 設定例
名前 number of not supported items
タイプ ZABBIXエージェント
キー mysql-query ←ユーザーパラメータで定義したもの
データ型 数値(浮動小数)
乗数 使用しない
保存時の計算 なし

 以上で監視設定は完了です。

 この記事では、「apachectlを使ったApacheの監視」と「nagiosプラグインを利用したMySQLの監視」という2つの方法を紹介しました。ユーザーパラメータを利用すれば、コマンドでステータスが取れるものであれば、どんなアプリケーションでも監視することができます。ぜひ、さまざまな監視に応用してみてください。

設定のインクルードで設定管理を楽に

 とはいえ、大量のユーザーパラメータを作成すると、設定の管理が煩雑になってきます。ZABBIXでは設定をインクルードすることにより、これを簡素化できます。

 例えば/etc/zabbix/conf.d以下に複数のユーザーパラメータの設定を置き、/etc/zabbix/zabbix_agentd.confに読み込ませることができます。これにより、アプリケーションごとにユーザーパラメータの設定をまとめ、それぞれインクルードさせることで管理性を向上できます。

 ユーザーパラメータが書かれた/etc/zabbix/conf.d/userparam.confファイルをインクルードするには、/etc/zabbix/zabbix_agentd.confに以下のように記述します。

Include=/etc/zabbix/zabbix_agentd.d/userparam.conf

 ZABBIXエージェントを再起動させれば、上記設定が有効になります。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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