このセクションでは、Zabbix agentによって実行されるパッシブおよびアクティブ チェックの詳細について説明します。
Zabbix は、Zabbix エージェントとの通信に JSON ベースの通信プロトコルを使用します。
参照: Zabbix agent 2 プロトコルの詳細。
パッシブチェックは単純なデータリクエストです。 Zabbixサーバーまたはプロキシがデータ(CPU負荷など)を要求し、Zabbixエージェントがデータをサーバーに送り返します。
サーバーリクエスト
ヘッダーとデータ長の定義については、プロトコルの詳細を参照してください。
エージェントの応答
上記の角括弧内の部分はオプションであり、サポートされていないアイテムに対してのみ送信されます。
サポートされているアイテムの場合:
サポートされていないアイテムの場合:
アクティブチェックには、より複雑な処理が必要です。 エージェントは、最初にサーバーから独立した処理でアイテムのリストを取得します。
アクティブチェックを取得するサーバーは、エージェント構成ファイルの"ServerActive"パラメーターにリストされています。 これらのチェックを要求する頻度は、同じ構成ファイルの"RefreshActiveChecks"パラメーターによって設定されます。 ただしアクティブチェックの更新に失敗した場合は、ハードコードされた60秒後に再試行されます。
その後、エージェントは定期的に新しい値をサーバーに送信します。
エージェントがファイアウォールの背後にいる場合は、アクティブチェックのみを使用することを検討してください。そうすることで最初の着信接続を許可するためにファイアウォールを変更する必要がなくなります。
In order to decrease network traffic and resources usage Zabbix server or Zabbix proxy will provide configuration only if Zabbix agent still hasn't received configuration or if something has changed in host configuration, global macros or global regular expressions.
The agent then periodically sends the new values to the server(s).
If an agent is behind the firewall you might consider using only Active checks because in this case you wouldn't need to modify the firewall to allow initial incoming connections.
エージェントリクエスト
アクティブ チェック要求は、エージェントによって処理されるアクティブ チェックを取得するために使用されます。 この要求は、開始時にエージェントによって送信され、その後 RefreshActiveChecks 間隔で送信されます。
{
"request": "active checks",
"host": "Zabbix server",
"host_metadata": "mysql,nginx",
"hostinterface": "zabbix.server.lan",
"ip": "159.168.1.1",
"port": 12050
}
フィールド | タイプ | 必須 | 値 |
---|---|---|---|
request | string | yes | active checks |
host | string | yes | ホスト名 |
host_metadata | string | no | 設定パラメーター HostMetadata または HostMetadataItem メトリック値 |
hostinterface | string | no | 設定パラメーター HostMetadata または HostMetadataItem メトリック値 |
ip | string | no | 設定パラメーターListenIPが設定されている場合は最初のIP |
port | number | no | 設定パラメーター ListenPort(設定されている場合)に設定されている値であり、デフォルトのエージェント・リスニング・ポートではありません。 |
サーバーレスポンス
アクティブ チェック応答は、アクティブ チェック要求を処理した後、サーバーによってエージェントに返されます。
{
"response": "success",
"data": [
{
"key": "log[/home/zabbix/logs/zabbix_agentd.log]",
"key_orig": "log[/home/zabbix/logs/zabbix_agentd.log]",
"itemid": 1234,
"delay": "30s",
"lastlogsize": 0,
"mtime": 0
},
{
"key": "agent.version",
"key_orig": "agent.version",
"itemid": 5678,
"delay": "10m",
"lastlogsize": 0,
"mtime": 0
}
]
}
フィールド | タイプ | 必須 | 値 | |
---|---|---|---|---|
response | string | yes | success | failed |
|
info | string | no | 失敗した場合のエラー情報 | |
data | array of objects | no | アクティブなチェック項目 | |
key | string | no | マクロが展開された項目キー | |
key_orig | string | no | 展開されたマクロのない項目キー | |
itemid | number | no | アイテムID | |
delay | string | no | アイテムの更新間隔 | |
lastlogsize | number | no | アイテムの最終ログサイズ | |
mtime | number | no | アイテムの最終修正日時 | |
refresh_unsupported | number | no | サポートされていないアイテムの更新間隔 | |
regexp | array of objects | no | グローバル正規表現項目 | |
name | string | no | グローバル正規表現名 | |
expression | string | no | グローバル正規表現 | |
expression_type | number | no | グローバル正規表現タイプ | |
exp_delimiter | string | no | グローバル正規表現区切り文字 | |
case_sensitive | number | no | グローバル正規表現の大文字と小文字の区別設定 |
サーバーは成功で応答する必要があります。
例: 1. エージェントがTCP接続を開きます 2. エージェントがチェックのリストを要求します 3. サーバーはアイテムのリスト(アイテムキー、遅延)で応答します 4. エージェントが応答を解析します 5. TCP接続が閉じられます 6. エージェントが定期的なデータ収集を開始します
アクティブチェックを使用する際、Zabbixサーバのトラッパーポートへアクセスは、(慎重に扱うべき)設定データを利用できるようになりますので、注意してください。これができるのは、誰もがアクティブエージェントに成りすまし、アイテム設定データをリクエストできるためです。暗号化オプションを使用しない限り、認証は行われません。
エージェント送信
エージェント データ リクエストには、収集されたアイテムの値が含まれます。
{
"request": "agent data",
"data": [
{
"host": "Zabbix server",
"key": "agent.version",
"value": "2.4.0",
"clock": 1400675595,
"ns": 76808644
},
{
"host": "Zabbix server",
"key": "log[/home/zabbix/logs/zabbix_agentd.log]",
"lastlogsize": 112,
"value": " 19845:20140621:141708.521 Starting Zabbix Agent [<hostname>]. Zabbix 2.4.0 (revision 50000).",
"clock": 1400675595,
"ns": 77053975
}
],
"session": "1234456akdsjhfoui"
}
フィールド | タイプ | 必須 | 値 | |
---|---|---|---|---|
request | string | yes | agent data |
|
session | string | yes | エージェントが開始されるたびに生成される固有のセッション ID | |
data | array of objects | yes | アイテム値 | |
id | number | yes | 値の識別子 (ネットワークの問題が発生した場合に、重複した値をチェックするために使用されるインクリメンタル カウンター)。 | |
host | string | yes | ホスト名 | |
key | string | yes | アイテムキー | |
value | string | no | アイテム値 | |
lastlogsize | number | no | アイテムの最終ログサイズ | |
mtime | number | no | アイテム最終更新日時 | |
state | number | no | アイテムステータス | |
source | string | no | 値のイベント ログ ソース。 | |
eventid | number | no | 値のイベント ログ ID | |
severity | number | no | 値のイベント ログ深刻度 | |
timestamp | number | no | 値のイベント ログタイムスタンプ | |
clock | number | yes | 値のタイムスタンプ (エポックからの秒数) | |
ns | number | yes | 値のタイムスタンプ (ナノ秒) |
各値には仮想IDが割り当てられます。 値IDは、1つのデータセッション(セッショントークンで識別される)内で一意の単純な昇順カウンターです。 このIDは、接続性の低い環境で送信される可能性のある重複値を破棄するために使用されます。
サーバー応答
エージェントデータ応答は、エージェントデータ要求を処理した後、サーバーによってエージェントに送り返されます。
フィールド | タイプ | 必須 | 値 |
---|---|---|---|
response | string | yes | success | failed |
info | string | yes | アイテム処理結果 |
サーバーで一部の値の送信が失敗した場合(たとえば、ホストまたはアイテムが無効化または削除されたため)、エージェントはそれらの値の送信を再試行しません。
例:
上記の例では、vfs.fs.size[/nono]がサポートされていないステータスであることを、"state"の値が1および"value"プロパティのエラーメッセージによって指摘されています。
エラーメッセージは、サーバー側で2048シンボルにトリミングされます。
The heartbeat message is sent by an active agent to Zabbix server/proxy every HeartbeatFrequency seconds (configured in the Zabbix agent configuration file).
It is used to monitor the availability of active checks.
Field | Type | Mandatory | Value |
---|---|---|---|
request | string | yes | active check heartbeat |
host | string | yes | The host name. |
heartbeat_freq | number | yes | The agent heartbeat frequency (HeartbeatFrequency configuration parameter). |
Zabbixは、 Base64にエンコードされたXMLのデータを16MBまで取得しますが、デコードされる値は1つが64KB以下でなければなりません。そうでないと、デコード中にそれが64KBに切り捨てられます。