2 外部システムへのストリーミング
概要
Zabbixから外部システムへ、HTTP経由でアイテムの値やイベントをストリーミングできます(プロトコルの詳細を参照)。
タグフィルターを使用すると、アイテムの値やイベントのサブセットをストリーミングできます。
データストリーミングを担当するZabbixサーバーのプロセスタイプは、connector managerとconnector workerの2つです。
Zabbix内部アイテムzabbix[connector_queue]を使用すると、コネクターキューに登録された値の数を監視できます。
設定
外部システムへのデータストリーミングを設定するには、次の手順が必要です。
1. Zabbixからデータを受信するリモートシステムを用意します。 この目的のために、次のツールを利用できます。
- 受信した情報を
events.ndjsonおよびhistory.ndjsonファイルに記録する、シンプルなreceiverの例。 - Zabbixサーバー用Kafkaコネクター - ZabbixサーバーからKafkaブローカーへアイテムの値とイベントを転送するよう設計された、Goで記述された軽量サーバー。
2. zabbix_server.confのStartConnectorsパラメータを調整して、Zabbixで必要な数のコネクターワーカーを設定します。
コネクターワーカーの数は、ZabbixのWebインターフェースで設定したコネクター数と一致させる必要があります(同時セッション数が1より多い場合は、それ以上にします)。
その後、Zabbixサーバーを再起動します。
3. ZabbixのWebインターフェース(管理 > 一般設定 > コネクター)で新しいコネクターを設定し、zabbix_server -R config_cache_reloadコマンドでサーバーキャッシュを再読み込みします。

