このセクションでは、Zabbix agentによって実行されるパッシブおよびアクティブ チェックの詳細について説明します。
Zabbix は、Zabbix エージェントとの通信に JSON ベースの通信プロトコルを使用します。
参照: Zabbix agent 2 プロトコルの詳細。
パッシブチェックは単純なデータリクエストです。 Zabbixサーバーまたはプロキシがデータ(CPU負荷など)を要求し、Zabbixエージェントがデータをサーバーに送り返します。
サーバーリクエスト
ヘッダーとデータ長の定義については、プロトコルの詳細を参照してください。
エージェントの応答
上記の角括弧内の部分はオプションであり、サポートされていないアイテムに対してのみ送信されます。
サポートされているアイテムの場合:
サポートされていないアイテムの場合:
Zabbixサーバーまたはプロキシが、プレーンテキストプロトコルを使用する7.0より前のバージョンのエージェントと確実に連携できるように、旧プロトコルへのフェイルオーバーが実装されています。
再起動後、またはインターフェース設定の変更時に、JSONプロトコル(7.0以降)を使用したパッシブチェックが実行されます。 有効なJSONが応答として受信されない場合(エージェントが"ZBX_NOTSUPPORTED"を送信した場合)、Zabbixはインターフェースを旧プロトコルとしてキャッシュし、アイテムキーのみを送信してチェックを再試行します。
Zabbixサーバー/プロキシは1時間ごとにすべてのインターフェースで新プロトコルの使用を再度試み、必要に応じて旧プロトコルにフォールバックします。
アクティブチェックには、より複雑な処理が必要です。 エージェントは、最初にサーバーから独立した処理でアイテムのリストを取得します。
アクティブチェックを取得するサーバーは、エージェント構成ファイルの"ServerActive"パラメーターにリストされています。 これらのチェックを要求する頻度は、同じ構成ファイルの"RefreshActiveChecks"パラメーターによって設定されます。 ただしアクティブチェックの更新に失敗した場合は、ハードコードされた60秒後に再試行されます。
その後、エージェントは定期的に新しい値をサーバーに送信します。
エージェントがファイアウォールの背後にいる場合は、アクティブチェックのみを使用することを検討してください。そうすることで最初の着信接続を許可するためにファイアウォールを変更する必要がなくなります。
Zabbix 6.4 以降、エージェント(アクティブモード)は、サーバー/プロキシから2分ごと(デフォルト)に設定の完全なコピーを受信しなくなりました。 代わりに、ネットワークトラフィックとリソース使用量を削減するために、5秒ごと(デフォルト)に設定の増分同期が実行され、エージェントがまだ設定を受け取っていない場合、またはホスト設定、グローバルマクロ、またはグローバル正規表現に変更があった場合にのみ、サーバー/プロキシから設定の完全なコピーが提供されます。
エージェントは定期的に新しい値をサーバーに送信します。 エージェントが実行すべきリモートコマンドを受信した場合は、実行結果も送信されます。 アクティブエージェントでのリモートコマンド実行は、Zabbixエージェント 7.0以降でサポートされています。
エージェントがファイアウォールの内側にある場合は、アクティブチェックのみを使用することを検討してください。この場合、最初の受信接続を許可するためにファイアウォールを変更する必要はありません。
エージェントリクエスト
アクティブ チェック要求は、エージェントによって処理されるアクティブ チェックを取得するために使用されます。 この要求は、開始時にエージェントによって送信され、その後 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シンボルにトリミングされます。
エージェントが送信
ハートビートメッセージは、アクティブエージェントからZabbixサーバー/プロキシに、HeartbeatFrequency秒ごとに送信されます(Zabbixエージェント/ エージェント2設定ファイルで設定)
これは、アクティブチェックの可用性を監視するために使用されます。
{
"request": "active check heartbeat",
"host": "Zabbix server",
"heartbeat_freq": 60,
"version": "7.0.0",
"variant": 2
}
フィールド | タイプ | 必須 | 値 |
---|---|---|---|
request | string | yes | アクティブチェックハートビート |
host | string | yes | ホスト名 |
heartbeat_freq | number | yes | エージェントのハートビート頻度(HeartbeatFrequency 設定パラメータ) |
version | string | yes | エージェントのバージョン番号 |
variant | number | yes | エージェントのバリアント(1 - Zabbix エージェント、2 - Zabbix エージェント 2) |
リダイレクト応答
ホストが再割り当てされた場合、サーバーはエージェントに対し、ハートビート(および後続のアクティブチェック)を別のプロキシまたはサーバーインスタンスにリダイレクトするよう指示する場合があります。
フィールド | タイプ | 必須 | 値 | |
---|---|---|---|---|
response | string | yes | success | failed |
|
redirect | object | yes | リダイレクトの指示 | |
revision | number | yes | 設定リビジョン識別子 | |
address | string | yes | ターゲット サーバ/プロキシ アドレス |
Zabbixは、 Base64にエンコードされたXMLのデータを16MBまで取得しますが、デコードされる値は1つが64KB以下でなければなりません。そうでないと、デコード中にそれが64KBに切り捨てられます。