ユーザーパラメータの機能を使えば、ZABBIXからnagiosのプラグインを利用した監視を行うことも可能です。もし手元のシステムで、すでにnagiosを用いてサーバの監視を行っている場合はとても有効です。
nagiosは、オープンソースの統合監視ソフトとして古くから多くのユーザーに利用されており、日本語の情報も多く存在しています。また、プラグインを追加することで、監視機能を拡張させることができます。nagiosのプラグインは自作も可能なので、すでにnagiosでプラグインを作り込んで、多くのサーバを監視している方も多いのではないでしょうか?
nagiosのプラグインは、シェルより直接実行可能なバイナリとなっています。そのため、ユーザーパラメータでnagiosプラグインを登録すれば、nagiosで監視をしていたサーバに対し、容易に、zabbixで同等の監視を行うことができます。
では例として、/usr/localにnagiosプラグインがインストールされている場合を考え、MySQLの監視方法を説明してみましょう。
nagiosの標準のプラグインでは、MySQL監視用として以下の2つのプラグインが用意されています。
この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.