Zabbix Documentation 1.8

3.04.04.2 (current)In development:4.4 (devel)Unsupported:1.82.02.22.43.23.4

User Tools

Site Tools


Sidebar

jp:manual:cookbook

19 クックブック

1 一般的な手法

1.1 サーバの可用性の監視

サーバの可用性を監視する方法として、少なくとも以下の3つ(またはその組み合わせ)が考えられます。

  • ICMP ping(キー「icmpping」)
  • キー「status」
  • アクティブチェックだけを使用してホストの可用性を監視するトリガー関数nodata()

1.2 WinPopUpsによるアラートの送信

ZabbixをWindows上で実行している場合、WinPopUpsを使用すると、イベント発生後すぐに通知を受け取ることができます。メールベースのアラートメッセージと組み合わせると便利な方法です。WinPopUpsを有効にする詳細な手順については、https://sourceforge.net/forum/message.php?msg_id=2721722を参照してください。

2010/08/08 07:47

2 具体的なアプリケーションの監視

2.1 AS/400

IBM AS/400プラットフォームを監視するには、SNMPを使用します。
詳細については、http://publibb.boulder.ibm.com/Redbooks.nsf/RedbookAbstracts/sg244504.html?Openを参照してください。

2.2 MySQL

設定ファイルmisc/conf/zabbix_agentd.confには、MySQLの監視に使用できるパラメータのリストが記述されています。

### Set of parameter for monitoring MySQL server (v3.23.42 and later) 
### Change -u and add -p if required 
#UserParameter=mysql[ping],mysqladmin -uroot ping|grep alive|wc -l
#UserParameter=mysql[uptime],mysqladmin -uroot status|cut f2 -d”:”|cut -f1 -d”T” 
#UserParameter=mysql[threads],mysqladmin -uroot status|cut f3 -d”:”|cut -f1 -d”Q” 
#UserParameter=mysql[questions],mysqladmin -uroot status|cut f4 -d”:”|cut -f1 -d”S” 
#UserParameter=mysql[slowqueries],mysqladmin -uroot status|cut f5 -d”:”|cut -f1 -d”O” 
#UserParameter=mysql[qps],mysqladmin -uroot status|cut -f9 d”:” 
#UserParameter=version[mysql],mysql -V
2.2.1 mysql[ping]

MySQLが動作しているかどうかをチェック

結果: 0 - 停止 1 - 起動
2.2.2 mysql[uptime]

MySQLの動作時間(秒単位)

2.2.3 mysql[threads]

MySQLのスレッド数

2.2.4 mysql[questions]

処理済みクエリの数

2.2.5 mysql[slowqueries]

時間のかかるクエリの数

2.2.6 mysql[qps]

1秒あたりに処理するクエリの数

2.2.7 mysql[version]

MySQLのバージョンの例: mysql Ver 11.16 Distrib 3.23.49, for pc-linux-gnu (i686)

2.3 Mikrotikルータ

Mikrotikが提供するSNMPエージェントを使用します。詳細については、http://www.mikrotik.comを参照してください。

2.4 WIN32

Zabbixディストリビューションに付属する(コンパイル済み)Zabbix W32エージェントを使用します。

2.5 Novell

NovellのMRTG Extension Program for NetWare Server(MRTGEXT.NLM)エージェントを使用します。このエージェントは、Zabbixが使用するプロトコルと互換性があります。入手するには、http://forge.novell.com/modules/xfmod/project/?mrtgextを参照してください。

アイテムは、[タイプ]に[Zabbixエージェント]を指定し、MRTGEXTのマニュアルを参照してキーを指定する必要があります。

例:

UTIL1

1分間の平均CPU使用率

CONNMAX

ライセンスされている接続の最大数

VFKSys

ボリュームSysの空き容量(バイト単位)

このエージェントがサポートするパラメータの詳細なリストについては、エージェントに付属するreadme.txtを参照してください。

2.6 Tuxedo

UserParameterの定義でTuxedoコマンドラインユーティリティtmadminとqmadminを使用すると、サーバ/サービス/キューごとのパフォーマンスカウンタおよびTuxedoリソースの可用性を取得できます。

2.7 Informix

Informixの標準ユーティリティonstatを使用すると、Informixデータベースのほとんど全ての情報を監視できます。また、Informix SNMPエージェントが提供する情報を取得できます。

2.8 JMX

まずjmxを監視できるようにjvmを設定する必要があります。この操作が可能かどうかを調べるには、jdkに付属するSunのjconsoleユーティリティを、jvmが動作するマシンを指定して実行します。接続できれば、jvmを設定できます。

tomcat環境では、以下のjvmオプションを設定することでjvmを設定可能にできます。

  1. Dcom.sun.management.jmxremote \
  2. Dcom.sun.management.jmxremote.port=xxxxx \
  3. Dcom.sun.management.jmxremote.ssl=false \
  4. Dcom.sun.management.jmxremote.authenticate=true \
  5. Dcom.sun.management.jmxremote.password.file=/path/java/jre/lib/management/jmxremote. password“

