zabbix agent 连接成功的关键是 serveractive、hostname、hostmetadata 三项配置正确且 startagents=0 关闭被动模式;hostname 必须与 web 界面主机名完全一致,hostmetadata 须配 hostmetadataitem=(空值)以禁用动态元数据,否则自动注册失败。

Zabbix Agent 能不能连上 Server、数据能不能采准,不取决于配置项写多少,而在于 ServerActive、Hostname、HostMetadata 这三项是否对得上、启得动、报得出。其他参数堆再多,只要这三处错一个,Web 界面就显示“ZBX”红色,最新数据永远为空。
只改三个核心配置项,别碰其他200行
新版 Zabbix(5.0+)默认用 zabbix-agent2,配置文件是 /etc/zabbix/zabbix_agent2.conf。全文件注释掉,只保留并修改以下三行:
-
ServerActive=192.168.10.5:10051:填 Zabbix Server 的内网 IP 和端口,主动模式下 Agent 自己推数据,这是当前最稳的用法 -
Hostname=web-prod-01:必须和 Web 界面「创建主机」时填的 Host name 完全一致,大小写敏感,不能含空格或点号(下划线可以) -
HostMetadata=linux db-postgres:作为自动注册的“接头暗号”,Server 靠它匹配模板和动作;同时必须配HostMetadataItem=(空值),否则系统会用动态值覆盖你写的静态标签
启动前必须关掉被动监听,否则日志里全是警告
Agent2 默认仍开启被动模式监听 10050 端口,但你只配了 ServerActive,说明你走的是纯主动模式。不关它,日志里会反复刷 cannot serve passive checks,而且防火墙还得额外放行 10050 —— 白增风险。
- 在配置文件中加一行:
StartAgents=0 - 确认没开
ListenPort或已注释掉 - 改完执行:
systemctl restart zabbix-agent2,再看systemctl status zabbix-agent2确保是active (running)
验证上报是否成功,别只看 Web 界面
Web 上“ZBX”变绿只是表面,真正要看 Agent 是否把数据送到了 Server,得查 Server 侧的日志和命令行反馈:
- 在 Server 上执行:
zabbix_get -s 192.168.10.20 -k "agent.ping"(填 Agent 的 IP),返回1才算通 - 如果超时,先
telnet 192.168.10.20 10051测连通性;不通就查 Agent 本机防火墙(ufw allow 10051或firewall-cmd --add-port=10051/tcp) - SELinux 启用时必加:
setsebool -P zabbix_can_network on,否则journalctl -u zabbix-agent2 -n 30里会出现avc: denied
最容易被忽略的是 HostMetadata 和 HostMetadataItem 的配合关系——前者是你写的标签,后者是强制清空动态标签的开关。漏掉后者,Agent 会把 system.uname 之类的结果当元数据发过去,Server 就收不到你预设的 linux db-postgres,自动注册直接失败。











