zabbix监控脚本执行docker命令权限问题
问题描述
- 在自定义监控脚本时,web界面提示权限问题,无法执行docker命令
报错
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.40/containers/mwx_ndj_hosting/json: dial unix /var/run/docker.sock: connect: permission denied
脚本
执行脚本文件为~/test.sh
排查过程
agent代理服务器排查
用zabbix用户执行该脚本测试,脚本是否可以执行
1 | sudo su - zabbix -s /bin/bash test.sh |
如果该命令提示没有权限,则查看test.sh是否有可执行权限,并执行sudo chmode +x ~/test.sh
如果有执行权限仍然提示权限问题,则将zabbix用户加入到docker组中,执行sudo usermod -aG docker zabbix , 一定要注意加入到组中,需要退出当前shell后重新进入才能生效
systemctl restart zabbix-agent 重启zabbix-agent
server端排查
测试server端是否可以获取到值
1 | zabbix_get -s <agent-ip> -p 10050 -k <自定义键值> |
如果提示对脚本中的命令没有权限,则在agent服务器执行sudo setenforce 0 ,关闭selinux
关闭agent服务器的selinux后,如果提示无法调用docker daemon ,则在agent服务器上执行sudo
重启zabbix-agent
1 | systemctl restart zabbix-agent |
总结
关于权限问题,从文件权限,用户权限及防火墙、selinux等防护三个方面着手,问题是一定可以解决的
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 云运维!