使用 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:

  1. 转到管理 > Proxy。
  2. 点击创建 proxy。
  3. 在表单中输入 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 监控的另一种方式。