我已经写了一个小的bash脚本来检查docker服务是否正常运行,当我在客户端上进行testing的时候是非常好的,但是不知道从nagios服务器上运行check_nrpe来执行我的脚本,它总是显示脚本的一部分。 我的nrpe.cfg也是正确的。
这是脚本:
#!/bin/bash CONTAINER=ubuntu_container RUNNING=$(docker inspect --format="{{ .State.Running }}" $CONTAINER 2> /dev/null) if [ "$RUNNING" == "true" ]; then echo "OK - $CONTAINER is running." exit 0 else echo "CRITICAL - $CONTAINER is not running." exit 2 fi
从nagios服务器输出:
root@nag_server nagios]# /usr/lib64/nagios/plugins/check_nrpe -t 30 -H docker-host.intenallab -c docker_container CRITICAL - ubuntu_container is not running.
客户输出:
[root@ubuntu]# /usr/lib64/nagios/plugins/extra/docker_container OK - ubuntu_container is running.
它看起来像一个权限错误。 您正在以root用户身份在本地运行脚本,而通过nrpe作为nagios用户(您没有向我们显示调用脚本的相关nrpe.cfgconfiguration行)远程运行脚本。
要解决这个问题,你可以修改nrpe.cfg文件,如下所示:
command[docker_container]=sudo /usr/lib64/nagios/plugins/extra/docker_container
此外,不要忘记添加nagios用户sudoers文件来执行此脚本,而不要求使用visudo密码。