Nagios 插件无法在服务器上工作,但可以在本地工作

Nagios 插件无法在服务器上工作,但可以在本地工作

我编写了一个小型 bash 脚本,用于检查 docker 服务是否正常运行,当我在本地客户端上测试时,一切正常,但不知何故,它在实际用于check_nrpe执行我的脚本的 nagios 服务器上不起作用,它总是显示脚本的其他部分。我的 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.

答案1

看起来像是权限错误。您以 root 用户身份在本地运行脚本,而您以 nagios 用户身份通过​​ nrpe 远程运行脚本(您没有向我们显示nrpe.cfg调用脚本的相关配置行)。

为了解决这个问题,你可以修改 nrpe.cfg 文件使其如下所示:

command[docker_container]=sudo /usr/lib64/nagios/plugins/extra/docker_container

另外,不要忘记将 nagios 用户添加到 sudoers 文件中,以便执行此脚本而无需使用 要求输入密码visudo

答案2

正如@Khaled 指出的那样,这是一个权限问题,但我无法让该解决方案发挥作用。将用户添加到docker组对我来说很有效。

sudo usermod -a -G docker $(grep nrpe_user /etc/nagios/nrpe.cfg|awk -F= '{print $2}')

之后,我的用户无需 sudo 即可运行 docker 命令,并且 NRPE 已从 Nagios 服务器成功完成。

相关内容