Nagios/Centreon Error : Return code 127 is out of bounds : Plugin may be missing

Nagios/Centreon Error : Return code 127 is out of bounds : Plugin may be missing

作为 IT 项目的一部分,我使用了 Nagios。 为了获得温度传感器的值,我创建了一个 python 插件,它将读取数据库中的值,并打印在屏幕上。

问题是当我想监控基于这个插件的服务时,在Centreon web界面显示为CRITICAL,错误为“(Return code 127 is out of bounds) plugin may be missing” .

以下是我的安装摘要:

我尝试使用插件版本注释所有代码,但只有 returns 一个“sys.exit(2)”,问题不是来自代码。

让我们尝试构建 test_wrapper.sh shell 脚本,看看是否存在一些更普遍的问题,或者它是否只是孤立于 python。

[joe@joeyoung.io libexec]# pwd
/usr/local/nagios/libexec
[joe@joeyoung.io libexec]# cat <<EOF >> test_wrapper.sh
> #!/bin/sh
> echo "OK"
> exit 0
> EOF
[joe@joeyoung.io libexec]# cat test_wrapper.sh
#!/bin/sh
echo "OK"
exit 0
[joe@joeyoung.io libexec]# ls -al test_wrapper.sh
-rw-r--r-- 1 joe joe 27 Aug  6 15:48 test_wrapper.sh
[joe@joeyoung.io libexec]# chmod a+x test_wrapper.sh
[joe@joeyoung.io libexec]# ls -al test_wrapper.sh
-rwxr-xr-x 1 joe joe 27 Aug  6 15:48 test_wrapper.sh
[joe@joeyoung.io libexec]# ./test_wrapper.sh
OK

"OK"说明输出没问题

[joe@joeyoung.io libexec]# echo $?
0

Return 0 的代码 表明 return 代码没问题。

现在让我们构建一个基本框架 test_wrapper.py 来消除 python 代码内容的任何问题。

[joe@joeyoung.io libexec]# cat <<EOF >> test_wrapper.py
> import sys
>
> def main():
>         print "OK"
>         sys.exit(0)
>
> if __name__ == '__main__':
>         main()
> EOF
[joe@joeyoung.io libexec]# cat test_wrapper.py
import sys

def main():
        print "OK"
        sys.exit(0)

if __name__ == '__main__':
        main()
[joe@joeyoung.io libexec]# ls -al test_wrapper.py
-rw-r--r-- 1 joe joe 124 Aug  6 15:58 test_wrapper.py
[joe@joeyoung.io libexec]# chmod a+x test_wrapper.py
[joe@joeyoung.io libexec]# ls -al test_wrapper.py
-rwxr-xr-x 1 joe joe 124 Aug  6 15:58 test_wrapper.py
[joe@joeyoung.io libexec]# python test_wrapper.py
OK

"OK"说明输出没问题

[joe@joeyoung.io libexec]# echo $?
0

Return 0 的代码 表明 return 代码没问题。

最后让我们添加命令和服务定义,以便我们可以通过 Nagios Web 界面对其进行测试。

修改/usr/local/nagios/etc/objects/commands.cfg

注意: 我们只修改一个 commands.cfg 文件,这样我们就没有重复的命令定义来混淆 Nagios。我们暂时忽略 checkcommands.cfg

添加:

define command {
        command_name                    sh_test_wrapper
        command_line                    $USER1$/test_wrapper.sh
        register                        1
}
define command {
        command_name                    python_test_wrapper
        command_line                    /usr/bin/python $USER1$/test_wrapper.py
        register                        1
}

修改/usr/local/nagios/etc/objects/localhost.cfg

添加:

define service{
    use             local-service
    host_name           localhost
    service_description     sh test wrapper
    check_command               sh_test_wrapper
    notification_enabled        0
    register                        1
}
define service{
    use             local-service
    host_name           localhost
    service_description     python test wrapper
    check_command               python_test_wrapper
    notification_enabled        0
    register                        1
}

让我们验证配置文件

[joe@joeyoung.io libexec]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

并重启 Nagios。

[joe@joeyoung.io libexec]# service nagios restart

让我们看看这些非常基本的检查是否有效,看看我们是否可以进一步缩小问题范围。