背景条件:Zabbix-server安装在VM虚拟机上,Zabbix-agent安装在阿里云主机上,zabbix-server无法获取到云主机上的监控数据。
拓扑说明:
解决方法:
1、在zabbix-server上再次检测server端能否和agentd端通信
1 | /usr/local/zabbix/bin/zabbix_get -s 39.98.94.207 -p10050 -k"net.if.in[eth0,bytes]" |
提示:
1 | zabbix_get [61120]: Check access restrictions in Zabbix agent configuration |
2、登录云主机查看zabbix-agentd日志:
1 | cat /usr/local/zabbix/log/zabbix_agentd.log |
1 | 14667:20200227:135957.184 failed to accept an incoming connection: connection from "219.159.152.25" rejected, allowed hosts: "0.0.0.0" |
3、修改云主机上server-agentd配置文件
1 | vi /etc/zabbix/zabbix_agentd.conf |
1 | ...... |
4、重启云主机上的server-agentd服务
5、在zabbix-server上再次检测server端能否和agentd端通信
1 | /usr/local/zabbix/bin/zabbix_get -s 39.98.94.207 -p10050 -k"net.if.in[eth0,bytes]" |
提示:
1 | 63486356127 |
6、结束
7、说明
虚拟机的网络要想连接到真实的云主机,必须要有真正的网络地址而不是虚拟地址,所以他的地址跳转到了宿主机的地址,由宿主地址来访问agent物理机,这也就是为什么日志中出现了第二个39.98.94.207地址的原因,因为你在agent里配置的Server的地址是你虚拟机的地址,而实际建立连接的是宿主机的地址,所以agent端老是连接不上。
所以,我认为Server=IP里的IP不能单单解释成服务器端的地址,而是路由表中最后一跳的地址,因为agent只会与最后一个地址建立连接,而拒绝所有其他的地址,当然,Server=IP,39.98.94.207这个地址可以一次配多个建立连接的地址,有点类似防火墙的白名单。