ここでは、jmxサーバをポートXXXXXで実行すること、パスワード認証を使用すること、およびjmxremote.passwordファイルに保存されているパスワードを参照することを指示しています。詳細については、jconsoleに関するSunのドキュメントを参照してください。(よりセキュアな接続をさせるにはsslを有効にしたほうが良いと思われるでしょう。)

必要な設定が完了したら、jconsoleを実行して、現在公開されている情報を全て取得することができます。(正常に接続できることも確認できます。)jconsoleを使用すると、informationタブから特定のjmx属性を照会する際に必要な情報を取得することもできます。

tomcat環境では、jmx属性の値を取得する(またはjmxの動作を設定する)方法は2つあります。1つは、tomcatが提供するサーブレットを使用する方法です。(jbossについては不明)。もう1つはjmxコマンドラインツールを使用して正しい構文の要求を送信する方法です。

システムが使用するスレッドのピーク値を取得することを考えます。jconsoleでjmxオブジェクトを展開し、java.lang → Threadingを選択します。Threadingを選択した後、infoタブをクリックすると、mbeanの名前として「java.lang:type=Threading」と表示されていることを確認できます。

tomcat環境では、以下のコマンドを実行できます:

curl -s -u<jmxusername>:<jmxpassword> 'http://<tomcat_hostname>/manager/jmxproxy/?qry=java.lang:type=Threading'

ここで、jmxのユーザ名とパスワードは、前述のjvmオプションで指定したファイルで定義されているユーザ名とパスワードを使用します。qryに渡しているのはjconsoleで調べた文字列です。

このコマンドを実行すると、ここで指定したjmxキーで取得できる測定基準が全て出力されます。出力を解析して、必要な数値を取得します。

jmxインタフェースにhttp要求を渡すことができるサーブレットが存在しない環境では、以下のようなコマンドラインツールを使用します。

/<pathTo>/java -jar /<pathTo>/cmdline-jmxclient.jar <jmxusername>:<jmxpassword> <jvmhostname>:<jmxport> java.lang:type=Threading PeakThreadCount

コマンドラインクライアントとの違いは、必要な属性を具体的に指定する必要がある点です。属性を指定しない場合、Threadingの全ての属性のリストが出力されます。

この場合も、出力を解析して、必要な数値を取得します。

必要なデータを確実に取得できるようになったら、そのコマンドをzabbixのUserParameterに指定します。

UserParameter=jvm.maxthreads, /usr/bin/curl -s -u<jmxusername>:<jmxpassword> 'http://<tomcat_hostname>/manager/jmxproxy/?qry=java.lang:type=Threading' | /bin/awk '/^PeakThreadCount\:/ { gsub( /[^0123456789]/, "" ); print $1 }'

または

UserParameter=jvm.maxthreads, /<pathTo>/java -jar /<pathTo>/cmdline-jmxclient.jar <jmxusername>:<jmxhostname> <jvmhostname>:<jmxport> java.lang:type=Threading PeakThreadCount | <some filter to grab just the number you need - left as an exercise to the reader>

これで完了です。

javaコマンドラインクライアントを使用するよりも、http経由でサーブレットを使用するほうが、処理を起動して情報を取得する際の負荷は軽減されます。

コマンドラインjmxクライアントは、以下のURLから入手できます。http://crawler.archive.org/cmdline-jmxclient/

jvmを監視するためのjmxの設定については、以下のURLを参照してください。http://java.sun.com/j2se/1.5.0/docs...ment/agent.html

JMXの概要については、以下のURLを参照してください。http://java.sun.com/j2se/1.5.0/docs...verviewTOC.html

追加情報: 1.5 jvmはSNMPをサポートしていると考えられるので、選択肢はさらに増えます。
2010/08/08 07:52

3 統合

3.1 HP OpenView

OpenViewサーバにメッセージを送信するようにZabbixを設定するには、以下の手順を実行する必要があります:

ステップ1

新しいメディアの定義

必要な情報をOpenViewに送信するスクリプトを実行するメディアを定義します。

ステップ2

新しいユーザの定義

定義したユーザはメディアとリンクする必要があります。

ステップ3

アクションの設定

トリガーの全ての(または選択した)ステータス変更をユーザに送信するアクションを設定します。

ステップ4

メディアスクリプトの作成

このスクリプトのロジックは以下のとおりです。トリガーがONの場合、OpenViewコマンド opcmsg -id application=<application> msg_grp=<msg_grp> object=<object> msg_text=<text>を実行します。このコマンドが返す一意なメッセージIDは、別の場所、できればZabbixデータベースの新しいテーブルに保存する必要があります。トリガーがOFFの場合、データベースから取得したメッセージIDを引数としてopcmack <message id>を実行する必要があります。

opcmsgとopcmackの詳細については、OpenViewの公式マニュアルを参照してください。このメディアスクリプトはここには掲載しません。

2010/08/08 07:53