Zabbix服务器使用了Docker搭建在笔者使用的笔记本上,Zabbix被监控主机为笔者的阿里云服务器,此时Zabbix环境已搭建完成,在Zabbix服务器web界面也已添加监控主机,但是被监控主机报如下错误:
Assuming that agent dropped connection because of access permission
笔者在解决这个错误时找出存在的几个问题,以下的解决方案描述:
这是因为Zabbix服务器的网络环境造成的,由于Zabbix服务器搭建在笔者的笔记本上,笔记本的网络是连接的WiFi局域网,所以在被监控主机上的Zabbix_agent服务配置上需要修改zabbix_agent配置文件的Server
参数或者ServerActive
参数指定Zabbix服务器的公网IP。
这时候问题来了,我怎么知道Zabbix服务器,也就是笔记本的公网IP?
后来找的一个办法,就是在Zabbix服务器通过telnet工具连接到被监控主机的10050端口,再在被监控主机查看10050端口被谁访问了,就得到了Zabbix服务器的公网IP: Zabbix服务器:
➜ ~ telnet x.x.x.x 10050
Trying x.x.x.x...
Connected to x.x.x.x.
Escape character is '^]'.
Connection closed by foreign host.
被监控主机:
[root@ali_server_ltd ~]# netstat -an | grep 10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN
tcp 0 0 192.168.1.223:10050 y.y.y.y:27242 TIME_WAIT
x.x.x.x : 被监控主机ip y.y.y.y : Zabbix服务器的公网IP
接着修改被监控主机的zabbix_agent配置文件指定Zabbix服务器IP:
[root@ali\_server\_ltd ~]# vim /usr/local/etc/zabbix_agentd.conf
……
Server=127.0.0.0,y.y.y.y
……
ServerActive=127.0.0.0,y.y.y.y
重启zabbix_agent服务器即可。
也就是需要确定被监控主机的zabbix_agentd.conf配置文件中的Hostname参数与服务端Zabbix server页面的上的机器名一致, 否则有可能导致服务端不知道把数据保存在哪一台。
修改为一致后重启zabbix_agent服务即可。
由于被监控主机是阿里云服务器,在默认情况下需要设置安全组才能将端口开放。 登录阿里云平台修改安全组策略:
被监控主机如开启了防火墙,也需要开放10050端口。
firewall-cmd --zone=public --add-port=10050/tcp --permanent
firewall-cmd --reload
解决了上面的问题之后,再在Zabbix服务器端web界面查看:
绿了,可用性为正常状态。 最新数据中可以查看到数据:
在搭建这个监控过程中却是费了不少劲,通过查找资料和不断尝试,也最终能找到问题所在了。