Administrator
Published on 2025-12-29 / 1 Visits
0
0

【Zabbix从0到1实战指南】第 3 讲|Zabbix Agent 深度理解


很多人以为:
Agent 安装成功 = 监控就正常了

但现实是:

  • Agent 显示 Online,却一条数据都没有

  • 日志不报错,但 Grafana / Latest data 一片空

  • 同样的配置,A 主机有数据,B 主机没数据

这一讲,我们把 Zabbix Agent 从“工具”拆回“机制”,一次性解决这些反复踩坑的问题。


一、Agent 到底在系统里干了什么?

先别急着看配置项,先把 Agent 的真实职责讲清楚。

Zabbix Agent 本质上只做三件事:

  1. 采集本机指标

    • CPU、内存、磁盘、进程、日志、端口

  2. 根据模式,把数据交给 Server / Proxy

  3. 严格按 Item 定义执行命令

❗ Agent 不会主动采集一切
它只执行 Server / Proxy 告诉它要做的 Item

这句话很重要:

👉 没有 Item,就没有数据
👉 Agent 在线 ≠ 有采集任务


Image

二、Agent 主动 / 被动模式怎么选

这是 Zabbix Agent 最容易被“装错认知”的地方。

1️⃣ 被动模式(Passive)

工作方式:

  • Server / Proxy 👉 主动连接 Agent

  • Agent 监听端口(默认 10050)

  • 有防火墙 / NAT 就容易翻车

适用场景:

  • Server 和 Agent 在同一内网

  • 网络路径稳定、端口可控

  • 小规模环境

典型配置:

Server=192.168.10.10
ListenPort=10050

2️⃣ 主动模式(Active)【强烈推荐】

工作方式:

  • Agent 主动连接 Server / Proxy(10051)

  • Agent 拉取“自己要执行的 Item 列表”

  • 不依赖 Server 反向访问 Agent

适用场景:

  • 跨网段 / 跨防火墙

  • 大规模部署

  • 云 / 容器 / 异地机房

典型配置:

ServerActive=192.168.10.10
Hostname=web-01

📌 大型环境 90% 用 Active


3️⃣ 一个必须说透的坑

❌ Agent 配了 Active
❌ Server 里 Host 还是默认 Passive

👉 结果:Agent 在线,但无数据

因为:

  • Active 模式下

  • Server 不会主动 Poll

  • Agent 只执行“Active Item”


三、为什么 Agent 明明在线却“无数据”

这是你在一线运维中最常见的灵魂拷问

我们直接给你一个 排查清单

① Host 名字不一致(重灾区)

# agent.conf
Hostname=web-01

Server 中 Host 名称必须完全一致:

  • ❌ web01

  • ❌ web-01.local

  • ❌ IP 地址

✔ 必须 一字不差


② Item 类型选错

Agent 模式

Item 类型

被动

Zabbix agent

主动

Zabbix agent (active)

❗ Active Agent + Passive Item = 永远没数据


③ Item key 在 Agent 上不存在

Get value from agent failed: ZBX_NOTSUPPORTED

说明:

  • Key 拼错

  • 模块没启用

  • 权限不足

例如:

EnableRemoteCommands=0

却用了 system.run[]


④ Agent 没拿到配置

Active 模式下,Agent 会在日志中打印:

received configuration data

没有这句:

  • Server / Proxy 地址错

  • Host 不存在

  • 主机未启用


四、agent.conf 关键参数逐条解释

下面这些,是你必须理解的核心参数


🔹 Server / ServerActive

Server=192.168.10.10
ServerActive=192.168.10.10
  • 被动 / 主动模式的入口

  • 可以同时存在


🔹 Hostname(最重要)

Hostname=web-01
  • Active 模式下是 唯一身份标识

  • 和 Server 中 Host Name 强绑定


🔹 Timeout

Timeout=30
  • 脚本 / 命令执行超时

  • 默认 3 秒,经常不够


🔹 Include

Include=/etc/zabbix/zabbix_agentd.d/*.conf
  • 扩展监控(MySQL、Nginx、Redis)

  • 模块化管理配置


🔹 LogRemoteCommands(排障神器)

LogRemoteCommands=1
  • 能看到 Agent 实际执行了什么

  • 调试脚本必开


五、批量部署 Agent 的正确姿势(不是一台一台装)

如果你还在 手敲 agent.conf,说明你已经落后了。


✅ 正确思路 1:统一模板

  • 固定 agent.conf 模板

  • 只变:

    • Hostname

    • ServerActive


✅ 正确思路 2:自动注入 Hostname

HOSTNAME=$(hostname)
sed -i "s/^Hostname=.*/Hostname=${HOSTNAME}/" agent.conf

✅ 正确思路 3:Agent 主动 + Proxy

大规模环境一定是:

Agent → Proxy → Server
  • 降低 Server 压力

  • 网络边界更清晰

  • 运维风险更低

六、本讲你真正应该记住的 5 句话

1️⃣ Agent 在线 ≠ 监控正常
2️⃣ 没有 Active Item,就没有 Active 数据
3️⃣ Hostname 是 Active Agent 的“身份证”
4️⃣ Agent 只执行 Item,不会自己采集
5️⃣ 大规模环境,Agent 永远优先 Active


本讲价值总结

这一讲解决的是 Zabbix 使用中最“反直觉”的问题

❌ 为什么明明都装好了,却什么都看不到
❌ 为什么日志没报错,但就是没数据

当你真正理解了 Agent:

  • 你不再靠“重启试试”

  • 你能一眼判断是 模式错 / Item 错 / Host 错

  • 你具备了 架构级排错能力



Comment