1 proxy代理

概述

Zabbix proxy 可以代表 Zabbix 服务器收集性能和可用性数据。
这样,proxy 可以承担一部分数据收集负载,从而减轻 Zabbix 服务器的压力。

此外,在所有 agent 和 proxy 都向一台 Zabbix 服务器报告、并由该服务器集中收集所有数据的情况下,使用 proxy 是实现集中式和分布式监控的最简单方式。

Zabbix proxy 可用于:

  • 监控远程位置
  • 监控通信不稳定的位置
  • 在监控数千台设备时减轻 Zabbix 服务器的负载
  • 简化分布式监控的维护

proxy 只需要与 Zabbix 服务器建立一个 TCP 连接。
这样更容易绕过防火墙,因为你只需要配置一条防火墙规则。

Zabbix proxy 必须使用独立的数据库。
如果将其指向 Zabbix 服务器数据库,将会破坏配置。

proxy 收集的所有数据在传输到服务器之前都会先存储在本地。
这样,即使与服务器之间出现临时通信问题,也不会丢失数据。
proxy 配置文件中的 ProxyLocalBufferProxyOfflineBuffer 参数用于控制数据在本地保留的时长。

可能会发生这样的情况: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 组监控的方式。