zabbix 监控脚本中执行docker命令没有权限
在zabbix_agnet中执行监本时,提示
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/json: dial unix /var/run/docker.sock: connect: permission denied
这是运行docker没有权限
开始排查:
1、agent服务器排查
1.1执行脚本 检测脚本是否可以执行 ./test.sh
1.2不可以执行给脚本添加可执行权限 sudo chmode +x ./test.sh
1.3 如果仍然没可执行权限,将zabbix用户添加到docker组中,需要退出当前shell才能生效
usermod -a -G docker zabbix
同时还需要重启一下zabbix-agent
2、server端排查
2.1 zabbix_get -s <agent-ip> -p 10050 -k <自定义键值>,测试server端是否可以获取到值
2.2 如果提示没有命令权限,则在agent服务器上执行sudo setenforce 0,关闭selinux
2.3 关闭agent服务器的selinux后,如果提示无法调用docker daemon ,则在agent服务器上执行
sudo systemctl restart zabbix-agent ,重启zabbix-agent
3、总结
关于权限问题,从文件权限,用户权限以及防火墙、selinux等防护三个方面着手,问题是一定可以解决的