使用 proxy 进行分布式监控
概述
Zabbix proxy 可用于构建高效且可靠的分布式监控环境。
proxy 部署在本地,用于收集性能和可用性数据。 然后将数据报告给集中式服务器。
Zabbix proxy 可用于:
- 监控远程位置
- 监控通信不可靠的位置
- 在监控数千台设备时减轻 Zabbix 服务器的负载
- 收集用于应用性能监控(APM)的遥测数据

proxy 只需要与 Zabbix 服务器建立一个 TCP 连接。 这样可以更轻松地绕过防火墙,因为您只需配置一条防火墙规则。
Zabbix proxy 必须使用独立的数据库。 将其指向 Zabbix 服务器数据库会破坏配置。
proxy 收集的所有数据都会先存储在本地,然后再传输到服务器。
这样,即使与服务器之间出现临时通信问题,也不会丢失数据。
proxy 配置文件中的 ProxyLocalBuffer 和 ProxyOfflineBuffer 参数控制数据在本地保留的时长。
proxy 直接从 Zabbix 服务器数据库接收最新配置更改,因此其配置可能比 Zabbix 服务器更新得更及时;而 Zabbix 服务器的配置更新速度可能受 CacheUpdateFrequency 值的影响。 因此,proxy 可能会开始收集数据并将其发送给 Zabbix 服务器,而 Zabbix 服务器会忽略这些数据。
Zabbix proxy 是数据收集器。 它不会计算触发器、处理事件或发送告警。 有关 proxy 支持的功能,请参阅下表:
| 功能 | proxy 支持 | |
|---|---|---|
| 监控项 | ||
| Zabbix agent 检查 | 是 | |
| Zabbix agent 检查(主动式) | 是 1 | |
| 简单检查 | 是 | |
| Trapper 监控项 | 是 | |
| SNMP 检查 | 是 | |
| SNMP 陷阱 | 是 | |
| IPMI 检查 | 是 | |
| JMX 检查 | 是 | |
| 日志文件监控 | 是 | |
| 内部检查 | 是 | |
| SSH 检查 | 是 | |
| Telnet 检查 | 是 | |
| 外部检查 | 是 | |
| 依赖监控项 | 是 | |
| 脚本监控项 | 是 | |
| 浏览器监控项 | 是 | |
| 遥测查询监控项 | 是 | |
| 内置 Web 监控 | 是 | |
| 监控项值预处理 | 是 | |
| 网络发现 | 是 | |
| 主动式 agent 自动注册 | 是 | |
| 低级别发现 | 是 2 | |
| 远程命令 | 是 | |
| 遥测数据收集(APM) | 是 3 | |
| 计算触发器 | 否 | |
| 处理事件 | 否 | |
| 事件关联 | 否 | |
| 发送告警 | 否 | |
[1] 要确保 agent 向 proxy(而不是服务器)请求主动式检查,必须在 agent 配置文件的 ServerActive 参数中列出该 proxy。
[2] 对于 LLD,Zabbix proxy 只收集和预处理数据,然后将其发送给 Zabbix 服务器进行进一步处理。
[3] 只有在 proxy 上启用 APM 时,才会收集遥测数据(请参阅proxy 配置中的 APM 选项卡);Zabbix 服务器无法接收遥测数据。
proxy 功能
在选择是否使用 proxy 时,需要考虑多个因素。
| Proxy | |
|---|---|
| 轻量级 | 是 |
| GUI | 否 |
| 独立运行 | 是 |
| 易于维护 | 是 |
| 自动创建数据库 | 是1 |
| 本地管理 | 否 |
| 适用于嵌入式硬件 | 是 |
| 单向 TCP 连接 | 是 |
| 集中式配置 | 是 |
| 生成通知 | 否 |
1 自动创建数据库功能仅适用于 SQLite。 其他受支持的数据库需要手动设置。
Zabbix proxy 不会感知维护周期;有关详细信息,请参见维护期间队列的计算。
防止过载
如果 Zabbix 服务器停机了一段时间,而 proxy 收集了大量数据,随后服务器启动,则服务器可能会过载(历史缓存使用率会在一段时间内保持在 95-100%)。 这种过载可能导致性能下降,使监控检查的处理速度低于正常水平。 为避免历史缓存过载引发的问题,Zabbix 实现了针对这种情况的保护机制。
当 Zabbix 服务器的历史缓存已满时,历史缓存写入访问会受到限制,从而导致服务器数据收集进程停滞。 最常见的历史缓存过载情况发生在服务器停机后,proxy 正在上传已收集的数据时。 为避免这种情况,Zabbix 增加了 proxy 限流机制(目前无法禁用)。
当历史缓存使用率达到 80% 时,Zabbix 服务器进入限流模式。 在限流模式下,服务器仅在历史缓存使用率低于 60% 时接受 proxy 数据,并轮流处理接受数据的 proxy。 当历史缓存使用率降至 20% 以下时,服务器切换回正常模式。
此外,当历史缓存使用率超过 60% 时,如果某个 proxy 的上传因上传限制而被截断,Zabbix 服务器可以在正常模式下延迟处理该 proxy。
此决定会在服务器评估 proxy 上传的瞬间执行,因此可能不会立即反映在历史缓存使用率图表中(内部监控项 zabbix[wcache,history,pused] 及其更新间隔可能会错过短暂的峰值)。
此限流模式将持续到以下任一情况发生:缓存使用率再次达到 80%、降至 20% 以下,或限流列表为空。 在第一种情况下,服务器将再次停止接受 proxy 数据。 在另外两种情况下,服务器将恢复正常运行,接受所有 proxy 的数据。
上述信息可通过下表说明:
| 历史写入缓存使用率 | Zabbix 服务器模式 | Zabbix 服务器操作 |
|---|---|---|
| 超过 60%(处于“正常”模式,直到达到 80%) | 正常 | 延迟处理上传批次因上传限制而被截断的 proxy;继续接受其他 proxy 的数据。 |
| 达到 80% | 等待 | 停止接受 proxy 数据,但保留限流列表(按优先级排列、稍后联系的 proxy 列表)。 |
| 降至 60% 以下(处于“等待”模式之后) | 限流 | 重新开始接受 proxy 数据,轮流处理限流列表中的 proxy。 |
| 降至 20% 以下(处于“限流”模式之后) | 正常 | 清除限流列表,并正常接受 proxy 数据。 |
您可以使用 zabbix[wcache,history,pused] 内部监控项,将 Zabbix 服务器的此行为与某项指标关联起来。
配置
在你已经安装并配置了 proxy 之后,就可以在 Zabbix 前端中对其进行配置了。
添加 proxy
您可以在 Zabbix Cloud 中部署 proxy,而不是在自己的基础设施上安装 proxy。 为此,请在管理 > Proxy 中点击在 Cloud 中创建 proxy;Zabbix Cloud 将在新的浏览器标签页中打开。 在那里创建 proxy 节点后,按照下文所述在 Zabbix 前端中配置 proxy。 有关更多信息,请参阅设置 Zabbix Cloud proxy。
要在 Zabbix 前端中配置 proxy:
- 转到管理 > Proxy。
- 点击创建 proxy。
- 在表单中输入 proxy 参数。

