Sidebar

Zabbix Summit 2022
Register for Zabbix Summit 2022

3 パッシブおよびアクティブ エージェント チェック

概要

このセクションでは、Zabbix agentによって実行されるパッシブおよびアクティブ チェックの詳細について説明します。

Zabbix は、Zabbix エージェントとの通信に JSON ベースの通信プロトコルを使用します。

参照: Zabbix agent 2 プロトコルの詳細。

パッシブチェック

パッシブチェックは単純なデータリクエストです。 Zabbixサーバーまたはプロキシがデータ(CPU負荷など)を要求し、Zabbixエージェントがデータをサーバーに送り返します。

サーバーリクエスト

ヘッダーとデータ長の定義については、プロトコルの詳細を参照してください。

<item key>

エージェントの応答

<DATA>[\0<ERROR>]

上記の角括弧内の部分はオプションであり、サポートされていないアイテムに対してのみ送信されます。

サポートされているアイテムの場合:

  1. サーバーがTCP接続を開きます
  2. サーバーが<HEADER><DATALEN>agent.pingを送信します
  3. エージェントはリクエストを読み取り、<HEADER><DATALEN>1で応答します
  4. サーバーはデータを処理して値を取得します。今回の場合は"1"です。
  5. TCP接続が閉じられます

サポートされていないアイテムの場合:

  1. サーバーがTCP接続を開きます
  2. サーバーは<HEADER><DATALEN>vfs.fs.size[/nono]を送信します
  3. エージェントはリクエストを読み取り、次のレスポンスを返します。<HEADER><DATALEN>ZBX_NOTSUPPORTED\0Cannot obtain filesystem information: [2] No such file or directory
  4. サーバーはデータを処理し、アイテムの状態をサポートされていない状態に変更し、指定されたエラーメッセージを表示します
  5. TCP接続が閉じられます

アクティブチェック

アクティブチェックには、より複雑な処理が必要です。 エージェントは、最初にサーバーから独立した処理でアイテムのリストを取得します。

アクティブチェックを取得するサーバーは、エージェント構成ファイルの"ServerActive"パラメーターにリストされています。 これらのチェックを要求する頻度は、同じ構成ファイルの"RefreshActiveChecks"パラメーターによって設定されます。 ただしアクティブチェックの更新に失敗した場合は、ハードコードされた60秒後に再試行されます。

その後、エージェントは定期的に新しい値をサーバーに送信します。

エージェントがファイアウォールの背後にいる場合は、アクティブチェックのみを使用することを検討してください。そうすることで最初の着信接続を許可するためにファイアウォールを変更する必要がなくなります。

アイテムのリスト取得

エージェントリクエスト

アクティブ チェック要求は、エージェントによって処理されるアクティブ チェックを取得するために使用されます。 この要求は、開始時にエージェントによって送信され、その後 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": "success",
         "info": "processed: 2; failed: 0; total: 2; seconds spent: 0.003534"
       }
フィールド タイプ 必須
response string yes success | failed
info string yes アイテム処理結果

サーバーで一部の値の送信が失敗した場合(たとえば、ホストまたはアイテムが無効化または削除されたため)、エージェントはそれらの値の送信を再試行しません。

例:

  1. エージェントがTCP接続を開きます。
  2. エージェントが値のリストを送信します。
  3. サーバがそのデータを処理し、ステータスを返します。
  4. TCP接続を閉じます。

上記の例では、vfs.fs.size[/nono]がサポートされていないステータスであることを、"state"の値が1および"value"プロパティのエラーメッセージによって指摘されています。

エラーメッセージは、サーバー側で2048シンボルにトリミングされます。

古い XML プロトコル

Zabbixは、 Base64にエンコードされたXMLのデータを16MBまで取得しますが、デコードされる値は1つが64KB以下でなければなりません。そうでないと、デコード中にそれが64KBに切り捨てられます。