1 proxy代理
概述
Zabbix proxy 可以代表 Zabbix 服务器收集性能和可用性数据。
这样,proxy 可以承担一部分数据收集负载,从而减轻 Zabbix 服务器的压力。
此外,在所有 agent 和 proxy 都向一台 Zabbix 服务器报告、并由该服务器集中收集所有数据的情况下,使用 proxy 是实现集中式和分布式监控的最简单方式。
Zabbix proxy 可用于:
- 监控远程位置
- 监控通信不稳定的位置
- 在监控数千台设备时减轻 Zabbix 服务器的负载
- 简化分布式监控的维护

proxy 只需要与 Zabbix 服务器建立一个 TCP 连接。
这样更容易绕过防火墙,因为你只需要配置一条防火墙规则。
Zabbix proxy 必须使用独立的数据库。
如果将其指向 Zabbix 服务器数据库,将会破坏配置。
proxy 收集的所有数据在传输到服务器之前都会先存储在本地。
这样,即使与服务器之间出现临时通信问题,也不会丢失数据。
proxy 配置文件中的 ProxyLocalBuffer 和 ProxyOfflineBuffer 参数用于控制数据在本地保留的时长。
可能会发生这样的情况:proxy 直接从 Zabbix 服务器数据库接收最新的配置更改,因此其配置比 Zabbix 服务器更新;而 Zabbix 服务器由于 CacheUpdateFrequency 的值,配置更新可能没有那么快。
因此,proxy 可能会开始收集数据并将其发送到 Zabbix 服务器,而服务器会忽略这些数据。
Zabbix proxy 是一个数据收集器。
它不计算触发器、不处理事件,也不发送告警。
有关 proxy 功能的概览,请参见下表:
| 功能 | proxy 支持 | |
|---|---|---|
| 监控项 | ||
| Zabbix agent 检查 | 是 | |
| Zabbix agent 检查(主动) | 是 1 | |
| 简单检查 | 是 | |
| Trapper 监控项 | 是 | |
| SNMP 检查 | 是 | |
| SNMP traps | 是 | |
| IPMI 检查 | 是 | |
| JMX 检查 | 是 | |
| 日志文件监控 | 是 | |
| 内部检查 | 是 | |
| SSH 检查 | 是 | |
| Telnet 检查 | 是 | |
| 外部检查 | 是 | |
| 依赖监控项 | 是 | |
| 脚本监控项 | 是 | |
| 浏览器监控项 | 是 | |
| 内置 Web 监控 | 是 | |
| 监控项值预处理 | 是 | |
| 网络发现 | 是 | |
| 主动 agent 自动注册 | 是 | |
| 低级别发现 | 是 2 | |
| 远程命令 | 是 | |
| 计算触发器 | 否 | |
| 处理事件 | 否 | |
| 事件关联 | 否 | |
| 发送告警 | 否 | |
[1] 为确保 agent 向 proxy(而不是服务器)请求主动检查,必须在 agent 配置文件中的 ServerActive 参数里列出 proxy。
[2] 对于 LLD,Zabbix proxy 仅收集并预处理数据,然后将其发送到 Zabbix 服务器进行进一步处理。
过载保护
如果 Zabbix 服务器曾宕机一段时间,而 proxies 收集了大量数据,那么当服务器启动后,可能会发生过载(历史缓存使用率会在一段时间内保持在 95-100%)。 这种过载可能导致性能下降,使检查处理速度低于应有水平。 为避免因历史缓存过载而引发的问题,系统实现了针对这种场景的保护机制。
当 Zabbix 服务器的历史缓存已满时,会对历史缓存写入访问进行限流,从而阻塞服务器的数据采集进程。 历史缓存过载最常见的情况,是服务器停机后 proxies 开始上传已收集的数据。 为避免这种情况,系统增加了 proxy 限流机制(目前无法禁用)。
当历史缓存使用率达到 80% 时,Zabbix 服务器会进入限流模式。 在限流模式下,只有当历史缓存使用率低于 60% 时,服务器才会接受 proxy 数据,并轮流接受不同的 proxies。 一旦历史缓存使用率降到 20% 以下,服务器将切换回正常模式。
此外,在正常模式下,如果历史缓存使用率超过 60%,Zabbix 服务器会对发送超大数据包(10,000+ 条记录)的单个 proxies 进行限流。
该决策是在服务器评估某个 proxy 上传请求的瞬间作出的,因此不一定会立即反映在历史缓存使用率图表中(内部监控项 zabbix[wcache,history,pused] 及其更新间隔可能无法捕捉到短暂峰值)。
这种限流模式将持续,直到缓存使用率再次达到 80%、降至 20%,或者限流列表为空。 在第一种情况下,服务器将再次停止接受 proxy 数据。 在另外两种情况下,服务器将恢复正常工作,接受所有 proxies 的数据。
以上信息可通过下表说明:
| 历史写入 缓存使用率 |
Zabbix 服务器模式 | Zabbix 服务器动作 |
|---|---|---|
| 达到 80% | 等待 | 停止接受 proxy 数据,但保留一个限流列表(按优先级排序、稍后联系的 proxies 列表)。 |
| 达到 60% | 正常,但准备进入限流 | 在决定是否接受数据时,可能会拒绝超大的 proxy 上传(超过 10k 条记录);继续接受其他 proxy 数据。 |
| 降至 20% | 正常 | 丢弃限流列表,并开始正常接受 proxy 数据。 |
你可以使用 zabbix[wcache,history,pused] 内部监控项,将 Zabbix 服务器的这种行为与某个指标关联起来。
配置
在您安装并配置好 proxy 后,就可以在 Zabbix 前端中对其进行配置了。
添加 proxy
要在 Zabbix 前端中配置 proxy:
- 转到:Administration > Proxies
- 点击 Create proxy

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

| 参数 | 说明 |
|---|---|
| Timeouts for item types | 设置监控项超时(基于其类型): Global - 使用全局超时(在每种监控项类型对应的灰显 Timeout 字段中显示); Override - 设置自定义超时(在每种监控项类型对应的 Timeout 字段中)。允许范围:1 - 600s(默认:继承自全局超时值)。支持时间后缀,例如 30s、1m,以及用户宏。 点击 Global timeouts 链接可配置全局超时值。请注意,Global timeouts 链接仅对具有 Super admin 类型且拥有 Administration > General 前端部分权限的用户可见。 另请注意,虽然 proxy 级别的超时会覆盖全局超时,但如果已为单个监控项进行了配置,则会被单个监控项超时覆盖。 |
如果 proxy 的主版本与服务器主版本不匹配,则会在 Timeouts for item types 旁显示
图标,悬停消息为 “Timeouts disabled because the proxy and server versions do not match”。
在这种情况下,proxy 将使用 proxy 配置文件中的 Timeout 参数。
现有 proxy 的编辑表单还有以下附加按钮:
- Refresh configuration - 刷新 proxy 的配置
- Clone - 基于现有 proxy 的属性创建一个新的 proxy
- Delete - 删除 proxy
主机配置
您可以在主机配置表单中,使用 Monitored by 字段指定某个单独的主机应由 proxy 或 proxy 组进行监控。

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