Nagios / Centreon错误:返回代码127超出范围:插件可能丢失

时间:2015-08-06 09:46:10

标签: python linux debian monitoring nagios

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

问题在于,当我想基于此插件监控服务时,它在Centreon网络界面中显示为 CRITICAL ,错误为" (Return code 127 is out of bounds) plugin may be missing&#34 ;

以下是我的安装摘要:

  • 在Debian 7.5上安装Nagios + NDOutils(+ Centreon Web界面): http://fr.scribd.com/doc/239973292/1-Installation-Manuelle-de-Nagios-Centreon-Debian#scribd

  • 我创建了一个python插件" cigne_plugin.py"将读取数据库中的值,并在屏幕上打印。

  • 添加了文件" cigne_python.py"在/usr/local/nagios/libexec

  • 在文件/usr/local/nagios/etc/resource.cfg中,$USER1$上定义了/usr/local/nagios/libexec

  • /usr/local/nagios/etc/checkcommands.cfg中,我添加了以下几行:

    define command{
        command_name        arduino_temp_sensor
        command_line        $USER1$/cigne_plugin.py
    }
    
  • /usr/local/nagios/etc/objects/commands.cfg中,我添加了这一行:

    define command{
        command_name        arduino_temp_sensor
        command_line        $USER1$/cigne_plugin.py
    }
    
  • /usr/local/nagios/etc/objects/localhost.cfg

    define service{
        use             local-service
        host_name           localhost
        service_description     Arduino Temp
        check_command               arduino_temp_sensor
        notification_enabled        0
    }
    
  • 添加命令" arduino_temp_sensor"在Centreon Web界面(配置 - >命令)

  • 添加服务" Arduino Temp"在Centreon Web界面(配置 - >服务)

  • 检查文件权限

  • 检查脚本是否可以执行

  • 检查文件所有者

  • 检查用户和群组

  • /usr/local/nagios/etc/services.cfg中,我的服务是为" localhost"

  • 创建的

我尝试使用插件版本评论所有代码,并且仅返回" sys.exit(2)",问题不在代码中。

1 个答案:

答案 0 :(得分:1)

让我们尝试构建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

“确定”表示输出正常。

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

返回代码表示返回代码正常。

现在让我们构建一个简单的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

“确定”表示输出正常。

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

返回代码表示返回代码正常。

最后,让我们添加命令和服务定义,以便我们可以通过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

让我们看看这些非常基本的检查是否有效,看看我们是否能够更多地缩小问题范围。