2 外部システムへのストリーミング

概要

Zabbix から外部システムにアイテムの値とイベントを HTTP 経由でストリーミングできます。 (プロトコルの詳細 を参照)

タグフィルターを使用すると、アイテムの値またはイベントのサブセットをストリーミングできます。

Zabbix サーバープロセスには、connector managerconnector worker の 2 つがあります。Zabbix 内部アイテム zabbix[connector_queue] を使用すると、コネクタキューにキューイングされている値の数を監視できます。

構成

外部システムへのデータ ストリーミングを構成するには、次の手順が必要です。

1. Zabbixからデータを受信するためのリモートシステムをセットアップします。 この目的のために、以下のツールが利用可能です。

  • 受信した情報を events.ndjson ファイルと history.ndjson ファイルに記録する単純な レシーバー の例
  • Zabbix サーバー用の Kafka コネクタ - Go で記述された軽量サーバーで、Zabbix サーバーから Kafka ブローカーにアイテムの値とイベントを転送するように設計されています。

2. zabbix_server.confStartConnectors パラメータを調整して、Zabbix で必要なコネクタワーカーの数を設定します。 コネクタ ワーカーの数は、Zabbix フロントエンドで構成されたコネクタ数と一致する必要があります (同時セッションが 1 を超える場合はそれを超える必要があります)。 その後、Zabbix サーバーを再起動します。 3. Zabbix フロントエンド (管理全般コネクタ) で新しいコネクタを設定し、zabbix_server -R config_cache_reload コマンドでサーバー キャッシュをリロードします。

必須フィールドにはアスタリスクがマークされています。

パラメータ 説明
名前 コネクタ名を入力します。
データ タイプ ストリーミングするデータ タイプを選択します。
アイテム値 - Zabbix から外部システムにアイテム値をストリーミングします。
イベント - Zabbix から外部システムにイベントをストリーミングします。
URL 受信者のURLを入力します。ユーザーマクロがサポートされています。
タグフィルター タグフィルターに一致するアイテムの値またはイベントのみをエクスポートします。設定されていない場合は、すべてをエクスポートします。
特定のタグとタグ値を含めることも除外することもできます。複数の条件を設定できます。タグ名の一致では常に大文字と小文字が区別されます。

各条件には、いくつかの演算子を使用できます。
Exists - 指定されたタグ名を含めます。
Equals - 指定されたタグ名と値を含めます (大文字と小文字が区別されます)
Contains - 入力した文字列がタグ値に含まれる、指定されたタグ名を含めます (部分文字列一致、大文字と小文字は区別されません)。
Does not exist - 指定されたタグ名を除外します。
Does not equal - 指定されたタグ名と値を除外します (大文字と小文字が区別されます)
Does not containい - 入力した文字列がタグ値に含まれる、指定されたタグ名を除外します (部分文字列一致、大文字と小文字は区別されません)。

