このセクションでは、Zabbix エージェントによるパッシブチェックとアクティブチェックの詳細を説明します。
Zabbix は、Zabbix エージェントとの通信にJSON ベースの通信プロトコルを使用します。
Zabbix によって使用されるプロトコルの詳細には、次のようないくつかの定義が使用されます:
<HEADER> - "ZBXD\x01" (5 bytes)
<DATALEN> - data length (8 bytes). 1 will be formatted as 01/00/00/00/00/00/00/00 (eight bytes in HEX, 64 bit number)
(潜在的に)メモリを使い果たさないように、バージョン2.2.0 ~ 2.2.2でZabbix プロトコルを使用するとき、Zabbix サーバは1回の通信で64MBだけ受信するように制限されています(2.2.0以前は128MB、Zabbix 2.0.3以前は無制限でした)。
Zabbixの以前のバージョンとの互換性を維持するため、2.2.3以降では64MB が128MBへ戻されました。データ転送限界128MBのあるプロセスから限界64MBの別のプロセスへデータを送信する場合、受信側は、自身のサイズ限界を超えるデータは欠落します。
パッシブチェックは、単純なデータのリクエストです。Zabbix サーバまたはプロキシが、データ(例えば、CPU負荷)を問い合わせ、Zabbix エージェントがサーバに結果を返します。
サーバのリクエスト
エージェントの応答
例:
アクティブチェックでは、もっと複雑な処理を必要とします。エージェントは最初に、独立した処理でサーバからアイテムのリストを検索します。
アクティブチェックを行うサーバは、エージェントの設定ファイル内の「ServerActive」パラメータに記載されます。これらのチェックの問い合わせ頻度は、同じ設定ファイル内の「RefreshActiveChecks」パラメータによって設定されます。しかし、アクティブチェックのリフレッシュが失敗した場合は、ハードコードされた60秒後に再試行されます。それから、エージェントは新しい値を定期的にサーバに送信します。
エージェントのリクエスト
サーバの応答
{
"response":"success",
"data":[
{
"key":"log[\/home\/zabbix\/logs\/zabbix_agentd.log]",
"delay":"30",
"lastlogsize":"0"
},
{
"key":"agent.version",
"delay":"600"
}
]
}
サーバは成功で応答しなければなりません。返されたアイテムごとに、keyとdelayが存在しなければなりません。「ログ」タイプを持つアイテムには、lastlogsize も存在しなければなりません。
例:
アクティブチェックを使用する際、Zabbixサーバのトラッパーポートへアクセスは、(慎重に扱うべき)設定データを利用できるようになりますので、注意してください。これができるのは、誰もがアクティブエージェントに成りすまし、アイテム設定データをリクエストできるためです;認証は発生しません。
エージェントが以下を送信します。
<HEADER><DATALEN>{
"request":"agent data",
"data":[
{
"host":"<hostname>",
"key":"log[\/home\/zabbix\/logs\/zabbix_agentd.log]",
"value":" 13039:20090907:184546.759 zabbix_agentd started. ZABBIX 1.6.6 (revision {7836}).",
"lastlogsize":80,
"clock":1252926015
},
{
"host":"<hostname>",
"key":"agent.version",
"value":"1.6.6",
"clock":1252926015
}
],
"clock":1252926016
}
サーバの応答
<HEADER><DATALEN>{
"response":"success",
"info":"Processed 2 Failed 0 Total 2 Seconds spent 0.002070"
}
サーバ上でいくつかの値の送信に失敗した場合(例えば、ホストまたはアイテムが無効であるか削除されていた)、エージェントはこれらの値の送信を再試行しません。
例:
Zabbixは、 Base64にエンコードされたXMLのデータを16MBまで取得しますが、デコードされる値は1つが64KB以下でなければなりません。そうでないと、デコード中にそれが64KBに切り捨てられます。
本ページは2014/08/05時点の原文を基にしておりますので、内容は必ずしも最新のものとは限りません。
最新の情報は、英語版のZabbix2.2マニュアルを参照してください。