Zabbix 可以通过 HTTP 将监控项值和事件流式传输到外部系统(详见 协议详情)。
标签过滤器可用于流式传输监控项值或事件的子集。
Zabbix 有两个服务器进程负责数据流式传输:连接器管理器
和连接器工作进程
。Zabbix 的内部监控项 zabbix[connector_queue]
允许监控连接器队列中排队的值的数量。
要将数据流传输至外部系统,需要执行以下步骤:
1. 在远程系统上设置接收来自Zabbix的数据。 为此,提供以下工具:
events.ndjson
和history.ndjson
文件中。2. 通过调整zabbix_server.conf
中的{CODE_bfb91ab8}
参数,设置Zabbix中所需数量的连接器工作进程。 连接器工作进程的数量应与Zabbix前端配置的连接器数量相匹配(或超过,如果并发会话多于1)。 然后,重启Zabbix server。
3. 在Zabbix前端(管理 → 通用 → 连接器)中配置一个新的连接器,并使用zabbix_server -R config_cache_reload
命令重新加载服务器缓存。
必填字段以星号标记。
参数 | 描述 |
---|---|
Name | 输入连接器名称。 |
Data type | 选择要流传输的数据类型: 监控项值 - 将监控项值从Zabbix流传输至外部系统; 事件 - 将事件从Zabbix流传输至外部系统。 |
URL | 输入接收器URL。支持用户宏。 |
Tag filter | 仅导出匹配标签过滤器的监控项值或事件。如果不设置,则导出所有内容。 可以包含以及排除特定标签和标签值。可以设置多个条件。标签名称匹配始终区分大小写。 每个条件有几种可用的操作符: 存在 - 包含指定的标签名称; 等于 - 包含指定的标签名称和值(区分大小写); 包含 - 包含指定的标签名称,其中标签值包含输入的string(子字符串匹配,不区分大小写); 不存在 - 排除指定的标签名称; 不等于 - 排除指定的标签名称和值(区分大小写); 不包含 - 排除指定的标签名称,其中标签值包含输入的string(子字符串匹配,不区分大小写)。 条件有两种计算类型: And/Or - 必须满足所有条件,具有相同标签名称的条件将按Or条件分组; Or - 如果满足一个条件就足够。 |
Type of information | 选择要过滤监控项值的信息类型(数值(无符号)、数值(float)、字符等),该连接器应流传输。 如果数据类型设置为"监控项值",此字段可用。 |
HTTP authentication | 选择身份验证选项: 无 - 不使用身份验证; 基本 - 使用基本身份验证; NTLM - 使用NTLM(Windows NT LAN Manager)身份验证; Kerberos - 使用Kerberos身份验证(另见:Configuring Kerberos with Zabbix); 摘要 - 使用摘要身份验证; 持有者 - 使用持有者身份验证。 |
Username | 输入用户名(最多255个字符)。支持用户宏。 如果HTTP身份验证设置为"基本"、"NTLM"、"Kerberos"或"摘要",此字段可用。 |
Password | 输入用户密码(最多255个字符)。支持用户宏。 如果HTTP身份验证设置为"基本"、"NTLM"、"Kerberos"或"摘要",此字段可用。 |
Bearer token | 输入持有者令牌。支持用户宏。 如果HTTP身份验证设置为"持有者",此字段可用且必需。 |
Advanced configuration | 点击高级配置标签以显示高级配置选项(见下文)。 |
Max records per message | 指定可以在一条消息中流传输的最大值或事件数量。 |
Concurrent sessions | 选择为此连接器运行的发送进程数量。最多可以指定100个会话;默认值为"1"。 |
Attempts | 数据流传输尝试次数。最多可以指定5次尝试;默认值为"1"。 |
Attempt interval | 指定连接器在数据流传输不成功尝试后应等待的时间。最多可以指定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将触发重试。 |
Timeout | 指定消息超时时间(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将覆盖与proxy相关的环境变量,如 http_proxy 、HTTPS_PROXY 。如果没有指定,proxy将不会覆盖与proxy相关的环境变量。输入的值将直接传递,不进行合理性检查。您也可以输入SOCKSproxy地址。如果您指定了错误的协议,连接将失败,监控项将变得不受支持。 请注意,仅支持使用HTTP proxy进行简单身份验证。 |
SSL verify peer | 选中复选框以验证Web服务器的SSL证书。 服务器证书将自动从系统范围的证书颁发机构(CA)位置获取。您可以使用Zabbix server或proxy配置参数 {CODE_e5584ae0} 覆盖CA文件的位置。 |
SSL verify host | 选中复选框以验证Web服务器证书的通用名称字段或主题备用名称字段匹配。 这设置了 {CODE_7ae9a28c} cURL选项。 |
SSL certificate file | 用于客户端身份验证的SSL证书文件名称。证书文件必须为PEM1格式。支持用户宏。 如果证书文件还包含私钥,请留空SSL密钥文件字段。如果密钥已加密,请在SSL密钥密码字段中指定密码。此文件所在的目录由Zabbix server或proxy配置参数 {CODE_01ffa51e} 指定。 |
SSL key file | 用于客户端身份验证的SSL私钥文件名称。私钥文件必须为PEM1格式。支持用户宏。 此文件所在的目录由Zabbix server或proxy配置参数 {CODE_97ce463b} 指定。 |
SSL key password | SSL私钥文件密码。支持用户宏。 |
Description | 输入连接器描述。 |
Enabled | 选中复选框以启用连接器。 |
服务器与接收器之间的通信通过使用 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",而失败的请求则使用其他状态码。
成功示例:
带有错误的示例: