我正在尝试让Nagios执行自定义java命令,但我总是得到错误126。
[1360324906] Warning: Return code of 126 for check of service 'Java Process Test' on host 'localhost' was out of bounds.Make sure the plugin you're trying to run is executable.
现在我已经检查了一些东西,但由于我是新手,我可能错过了一些东西。 这里几乎没有关于环境的信息:
-rwxr-xr-x. 1 root root 2938 Aug 17 15:39 check_wave
drwxr-xr-x. 2 root root 4096 Jan 13 15:08 eventhandlers
drwxr-xr-x. 2 root root 4096 Feb 7 17:22 jars
-rwxr-xr-x. 1 root root 38696 Aug 17 15:39 negate
-rwxr-xr-x. 1 root root 886 Feb 8 12:47 test_java_plugin.sh
test_java_plugin.sh是我的测试脚本,“jars”是jar所在的当前dir
脚本是这样的:
#!/bin/bash
#This will get the output of process
output=$(/usr/java/latest/bin/java -cp .:/usr/lib64/nagios/plugins/jars/SimpleNagiosPlugin.jar it.nagios.SimpleTest)
#This will catch the result returned by last process that is our java command
java_result=$?
echo "$java_result: $output"
exit $java_result
并且在控制台上手动启动时工作正常
[root@bw plugins]# ./test_java_plugin.sh
0: This is an OK message
忘记添加命令定义:
# 'test_java_plugin' command definition
define command{
command_name test_java_plugin
command_line $USER1$/test_java_plugin.sh
}
同样根据请求发表评论我还添加了我的测试类的当前java代码
public static void main(String[] args) {
System.out.println("This is an OK message");
System.exit(0);
}
刚刚从shell中启动命令0:
[root@bw plugins]# /usr/java/latest/bin/java -cp .:/usr/lib64/nagios/plugins/jars/SimpleNagiosPlugin.jar it.nagios.SimpleTest
This is an OK message
[root@bw plugins]# echo $?
0
我还应该检查什么来确定这里出了什么问题?
答案 0 :(得分:3)
我遇到了类似的问题,发现SELinux阻止了我。可以在/var/log/audit/audit.log
中查看相同的内容如果nagios_t / nagios_system_plugin_t被拒绝错误,请使用以下命令将它们添加到selinux的许可列表中,而不是将其完全关闭
<div class="row">
<div class="col-md-12">
<div class="form-group">
<div class="col-md-2">
<label>Practical Course:</label>
<input id="check1" type="checkbox" class="box">
</div>
<div class="col-md-4" id="box" style="display: none;">
<input type="number" name="practical1" class="form-control">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="form-group">
<div class="col-md-2">
<label>Practical Course:</label>
<input id="check2" type="checkbox" class="box2">
</div>
<div class="col-md-4" id="box2" style="display: none;">
<input type="number" name="practical2" class="form-control">
</div>
</div>
</div>
</div>
答案 1 :(得分:1)
你应该尝试运行test_java_plugin.sh作为nagios用户,你可以给nagios一个shell(临时)。考虑到根环境与nagios环境不同。将test_java_plugin.sh作为nagios运行时,可以添加&#34; env&gt; env_log_file&#34;看看运行期间的环境是什么。
祝你好运。答案 2 :(得分:1)
错误126表示已找到插件但不可执行。
你可以尝试两件事。 尝试以nagios用户身份运行插件并检查错误。
或
这确实解决了我遇到的一个问题。试试看。希望它可以工作
/bin.bash -l -c "/#{path to plugin}/test_java_plugin.sh"