条件には 2 つの計算タイプがあります。
And/Or - すべての条件を満たす必要があります。同じタグ名を持つ条件は、または条件によってグループ化されます。
Or - 1 つの条件が満たされれば十分です。
情報の種類 コネクタがストリーミングするアイテム値をフィルター処理する情報の種類 (数値 (符号なし)、数値 (浮動小数点数)、文字など) を選択します。
このフィールドは、データ型 が「アイテム値」に設定されている場合に使用できます。
HTTP 認証 認証オプションを選択します:
なし - 認証は使用されません。
基本 - 基本認証が使用されます。
NTLM - NTLM (Windows NT LAN Manager) 認証が使用されます。
Kerberos - Kerberos 認証が使用されます (Zabbix での Kerberos の設定 も参照)
ダイジェスト - ダイジェスト認証が使用されます。
ベアラー - ベアラー認証が使用されます。
ユーザー名 ユーザー名を入力します(最大255文字)。ユーザーマクロがサポートされています。
このフィールドは、HTTP認証が"基本"、"NTLM"、"Kerberos"、または"ダイジェスト"に設定されている場合に使用できます。
パスワード ユーザーパスワード(最大255文字)を入力します。ユーザーマクロがサポートされています。
このフィールドは、HTTP認証が"基本"、"NTLM"、"Kerberos"、または"ダイジェスト"に設定されている場合に使用できます。
ベアラートークン ベアラートークンを入力します。ユーザーマクロがサポートされています。
このフィールドは、HTTP認証が"ベアラー"に設定されている場合に使用可能で必須です。
詳細設定 詳細設定ラベルをクリックすると、詳細設定オプションが表示されます (下記参照)
メッセージあたりの最大レコード数 1 つのメッセージ内でストリーミングできる値またはイベントの最大数を指定します。
同時セッション数 このコネクタで実行する送信プロセスの数を選択します。最大100セッションまで指定できます。デフォルト値は"1"です。
試行回数 ストリーミングデータの試行回数。最大5回まで指定できます。デフォルト値は"1"です。
試行間隔 データのストリーミング試行が失敗した後にコネクタが待機する時間を指定します。最大 10 秒まで指定できます。デフォルト値は「5 秒」です。
このフィールドは、試行回数が「2」以上に設定されている場合に使用できます。
失敗した試行とは、接続を確立できなかった場合、または HTTP 応答コードが 200、201、202、203、204 でない場合です。再試行は、通信エラーが発生した場合、または HTTP 応答コードが 200、201、202、203、204、400、401、403、404、405、415、422 でない場合、トリガーされます。リダイレクトに従うため、302 -> 200 は肯定応答です。一方、302 -> 503 の場合は再試行がトリガーされます。
タイムアウト メッセージのタイムアウト時間を指定します(1~60秒、デフォルトは5秒)
時間接尾辞(例:30秒、1分)がサポートされています。ユーザーマクロもサポートされています。
HTTP プロキシ 使用する HTTP プロキシを次の形式で指定できます:
[protocol://][username[:password]@]proxy.example.com[:port]
ユーザーマクロがサポートされています。

オプションの protocol:// プレフィックスを使用して、代替プロキシプロトコルを指定できます (プロトコルプレフィックスのサポートは cURL 7.21.7 で追加されました)。プロトコルを指定しない場合、プロキシは HTTP プロキシとして扱われます。デフォルトでは、1080 ポートが使用されます。

HTTP プロキシ が指定されている場合、プロキシは http_proxyHTTPS_PROXY などのプロキシ関連の環境変数を上書きします。指定されていない場合、プロキシはプロキシ関連の環境変数を上書きしません。入力された値はそのまま渡され、妥当性チェックは行われません。
SOCKS プロキシアドレスを入力することもできます。間違ったプロトコルを指定すると、接続は失敗し、アイテムはサポートされなくなります。

HTTP プロキシでは単純な認証のみがサポートされることに注意してください。
SSL ピア検証 WebサーバーのSSL証明書を検証するには、チェックボックスをオンにしてください。
サーバー証明書は、システム全体の証明機関(CA)の場所から自動的に取得されます。CAファイルの場所は、Zabbixサーバーまたはプロキシの設定パラメータ SSLCALocation を使用して上書きできます。
SSL ホスト検証 Web サーバー証明書の 共通名 フィールドまたは サブジェクト代替名 フィールドが一致することを確認するには、チェックボックスをオンにします。
これにより、CURLOPT_SSL_VERIFYHOST cURL オプションが設定されます。
SSL証明書ファイル クライアント認証に使用するSSL証明書ファイルの名前。証明書ファイルはPEM1形式である必要があります。ユーザーマクロがサポートされています。
証明書ファイルに秘密鍵も含まれている場合は、SSL鍵ファイルフィールドを空のままにしてください。鍵が暗号化されている場合は、SSL鍵パスワードフィールドにパスワードを入力してください。このファイルが格納されているディレクトリは、Zabbixサーバーまたはプロキシの設定パラメータSSLCertLocationで指定されます。
SSLキーファイル クライアント認証に使用するSSL秘密鍵ファイルの名前。秘密鍵ファイルはPEM1形式である必要があります。ユーザーマクロがサポートされています。
このファイルを含むディレクトリは、Zabbixサーバーまたはプロキシの設定パラメータSSLKeyLocationで指定されます。
SSLキーパスワード SSL秘密鍵ファイルのパスワード。ユーザーマクロがサポートされています。
説明 コネクタの説明を入力します。
有効 コネクタを有効にするには、チェックボックスをオンにします。

プロトコル

サーバーと受信側間の通信は、REST API、NDJSON、"Content-Type: application/x-ndjson" を使用して HTTP 経由で行われます。

詳細については、改行区切りの JSON エクスポート プロトコル を参照してください。

サーバーリクエスト

ストリーミングアイテムの値の例:

POST /v1/history HTTP/1.1
       Host: localhost:8080
       Accept: */*
       Accept-Encoding: deflate, gzip, br, zstd
       Content-Length: 628
       Content-Type: application/x-ndjson
        
       {"host":{"host":"Zabbix server","name":"Zabbix server"},"groups":["Zabbix servers"],"item_tags":[{"tag":"foo","value":"test"}],"itemid":44457,"name":"foo","clock":1673454303,"ns":800155804,"value":0,"type":3}
       {"host":{"host":"Zabbix server","name":"Zabbix server"},"groups":["Zabbix servers"],"item_tags":[{"tag":"foo","value":"test"}],"itemid":44457,"name":"foo","clock":1673454303,"ns":832290669,"value":1,"type":3}
       {"host":{"host":"Zabbix server","name":"Zabbix server"},"groups":["Zabbix servers"],"item_tags":[{"tag":"bar","value":"test"}],"itemid":44458,"name":"bar","clock":1673454303,"ns":867770366,"value":123,"type":3}

Example of streaming events:

POST /v1/events HTTP/1.1
       Host: localhost:8080
       Accept: */*
       Accept-Encoding: deflate, gzip, br, zstd
       Content-Length: 333
       Content-Type: application/x-ndjson
        
       {"clock":1673454303,"ns":800155804,"value":1,"eventid":5,"name":"trigger for foo being 0","severity":0,"hosts":[{"host":"Zabbix server","name":"Zabbix server"}],"groups":["Zabbix servers"],"tags":[{"tag":"foo_trig","value":"test"},{"tag":"foo","value":"test"}]}
       {"clock":1673454303,"ns":832290669,"value":0,"eventid":6,"p_eventid":5}
受信側レスポンス

レスポンスは、HTTP レスポンスステータスコードと JSON ペイロードで構成されます。HTTP レスポンスステータスコードは、正常に処理されたリクエストの場合は"200"、"201"、"202"、"203"、または"204"のいずれか、失敗したリクエストの場合はそれ以外の値になります。

成功例:

localhost:8080/v1/history": HTTP/1.1 200 OK
       Date: Wed, 11 Jan 2023 16:40:30 GMT
       Content-Length: 0

Example with errors:

localhost:8080/v1/history": HTTP/1.1 422 Unprocessable Entity
       Content-Type: application/json
       Date: Wed, 11 Jan 2023 17:07:36 GMT
       Content-Length: 55
        
       {"error":"invalid character '{' after top-level value"}