作为IT项目的一部分,我与Nagios一起工作。 为了得到温度传感器的值,我创建了一个python插件,它将读取数据库中的值,并在屏幕上打印。
问题是,当我想监视基于此插件的服务时,它在CentreonWeb界面中显示为CRITICAL,并出现错误“(Return code 127 is out of bounds) plugin may be missing
”。
以下是我的安装摘要:
Nagios+NDOutils(+Centreon Web界面)安装在Debian 7.5上: 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)
”,问题不是源于代码。
让我们尝试构建test_wrapper.sh shell脚本,看看是否有一些更一般的问题,或者它是否只是与python隔离的。
“确定”显示输出正常。
返回代码显示返回代码正常。
现在让我们构建一个简单的test_wrapper.py来消除python代码内容的任何问题。
“确定”显示输出正常。
返回代码显示返回代码正常。
最后,让我们添加命令和服务定义,以便我们可以通过Nagios web接口对其进行测试。
修改
/usr/local/nagios/etc/objects/commands.cfg
注意:我们只修改一个
commands.cfg
文件,这样就不会有重复的命令定义来混淆Nagios。我们暂时忽略checkcommands.cfg
。添加:
修改
/usr/local/nagios/etc/objects/localhost.cfg
添加:
让我们验证配置文件
重新启动Nagios。
让我们看看这些非常基本的检查是否有效,看看我们能否进一步缩小问题的范围。
相关问题 更多 >
编程相关推荐