本人装的是 Docker 版 zabbix 5.4.1,zabbix 服务器IP是 192.168.X.A ,在容器可以 ping 得通这个IP,在客户端填写 192.168.X.A ,即 /etc/zabbix/zabbix_agentd.conf 里面的 server=192.168.X.A ,是这样填写,不过就是会报 Get value from agent failed: Cannot connect to [[192.168.X.A:10050]: [111] Connection refused
后来百度了好久,终于知道是怎么回事,因为Docker容器安装的 zabbix-server-mysql 自己就有一个IP,而 /etc/zabbix/zabbix_agentd.conf 里面的 server= 本来就是需要填写服务器本来的IP,而不是容器属主机的IP,接下来,如何找这IP呢?
docker network ls
NETWORK ID NAME DRIVER SCOPE
067485fae952 bridge bridge local
908a10c1d8d8 gitlab_default bridge local
40fb91a8dfe9 host host local
2282753d6061 none null local
#查询brideg的详细信息
docker inspect 067485fae952
"Containers": {
"090c52f4a5afe04bfda8317230febf3d5f573b0bb409a76b9515e5e7330ede07": {
"Name": "zabbix-mysql",
"EndpointID": "410d3552da07871a1064097eb173a2167a62817d58b084c1bb2d7ac7d45bb5cd",
"MacAddress": "02:42:ac:11:00:03",
"IPv4Address": "172.17.0.3/16",
"IPv6Address": ""
},
"5f34c6f2bcdee6565ba901a2cb03ed699fec504b28888855dcfe7b5a28f9283e": {
"Name": "zabbix-web-nginx-mysql",
"EndpointID": "4ea5efdccc43fe2a9249c8553fe864f0db2f15ec94848c7949dd8a4e23a408a7",
"MacAddress": "02:42:ac:11:00:05",
"IPv4Address": "172.17.0.5/16",
"IPv6Address": ""
},
"df91c2082aa38763b80c730b1469ce43b4c198379796c13d9da9df86d9150c1e": {
"Name": "zabbix-server-mysql",
"EndpointID": "759e34f40f84cdff4c6cdafcbfa00434bcf651d4fc9b13b2d83f00780abcd5c0",
"MacAddress": "02:42:ac:11:00:04",
"IPv4Address": "172.17.0.4/16",
"IPv6Address": ""
},
可以看到,zabbix-server-mysql 对应的 IP 是:172.17.0.4 ,把这个 IP 放进 /etc/zabbix/zabbix_agentd.conf > server=192.168.X.A,172.17.0.4
systemctl restart zabbix-agent
重启zabbix-agent 后,等一分钟左右,本来红的 ZBX 字样,就会变成绿的了