必須フィールドにはアスタリスクが付いています。
| パラメータ | 説明 |
|---|---|
| 名前 | コネクター名を入力します。 |
| データ型 | ストリーミングするデータ型を選択します。 アイテムの値 - Zabbixから外部システムへアイテムの値をストリーミングします。 イベント - Zabbixから外部システムへイベントをストリーミングします。 |
| URL | 受信側のURLを入力します。ユーザーマクロを使用できます。 |
| タグフィルター | タグフィルターに一致するアイテムの値またはイベントのみをエクスポートします。設定しない場合は、すべてをエクスポートします。 特定のタグおよびタグの値を含めたり除外したりできます。複数の条件を設定できます。タグ名の照合では常に大文字と小文字が区別されます。 各条件では、次の演算子を使用できます。 存在する - 指定したタグ名を含めます。 等しい - 指定したタグ名と値を含めます(大文字と小文字を区別)。 含む - タグの値に入力した文字列が含まれる、指定したタグ名を含めます(部分文字列の照合、大文字と小文字を区別しない)。 存在しない - 指定したタグ名を除外します。 等しくない - 指定したタグ名と値を除外します(大文字と小文字を区別)。 含まない - タグの値に入力した文字列が含まれる、指定したタグ名を除外します(部分文字列の照合、大文字と小文字を区別しない)。 条件には2種類の計算タイプがあります。 And/Or - すべての条件を満たす必要があります。同じタグ名を持つ条件はOr条件でグループ化されます。 Or - いずれか1つの条件を満たせば十分です。 |
| 情報のタイプ | コネクターがストリーミングするアイテムの値をフィルターする情報のタイプ(数値(整数)、数値(浮動小数)、文字など)を選択します。 データ型で「アイテムの値」を選択した場合に使用できます。 |
| HTTP認証 | 認証オプションを選択します。 なし - 認証を使用しません。 Basic - Basic認証を使用します。 NTLM - NTLM(Windows NT LAN Manager)認証を使用します。 Kerberos - Kerberos認証を使用します(ZabbixでのKerberosの設定も参照)。 Digest - Digest認証を使用します。 Bearer - Bearer認証を使用します。 |
| ユーザー名 | ユーザー名を入力します(最大255文字)。ユーザーマクロを使用できます。 HTTP認証で「Basic」、「NTLM」、「Kerberos」、または「Digest」を選択した場合に使用できます。 |
| パスワード | ユーザーパスワードを入力します(最大255文字)。ユーザーマクロを使用できます。 HTTP認証で「Basic」、「NTLM」、「Kerberos」、または「Digest」を選択した場合に使用できます。 |
| Bearerトークン | Bearerトークンを入力します。ユーザーマクロを使用できます。 HTTP認証で「Bearer」を選択した場合に使用でき、必須です。 |
| 詳細設定 | 詳細設定の見出しをクリックすると、詳細設定オプションが表示されます(以下を参照)。 |
| メッセージあたりの最大レコード数 | 1つのメッセージ内でストリーミングできる値またはイベントの最大数を指定します。 |
| 同時セッション数 | このコネクターで実行する送信プロセスの数を選択します。最大100セッションまで指定できます。デフォルト値は「1」です。 |
| 試行回数 | データストリーミングの試行回数です。最大5回まで指定できます。デフォルト値は「1」です。 |
| 試行間隔 | データストリーミングに失敗した試行の後、コネクターが待機する時間を指定します。最大10秒まで指定できます。デフォルト値は「5s」です。 試行回数を「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秒)。 時間のサフィックスを使用できます(例: 30s、1m)。ユーザーマクロを使用できます。 |
| HTTPプロキシ | 次の形式で使用するHTTPプロキシを指定できます。[protocol://][username[:password]@]proxy.example.com[:port]ユーザーマクロを使用できます。 オプションの protocol://プレフィックスを使用して、代替プロキシプロトコルを指定できます(プロトコルプレフィックスのサポートはcURL 7.21.7で追加されました)。プロトコルを指定しない場合、プロキシはHTTPプロキシとして扱われます。デフォルトではポート1080が使用されます。HTTPプロキシを指定すると、プロキシは http_proxyやHTTPS_PROXYなどのプロキシ関連環境変数を上書きします。指定しない場合、プロキシはプロキシ関連環境変数を上書きしません。入力した値はそのまま渡され、妥当性の確認は行われません。SOCKSプロキシのアドレスも入力できます。プロトコルを誤って指定すると、コネクターはZabbixからアイテムの値またはイベントをストリーミングできません。 HTTPプロキシでは、単純な認証のみがサポートされることに注意してください。 |
| SSLピアの検証 | WebサーバーのSSL証明書を検証するには、チェックボックスを選択します。 サーバー証明書は、システム全体のCAの場所にある信頼された認証局(CA)証明書に対して検証されます。CAファイルの場所は、Zabbixサーバーまたはプロキシの設定パラメータ SSLCALocationで上書きできます。 |
| SSLホストの検証 | Webサーバー証明書のCommon NameフィールドまたはSubject Alternate Nameフィールドが一致することを検証するには、チェックボックスを選択します。 これにより、cURLオプション CURLOPT_SSL_VERIFYHOSTが設定されます。 |
| SSL証明書ファイル | クライアント認証に使用するSSL証明書ファイルの名前です。証明書ファイルはPEM1形式である必要があります。ユーザーマクロを使用できます。 証明書ファイルに秘密鍵も含まれている場合は、SSL鍵ファイルフィールドを空のままにします。鍵が暗号化されている場合は、SSL鍵のパスワードフィールドにパスワードを指定します。このファイルを含むディレクトリは、Zabbixサーバーまたはプロキシの設定パラメータ SSLCertLocationで指定します。 |
| SSL鍵ファイル | クライアント認証に使用するSSL秘密鍵ファイルの名前です。秘密鍵ファイルはPEM1形式である必要があります。ユーザーマクロを使用できます。 このファイルを含むディレクトリは、Zabbixサーバーまたはプロキシの設定パラメータ SSLKeyLocationで指定します。 |
| SSL鍵のパスワード | SSL秘密鍵ファイルのパスワードです。ユーザーマクロを使用できます。 |
| 説明 | コネクターの説明を入力します。 |
| 有効 | コネクターを有効にするには、チェックボックスを選択します。 |
Kafkaコネクターを、ブートストラップブローカーのアドレスをカンマ区切りで指定して設定した場合(例:Kafka.URL=kafka1.example.com:9093,kafka2.example.com:9093)、Kafkaクライアントは最初に応答したブローカーに接続し、そのクラスターメタデータを使用します。
リストに異なるKafkaクラスターのアドレスが含まれている場合、最も速く応答したクラスターのみが使用され、その他のアドレスは利用不可としてログに記録されます。その結果、コネクターが接続されている場合でも、次のような起動時の警告が表示されることがあります。
kafka cluster connected, but broker(s) "kafka1.example.com:9093, kafka2.example.com:9093" unavailable; will retry on message send if active brokers fail
一部の環境(プライベートネットワーク、コンテナーネットワーク、または標準以外のDNS/hosts設定)では、ホスト名またはIPアドレスがループバックアドレス(例:127.0.0.1/localhost)に解決されたり、クライアントによって正規化されたりすることがあります。そのため、このような警告が誤解を招く場合があります。
混乱を避けるには、すべてのKafka.URLアドレスが同じKafkaクラスターに属していることを確認し、コネクターのホストからのDNS解決とブローカーのadvertised.listenersを確認してください。また、ブローカーのadvertisedアドレスに解決されるアドレスを使用することを推奨します。
プロトコル
サーバーとレシーバー間の通信は、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}
ストリーミングイベントの例:
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" である必要があります。失敗したリクエストでは、それ以外のコードになります。
成功時の例:
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
Date: Tue, 21 Apr 2026 10:13:04 GMT
Content-Length: 23
{"response":"success"}
エラー時の例:
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
X-Content-Type-Options: nosniff
Date: Tue, 21 Apr 2026 12:15:01 GMT
Content-Length: 55
{"error":"invalid character '{' after top-level value"}