| 参数 | 描述 | |
|---|---|---|
| Proxy 名称 | 输入 proxy 名称。该名称必须与 proxy 配置文件中Hostname参数的名称相同。 | |
| Proxy 组 | 选择一个 proxy 组,用于 proxy 负载均衡/高可用。 | |
| 活动 agent 的地址 | 输入受监控的活动 agent 或发送方必须连接到的地址。仅支持 Zabbix 7.0 或更高版本的 agent。 此地址用于连接活动和被动 proxy。仅当在Proxy 组字段中选择了 proxy 组时,此字段才可用。 |
|
| 地址 | 用于连接的 IP 地址/DNS 名称。 | |
| 端口 | 用于连接的 TCP 端口号(默认为 10051)。支持用户宏。 | |
| Proxy 模式 | 选择 proxy 模式。 活动 - proxy 将连接到 Zabbix 服务器并请求配置数据 被动 - Zabbix 服务器连接到 proxy 请注意,在使用活动 proxy 时,如果通信未加密(敏感),则能够访问 Zabbix 服务器 trapper 端口的各方可能会获取 proxy 配置数据。这是因为,如果未进行身份验证,或未在Proxy 地址字段中限制 proxy 地址,任何人都可以伪装成活动 proxy 并请求配置数据。 |
|
| Proxy 地址 | 如果指定,则仅接受来自此逗号分隔的 IP 地址列表(可选择使用 CIDR 表示法)或活动 Zabbix proxy 的 DNS 名称的活动 proxy 请求。 仅当在Proxy 模式字段中选择了活动 proxy 时,此字段才可用。不支持宏。 |
|
| 接口 | 输入被动 proxy 的接口详细信息。 仅当在Proxy 模式字段中选择了被动 proxy 时,此字段才可用。 |
|
| 地址 | 被动 proxy 的 IP 地址/DNS 名称。 | |
| 端口 | 被动 proxy 的 TCP 端口号(默认为 10051)。支持用户宏。 | |
| 描述 | 输入 proxy 描述。 | |
加密选项卡允许您要求与 proxy 建立加密连接。
| 参数 | 描述 |
|---|---|
| 连接到 proxy | 服务器连接到被动 proxy 的方式:不加密(默认)、使用 PSK(预共享密钥)或证书。 |
| 来自 proxy 的连接 | 选择允许活动 proxy 使用的连接类型。可以同时选择多种连接类型(便于测试并切换到其他连接类型)。默认值为“不加密”。 |
| 颁发者 | 允许的证书颁发者。证书首先由 CA(证书颁发机构)进行验证。如果证书有效且由 CA 签名,则可以使用颁发者字段进一步限制允许的 CA。此字段为可选字段,适用于 Zabbix 安装使用来自多个 CA 的证书的情况。 |
| 主题 | 允许的证书主题。证书首先由 CA 进行验证。如果证书有效且由 CA 签名,则可以使用主题字段仅允许一个主题字符串值。如果此字段为空,则接受由配置的 CA 签名的任何有效证书。 |
| PSK 标识 | 预共享密钥标识字符串。 请勿在 PSK 标识中放置敏感信息,因为该标识会以未加密方式通过网络传输,用于告知接收方应使用哪个 PSK。 |
| PSK | 预共享密钥(十六进制字符串)。如果 Zabbix 使用 GnuTLS 或 OpenSSL 库,最大长度为 512 个十六进制数字(256 字节 PSK);如果 Zabbix 使用 mbed TLS (PolarSSL) 库,最大长度为 64 个十六进制数字(32 字节 PSK)。示例:1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952 |
APM选项卡允许您在 proxy 上配置应用性能监控(APM)。 proxy 可以通过 OpenTelemetry 协议(OTLP/gRPC)收集应用或 OpenTelemetry 收集器发送的遥测数据(跟踪、指标和日志),并将数据写入遥测数据源。

