Zabbix-Agent双Server上报配置指南
本文说明如何让一台 Zabbix Agent 同时向两个独立的 Zabbix Server 上报监控数据,涵盖 Agent 客户端配置与新 Server 端 UI(自动注册)配置。
适用场景:基地已有旧 Zabbix Server,新增一台 Zabbix Server,K8s/物理机等节点需双端监控,主机通过自动注册入库。
脱敏约定:Server 端 IP 使用
10.10.10.*/10.10.11.*;Client 端 IP 使用172.27.10.*;基地名以baseA代替。
一、架构说明
┌─────────────┐ 主动连接 (ServerActive) ┌──────────────────┐
│ K8s 节点 │ ───────────────────────────────► │ 旧 Zabbix Server │
│ zabbix-agent│ │ 10.10.10.38 │
│ │ 主动连接 (ServerActive) └──────────────────┘
│ │ ───────────────────────────────► ┌──────────────────┐
│ │ │ 新 Zabbix Server │
└─────────────┘ │ 10.10.11.68 │
▲ └──────────────────┘
│ 被动探测 (Server 参数授权 + ListenPort)
└────────────────────────────────────────────────────────────
- 主动模式:Agent 按
ServerActive连接 Server,拉取监控项并上报(Linux by Zabbix agent active模板依赖此模式)。 - 被动模式:Server 按
Server白名单连接 Agent 的ListenPort(默认 10050)。 - 双 Server 并存时,两个 Server 的数据库各自维护一份主机记录;Agent 只负责向两个地址上报,不会自动同步 Server 之间的主机配置。
二、前置条件
| 项目 | 要求 |
|---|---|
| Agent 版本 | Zabbix 4.4+(推荐 6.0.x,本文以 6.0.25 为例) |
| 网络 | Agent 到两个 Server 的 Trapper 端口(如 31051)TCP 可达 |
| Server 版本 | 建议与 Agent 主版本一致(如均为 6.0) |
| 主机名 | Agent Hostname 与 Server 中 Host name 必须一致 |
三、Client 端:zabbix_agentd.conf 配置
配置文件路径(源码安装示例):/usr/local/zabbix/conf/zabbix_agentd.conf
3.1 核心参数
# 被动模式:允许哪些 Server IP 来连接本 Agent(逗号分隔)
Server=10.10.10.38,10.10.11.68
# 主动模式:Agent 向哪些 Server 上报(见下方分隔符说明)
ServerActive=10.10.10.38:31051,10.10.11.68:31051
# 主机名,必须与 Zabbix UI 中 Host name 完全一致
Hostname=172.27.10.224
ListenPort=10050
Timeout=20
LogFile=/tmp/zabbix_agentd.log
3.2 ServerActive 分隔符(重要)
| 分隔符 | 含义 | 行为 |
|---|---|---|
逗号 , |
多个独立 Server | Agent 同时向所有 Server 上报 |
分号 ; |
高可用(HA)主备 | 只连第一个可用的 Server,第一个正常则不会连第二个 |
双 Server 并行上报必须使用逗号:
# 正确:双 Server 并行
ServerActive=10.10.10.38:31051,10.10.11.68:31051
# 错误:HA 写法,第二个 Server 永远不会收到数据
ServerActive=10.10.10.38:31051;10.10.11.68:31051
3.3 Server 与 ServerActive 对照
| 参数 | 分隔符 | 作用 |
|---|---|---|
Server |
逗号 , |
被动探测白名单 |
ServerActive |
逗号 ,(多独立 Server) |
主动上报目标列表 |
ServerActive |
分号 ;(HA 主备) |
故障切换,非双上报 |
3.4 修改与生效
# 1. 备份
cp /usr/local/zabbix/conf/zabbix_agentd.conf \
/usr/local/zabbix/conf/zabbix_agentd.conf.bak.$(date +%Y%m%d%H%M%S)
# 2. 修改 Server / ServerActive(示例)
sed -i 's/^Server=10.10.10.38$/Server=10.10.10.38,10.10.11.68/' \
/usr/local/zabbix/conf/zabbix_agentd.conf
sed -i 's/^ServerActive=10.10.10.38:31051$/ServerActive=10.10.10.38:31051,10.10.11.68:31051/' \
/usr/local/zabbix/conf/zabbix_agentd.conf
# 3. 核对
grep -E '^Server=|^ServerActive=|^Hostname=' /usr/local/zabbix/conf/zabbix_agentd.conf
# 4. 重启生效
systemctl restart zabbix-agent
systemctl is-active zabbix-agent
说明:修改
ServerActive后必须重启 Agent 才能生效。自动注册请求在 Agent 启动时发出;若仅改配置不重启,新 Server 不会收到注册。
3.5 Ansible 批量示例
# 在 ansible 控制节点执行,逐台重启(-f 1)降低对生产的影响
ansible baseA_k8s -m shell -a \
"sed -i 's/^Server=10.10.10.38\$/Server=10.10.10.38,10.10.11.68/' /usr/local/zabbix/conf/zabbix_agentd.conf && \
sed -i 's/^ServerActive=10.10.10.38:31051\$/ServerActive=10.10.10.38:31051,10.10.11.68:31051/' /usr/local/zabbix/conf/zabbix_agentd.conf && \
grep -E '^Server=|^ServerActive=' /usr/local/zabbix/conf/zabbix_agentd.conf && \
systemctl restart zabbix-agent && sleep 5 && systemctl is-active zabbix-agent" \
-b -f 1
四、Server 端 UI:自动注册配置
新 Server 上必须完成 全局开关 + Action 规则 + 依赖资源 三部分,缺一不可。
4.1 启用全局自动注册
路径:Administration → General → Other
| 配置项 | 值 |
|---|---|
| Autoregistration / Enable auto registration | Enabled |
点击 Update 保存。
仅创建 Autoregistration Action 并设为 Enabled 不够;全局 Autoregistration 未开启时,Server 会丢弃 Agent 的注册请求,Agent 日志仅表现为
host [xxx] not found,UI 中看不到主机。
4.2 创建 Autoregistration Action
路径:Data collection → Actions,左上角下拉选择 Autoregistration actions → Create action
示例:baseA K8s 节点
| 字段 | 值 |
|---|---|
| Name | baseA172.27.10 |
| Status | Enabled |
Conditions(条件)
| Label | Operator | Value |
|---|---|---|
| Host name | contains | 172.27.10. |
Agent 的
Hostname=172.27.10.224满足Host name contains 172.27.10.。若使用主机名(如k8s04),条件需改为匹配对应名称规则。
Operations(操作)
| 步骤 | 操作 |
|---|---|
| 1 | Add host |
| 2 | Add to host groups: baseA_SRV(或 baseA-srv,按实际组名) |
| 3 | Link to templates: Linux by Zabbix agent active |
保存后确认 Action 状态为 Enabled(绿色)。
4.3 Action 依赖资源检查
Action 引用的资源在新 Server 上必须已存在,否则注册静默失败:
| 资源 | 检查路径 |
|---|---|
| 主机组 | Data collection → Host groups |
| 模板 | Data collection → Templates |
常见失败原因:
- 主机组
baseA_SRV未创建 - 模板
Linux by Zabbix agent active未导入 - Action 条件与 Agent
Hostname不匹配
失败记录查看:Reports → Action log
4.4 与旧 Server 规则对齐参考
旧 Server(示例)规则:
| 项目 | 旧 Server | 新 Server |
|---|---|---|
| 条件 | Host name contains 172.27.10. |
同上 |
| 主机组 | baseA-srv |
baseA_SRV |
| 模板 | Linux by Zabbix agent active | 同上 |
规则逻辑一致即可,主机组名称可以不同,但新 Server 上对应组必须存在。
五、验证清单
5.1 Client 端
# 连通性(5 秒超时)
timeout 5 bash -c 'echo > /dev/tcp/10.10.11.68/31051' && echo OK || echo FAIL
# 配置
grep -E '^Server=|^ServerActive=|^Hostname=' /usr/local/zabbix/conf/zabbix_agentd.conf
# 服务
systemctl is-active zabbix-agent
# 日志:连上新 Server 且主机未入库时
grep '10.10.11.68' /tmp/zabbix_agentd.log | tail -n 10
# 预期(注册完成前):no active checks on server [10.10.11.68:31051]: host [xxx] not found
# 预期(注册完成后):active check configuration update from [10.10.11.68:31051]
5.2 Server 端 UI
| 检查项 | 预期 |
|---|---|
| Monitoring → Hosts | 出现与 Agent Hostname 同名的主机 |
| 主机 Availability(ZBX) | 绿色 |
| Reports → Action log | 有成功的 Add host 记录,无 group/template 报错 |
| Latest data | 有数据项计数 |
六、常见问题
Q1:新 Server 一直 host not found,UI 无主机
按顺序排查:
ServerActive是否为逗号分隔(不是分号)- 新 Server Administration → General → Other 全局 Autoregistration 是否 Enabled
- Action 条件是否匹配 Agent
Hostname - 主机组、模板在新 Server 是否存在
- 查看 Reports → Action log 失败原因
- 修改 Agent 配置后是否已 restart zabbix-agent
Q2:旧 Server 正常,新 Server 完全无连接记录
ServerActive 使用了分号 ;(HA 模式),Agent 只连第一个 Server。改为逗号 , 并重启。
Q3:旧 Server Availability 变灰
多为 Agent 重启后短暂断连,或 ServerActive 配置错误导致主动心跳中断。确认旧 Server 地址仍在 ServerActive 列表中且 Agent 为 active (running),通常数分钟内恢复。
Q4:配置改完又被还原
检查 Ansible playbook、配置管理工具是否覆盖 zabbix_agentd.conf,将双 Server 配置写入配置管理源,避免手工修改被回滚。
七、baseA K8s 实施记录(参考)
| 项目 | 值 |
|---|---|
| Agent 组 | baseA_k8s(6 台:172.27.10.221–226) |
| Agent 版本 | 6.0.25 |
| 旧 Server | 10.10.10.38:31051 |
| 新 Server | 10.10.11.68:31051 |
| Agent Hostname | 各节点 IP(如 172.27.10.224) |
最终有效配置:
Server=10.10.10.38,10.10.11.68
ServerActive=10.10.10.38:31051,10.10.11.68:31051
Hostname=172.27.10.224
关键修复点:将 ServerActive 从分号改为逗号;新 Server 开启全局 Autoregistration 并确保 Action 依赖的主机组与模板存在。