Nagios:尝试运行自定义命令返回126

时间:2013-02-08 12:10:05

标签: nagios

我正在尝试让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

我还应该检查什么来确定这里出了什么问题?

3 个答案:

答案 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>&nbsp;&nbsp;
        <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>&nbsp;&nbsp;
        <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"