zabbix docker部署避坑指南
最近部署docker版本zabbix遇到了前所未有的大坑,网上还找不到任何有用的信息,研究了2天,终于都解决了,记录分析一下。
1.问题:在部署了docker版zabbix无法连接到容器内mysql。
现象:启动docker版zabbix服务端日志一直提示无法连接到mysql。
原因:zabbix需要用root登录mysql。 解决:首先进入mysql的docker容器:
1 | docker exec -it -uroot 8cecb07610c6 /bin/bash |
登录mysql:
1 | mysql -uroot -p |
授予root用户远程登录权限:
1 | use mysql; |
重新启动zabbix容器。
2.问题:在部署了docker版zabbix的宿主机上无法运行zabbix agent。
现象:启动zabbix agent提示成功,但是很快会被关闭,10050端口不监听。
原因:原因是libcurl.so.4版本被改变。
解决:部署前备份该文件,或在其他同版本服务器备份一个,将该文件恢复到如下路径:
1 | cp libcurl.so.4 /lib/aarch64-linux-gnu/libcurl.so.4 |
3.问题:docker版zabbix服务端无法访问宿主机zabbix agent。
现象:在容器里telnet宿主机docker0段ip和宿主机自身ip 10050均提示连接被重置,宿主机可以正常telnet,zabbix agent无法上线。
原因:配置文件中服务端ip设置需要修改。
解决:宿主机zabbix_agent配置文件中的Server与ServerActive需要设置为docker0网段对应的服务端ip。 进入zabbix/zabbix-server-mysql:latest容器:
1 | docker exec -it -u root 6d0283b610c6 /bin/sh |
获取容器ip地址:
1 | ifconfig |
我获取到的ip为172.17.0.4. 修改宿主机zabbix agent配置文件:
1 | vi /etc/zabbix/zabbix_agent2.conf |
将Server与ServerActive后面的值都修改为172.17.0.4。
1 | /etc/init.d/zabbix-agent2 restart |
4.问题:zabbix服务端无法跨网段访问zabbix agent。
现象:在容器里telnet客户端ip 10050提示连接被重置,宿主机可以正常telnet,zabbix agent无法上线。
原因:配置文件中服务端ip设置需要修改。
解决:客户端zabbix_agent配置文件中的Server与ServerActive需要设置为服务端ip到达客户端的上层网络地址。 在无法连接宿主机的情况下启动客户端zabbix agent,然后查看日志:
1 | cd /var/log/zabbix |
获取到类似如下报错:
1 | cannot accept incoming connection for peer: 10.0.10.1 |
将Server与ServerActive后面的值都修改为10.0.10.1。
1 | /etc/init.d/zabbix-agent2 restart |