2 流式传输到外部系统
概述
可以通过 HTTP 将监控项值和事件从 Zabbix 流式传输到外部系统(请参见协议详情)。
标签过滤器可用于流式传输部分监控项值或事件。
Zabbix 中有两种服务器进程类型负责数据流传输:connector manager 和 connector worker。
Zabbix 内部监控项 zabbix[connector_queue] 可用于监控 connector 队列中已入队的值数量。
配置
需要执行以下步骤,才能配置向外部系统进行数据流式传输:
1. 准备一个用于接收来自 Zabbix 数据的远程系统。 为此,可以使用以下工具:
- 一个简单的 接收器 示例,可将接收到的信息记录在
events.ndjson和history.ndjson文件中。 - Zabbix 服务器的 Kafka 连接器 - 一个使用 Go 编写的轻量级服务器,用于将监控项值和事件从 Zabbix 服务器转发到 Kafka broker。
2. 在 Zabbix 中,通过调整 zabbix_server.conf 中的 StartConnectors 参数,设置所需的连接器工作进程数量。
连接器工作进程的数量应与 Zabbix 前端中配置的连接器数量相匹配(如果并发会话数大于 1,则应大于或等于该数量)。
然后,重启 Zabbix 服务器。
3. 在 Zabbix 前端中配置新的连接器(管理 > 常规 > *连接器),然后使用 zabbix_server -R config_cache_reload 命令重新加载服务器缓存。

必填字段以星号标记。
| 参数 | 描述 |
|---|---|
| 名称 | 输入连接器名称。 |
| 数据类型 | 选择要进行流式传输的数据类型: 监控项值 - 将监控项值从 Zabbix 流式传输到外部系统; 事件 - 将事件从 Zabbix 流式传输到外部系统。 |
| URL | 输入接收器 URL。支持用户宏。 |
| 标签过滤器 | 仅导出与标签过滤器匹配的监控项值或事件。如果未设置,则导出所有内容。 可以包含或排除特定的标签和标签值。可以设置多个条件。标签名称匹配始终区分大小写。 每个条件有以下运算符可用: 存在 - 包含指定的标签名称; 等于 - 包含指定的标签名称和值(区分大小写); 包含 - 包含指定的标签名称,且标签值包含输入的字符串(子字符串匹配,不区分大小写); 不存在 - 排除指定的标签名称; 不等于 - 排除指定的标签名称和值(区分大小写); 不包含 - 排除指定的标签名称,且标签值包含输入的字符串(子字符串匹配,不区分大小写)。 条件有两种计算类型: And/Or - 必须满足所有条件,具有相同标签名称的条件将通过 Or 条件进行分组; Or - 满足一个条件即可。 |
| 信息类型 | 选择用于筛选连接器应流式传输的监控项值的信息类型(无符号数值、浮点数值、字符等)。 当数据类型设置为“监控项值”时,此字段可用。 |
| HTTP 身份验证 | 选择身份验证选项: 无 - 不使用身份验证; Basic - 使用基本身份验证; NTLM - 使用 NTLM(Windows NT LAN Manager)身份验证; Kerberos - 使用 Kerberos 身份验证(另请参阅:配置 Kerberos 与 Zabbix); Digest - 使用 Digest 身份验证; Bearer - 使用 Bearer 身份验证。 |
| 用户名 | 输入用户名(最多 255 个字符)。支持用户宏。 当HTTP 身份验证设置为“Basic”、“NTLM”、“Kerberos”或“Digest”时,此字段可用。 |
| 密码 | 输入用户密码(最多 255 个字符)。支持用户宏。 当HTTP 身份验证设置为“Basic”、“NTLM”、“Kerberos”或“Digest”时,此字段可用。 |
| Bearer 令牌 | 输入 Bearer 令牌。支持用户宏。 当HTTP 身份验证设置为“Bearer”时,此字段可用且为必填项。 |
| 高级配置 | 单击高级配置标题以显示高级配置选项(见下文)。 |
| 每条消息的最大记录数 | 指定一条消息中可以流式传输的值或事件的最大数量。 |
| 并发会话 | 选择要为此连接器运行的发送进程数量。最多可指定 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 秒)。 支持时间后缀(例如 30s、1m)。支持用户宏。 |
| HTTP proxy | 可以按以下格式指定要使用的 HTTP proxy:[protocol://][username[:password]@]proxy.example.com[:port]支持用户宏。 可以使用可选的 protocol:// 前缀来指定备用 proxy 协议(协议前缀支持已在 cURL 7.21.7 中添加)。如果未指定协议,则将 proxy 视为 HTTP proxy。默认使用 1080 端口。如果指定了HTTP proxy,该 proxy 将覆盖 http_proxy、HTTPS_PROXY 等与 proxy 相关的环境变量。如果未指定,则 proxy 不会覆盖与 proxy 相关的环境变量。输入的值将按原样传递,不会进行合理性检查。也可以输入 SOCKS proxy 地址。如果指定了错误的协议,连接器将无法从 Zabbix 流式传输监控项值或事件。 请注意,HTTP proxy 仅支持简单身份验证。 |
| SSL 验证对等方 | 选中复选框以验证 Web 服务器的 SSL 证书。 服务器证书将自动从系统范围的证书颁发机构(CA)位置获取。可以使用 Zabbix 服务器或 proxy 配置参数 SSLCALocation 覆盖 CA 文件的位置。 |
| SSL 验证主机 | 选中复选框以验证 Web 服务器证书的通用名称字段或主题备用名称字段是否匹配。 这将设置 cURL 选项 CURLOPT_SSL_VERIFYHOST。 |
| SSL 证书文件 | 用于客户端身份验证的 SSL 证书文件名称。证书文件必须采用 PEM1 格式。支持用户宏。 如果证书文件还包含私钥,请将SSL 密钥文件字段留空。如果密钥已加密,请在SSL 密钥密码字段中指定密码。包含此文件的目录由 Zabbix 服务器或 proxy 配置参数 SSLCertLocation 指定。 |
| SSL 密钥文件 | 用于客户端身份验证的 SSL 私钥文件名称。私钥文件必须采用 PEM1 格式。支持用户宏。 包含此文件的目录由 Zabbix 服务器或 proxy 配置参数 SSLKeyLocation 指定。 |
| SSL 密钥密码 | SSL 私钥文件密码。支持用户宏。 |
| 描述 | 输入连接器描述。 |
| 启用 | 选中复选框以启用连接器。 |
当 Kafka 连接器配置为使用以逗号分隔的 bootstrap broker 地址列表时(例如 Kafka.URL=kafka1.example.com:9093,kafka2.example.com:9093),Kafka 客户端会连接到最先响应的 broker,并使用其集群元数据。
如果列表中包含来自不同 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 解析以及 broker 的 advertised.listeners,并优先使用可解析为 broker 广播地址的地址。
协议
服务器与接收器之间的通信通过使用 REST API 和 NDJSON(Newline-delimited JSON)格式的 HTTP 完成,内容类型为 "Content-Type: application/x-ndjson"。
有关更多详细信息,请参阅 Newline-delimited 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"}