| 参数 | 描述 | |
|---|---|---|
| 启用数据收集 | 选中复选框以启用 proxy 上的遥测数据收集。 启用遥测数据收集前,请在 proxy 配置文件中将 StartAPMCollector 参数设置为 1(需要使用具有 APM 支持的 Zabbix proxy)。 |
|
| 每秒最大消息数 | 设置 proxy 每秒接受的最大消息数: 无限制 - 接受所有传入消息。 自定义 - 每秒最多接受指定数量的消息。 消息是由应用、OpenTelemetry 收集器或其他遥测源发送的 OTLP 请求。消息大小取决于发送方;例如,OpenTelemetry 收集器可能会将数千个 span 批量放入一条消息中,而简单应用可能发送更小的消息(例如每个跟踪发送一条消息)。 如果超过限制,proxy 将返回 gRPC 状态码 UNAVAILABLE(临时错误),因此发送方可能会根据其配置稍后重试发送消息。 |
|
| 资源属性 | 指定要添加到所选类别传入遥测数据中的资源属性(例如,为此 proxy 接收的所有数据标记其环境或区域)。随后可以使用这些属性筛选遥测数据,例如,在遥测查询监控项条件中使用。 如果传入数据已包含具有相同键的资源属性,则保留传入属性,而不是使用此处指定的属性。 |
|
| 键 | 输入属性键(例如 deployment.environment、cloud.region)。对于所选类别必须唯一。 |
|
| 值 | 输入属性值(例如 production、eu-central-1)。可以为空。 |
|
| 类别 | 选择属性适用的传入数据类别:跟踪、指标或日志。 | |
超时选项卡允许您覆盖支持此功能的监控项类型的全局超时。

| 参数 | 描述 |
|---|---|
| 监控项类型的超时 | 设置监控项超时(基于其类型): 全局 - 使用全局超时(显示在每种监控项类型对应的灰显超时字段中); 覆盖 - 设置自定义超时(在每种监控项类型的超时字段中)。允许范围:1 - 600 秒(默认值:继承自全局超时)。支持时间后缀,例如 30s、1m,以及用户宏。 点击全局超时链接可以配置全局超时。请注意,全局超时链接仅对具有超级管理员类型且拥有管理 > 常规前端部分权限的用户可见。 请注意,proxy 级别的超时会覆盖全局超时,但如果为单个监控项配置了超时,则会被单个监控项的超时覆盖。 |
如果 proxy 主版本与服务器主版本不匹配,则监控项类型的超时旁边会显示
图标,并在悬停时显示消息“由于 proxy 和服务器版本不匹配,超时已禁用”。
在这种情况下,proxy 将使用 proxy 配置文件中的 Timeout 参数。
现有 proxy 的编辑表单还包含以下按钮:
- 刷新配置 - 刷新 proxy 的配置;
- 克隆 - 根据现有 proxy 的属性创建新的 proxy;
- 删除 - 删除 proxy。
主机配置
您可以在 主机配置 表单中,通过 Monitored by 字段指定某个单独的主机应由 proxy 或 proxy group 监控。

主机 批量更新 也是指定主机应由 proxy 或 proxy group 监控的另一种方式。