【发布时间】:2015-08-06 09:46:10
【问题描述】:
作为 IT 项目的一部分,我与 Nagios 一起工作。 为了获取温度传感器的值,我创建了一个 python 插件,它将读取数据库中的值,并在屏幕上打印。
问题是当我想监控基于这个插件的服务时,在Centreon网页界面显示为CRITICAL,错误为“(Return code 127 is out of bounds) plugin may be missing”。
这里是我的安装总结:
在 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”,它将读取数据库中的值,并在屏幕上打印。在
/usr/local/nagios/libexec中添加了文件“cigne_python.py”在文件
/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 } 在 Centreon Web 界面中添加命令“
arduino_temp_sensor”(配置 -> 命令)在 Centreon Web 界面中添加服务“Arduino Temp”(配置 -> 服务)
检查文件权限
检查脚本是否可以执行
检查文件所有者
检查用户和组
在
/usr/local/nagios/etc/services.cfg,我的服务是为“localhost”创建的
我尝试使用一个插件版本来注释所有代码,并且只返回一个“sys.exit(2)”,问题不在于代码。
【问题讨论】:
-
/usr/local/nagios/libexec/cigne_plugin.py 的权限是什么。您可以在其上运行 ls -l 并发布结果吗?您的脚本是否调用了其他进程?您如何访问数据库?
-
-rwxr-xr-x 1 nagios nagios 157 Aug 6 11:58 cigne_plugin.py该脚本目前只执行sys.exit(0)。 -
而且只有 sys.exit(0) 它仍然给出返回码 127?您可以尝试像这样添加一个 shebang 作为 cigne_plugin.py 脚本的第一行:#!/usr/bin/python
-
是的,它仍然给出返回码127。我已经添加了一个shebang,和你说的一样:
#!/usr/bin/python,我也试过#!/usr/bin/env python,给我同样的结果。 -
我将添加更多故障排除作为答案,只是因为我需要更多空间。这不是目前的最终答案。
标签: python linux debian monitoring nagios