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