4 Zabbixエージェント2プラグインプロトコル
Zabbixエージェント2プロトコルはコード、サイズ、データ モデルに基づいています。
コード
| Type | Size | Comments |
|---|---|---|
| Byte | 4 | ペイロードのタイプ。現在はJSONのみがサポートされています。 |
サイズ
| Type | Size | Comments |
|---|---|---|
| Byte | 4 | 現在のペイロードのサイズ(バイト単位)。 |
ペイロードデータ
| Type | Size | Comments |
|---|---|---|
| Byte | Size フィールドで定義 | JSON形式のデータ。 |
ペイロードデータの定義
共通データ
これらのパラメータは、すべてのリクエスト/レスポンスに含まれます。
| Name | Type | Comments |
|---|---|---|
| id | uint32 | リクエストの場合 - リクエストとレスポンスを関連付けるために使用される、増加していく識別子です。リクエストの方向ごと(つまり、エージェントからプラグイン、またはプラグインからエージェント)に一意です。 レスポンスの場合 - 対応するリクエストのIDです。 |
| type | uint32 | リクエストのタイプです。 |
ログリクエスト
プラグインがログメッセージをエージェントのログファイルに書き込むために送信するリクエストです。
| direction | plugin → agent |
| response | no |
ログリクエスト固有のパラメータ:
| Name | Type | Comments |
|---|---|---|
| severity | uint32 | メッセージの重要度(ログレベル)。 |
| message | string | ログに記録するメッセージ。 |
例:
{"id":0,"type":1,"severity":3,"message":"message"}
登録リクエスト
プラグインを登録するために、提供されるメトリクスを取得する目的で、エージェントの起動フェーズ中にエージェントから送信されるリクエストです。
| direction | エージェント → plugin |
| response | yes |
登録リクエスト固有のパラメータ:
| Name | Type | Comments |
|---|---|---|
| version | string | プロトコルバージョン <major>.<minor> |
例:
{"id":1,"type":2,"version":"1.0"}
Register応答
registerリクエストに対するプラグインの応答です。
| direction | plugin → エージェント |
| response | n/a |
register応答固有のパラメータ:
| Name | Type | Comments |
|---|---|---|
| name | string | プラグイン名。 |
| metrics | array of strings (optional) | プラグインで使用される、説明付きのメトリクスです。RegisterMetrics() を返します。エラーが返された場合は存在しません。 |
| interfaces | uint32 (optional) | プラグインがサポートするインターフェースのビットマスクです。エラーが返された場合は存在しません。 |
| error | string (optional) | プラグインを起動できない場合に返されるエラーメッセージです。メトリクスが返された場合は存在しません。 |
例:
{"id":2,"type":3,"metrics":["external.test", "External exporter Test."], "interfaces": 4}
または
{"id":2,"type":3,"error":"error message"}
Startリクエスト
RunnerインターフェースのStart関数を実行するためのリクエストです。
| direction | エージェント → plugin |
| response | no |
このリクエストには固有のパラメータはなく、共通データのパラメータのみが含まれます。
例:
{"id":3,"type":4}
終了リクエスト
プラグインをシャットダウンするためにエージェントから送信されるリクエストです。
| direction | エージェント → plugin |
| response | no |
このリクエストには固有のパラメータはなく、共通データ パラメータのみが含まれます。
例:
{"id":3,"type":5}
エクスポートリクエスト
ExporterインターフェースのExport関数を実行するためのリクエスト。
| direction | エージェント → plugin |
| response | no |
エクスポートリクエスト固有のパラメータ:
| Name | Type | Comments |
|---|---|---|
| key | string | プラグインキー。 |
| parameters | array of strings (optional) | Export関数のパラメータ。 |
例:
{"id":4,"type":6,"key":"test.key","parameters":["foo","bar"]}
エクスポート応答
ExporterインターフェースのExport関数からの応答。
| direction | プラグイン → エージェント |
| response | 該当なし |
エクスポート応答固有のパラメータ:
| Name | Type | Comments |
|---|---|---|
| value | string (optional) | Export関数からの応答値。エラーが返された場合は存在しません。 |
| error | string (optional) | Export関数が正常に実行されなかった場合のエラーメッセージ。valueが返された場合は存在しません。 |
例:
{"id":5,"type":7,"value":"response"}
または
{"id":5,"type":7,"error":"error message"}
リクエストの設定
Configurator インターフェースの Configure 機能を実行するためのリクエストです。
| direction | エージェント → plugin |
| response | n/a |
Configure リクエスト固有のパラメータ:
| Name | Type | Comments |
|---|---|---|
| global_options | JSON object | グローバルなエージェント設定オプションを含むJSONオブジェクト。 |
| private_options | JSON object (optional) | 指定されている場合、プライベートなプラグイン設定オプションを含むJSONオブジェクト。 |
例:
{"id":6,"type":8,"global_options":{...},"private_options":{...}}
リクエストの検証
Configurator インターフェースの Validate 関数を実行するためのリクエスト。
| direction | エージェント → plugin |
| response | yes |
Validate リクエスト固有のパラメータ:
| Name | Type | Comments |
|---|---|---|
| private_options | JSON object (optional) | 提供されている場合、プライベートなプラグイン設定オプションを含むJSONオブジェクト。 |
例:
{"id":7,"type":9,"private_options":{...}}
レスポンスの検証
Configurator インターフェースの Validate 関数からのレスポンス。
| direction | plugin → エージェント |
| response | n/a |
Validate レスポンス固有のパラメータ:
| Name | Type | Comments |
|---|---|---|
| error | string (optional) | Validate 関数が正常に実行されなかった場合に返されるエラーメッセージです。正常に実行された場合は存在しません。 |
例:
{"id":8,"type":10}
または
{"id":8,"type":10,"error":"error message"}