我在使用 NRPE 时遇到了这个问题,到目前为止我在网上找到的所有东西似乎都指向我已经尝试过的东西。
# /usr/local/nagios/plugins/check_nrpe -H nrpeclient
给出
NRPE v2.12
正如预期的那样。
手动运行该命令(如“nrpeclient”上 nrpe.cfg 中所定义),给出预期的响应
nrpe.cfg:
command[check_openmanage]=/usr/lib/nagios/plugins/additional/check_openmanage -s -e -b ctrl_driver=0 bat_charge
"Expected response"
但是如果我尝试从 Nagios 服务器运行该命令,我会得到以下结果:
# /usr/local/nagios/plugins/check_nrpe -H comxps -c check_openmanage
NRPE: Unable to read output
有人能想到我可能在其他地方犯过这个错误吗?我在其他多台服务器上做过同样的事情,没有问题。我能想到的唯一区别是这个盒子是基于 RHEL 5 的,而其他的是基于 RHEL 4 的。
上面我测试过的这两点似乎是大多数人在遇到这个问题时所建议的。
我应该提一下,当我重新启动时,日志中出现了一个奇怪的错误nrpe
:
nrpe[14534]: Unable to open config file '/usr/local/nagios/etc/nrpe.cfg' for reading
nrpe[14534]: Continuing with errors...
nrpe[14535]: Starting up daemon
nrpe[14535]: Warning: Daemon is configured to accept command arguments from clients!
nrpe[14535]: Listening for connections on port 5666
nrpe[14535]: Allowing connections from: bodbck,combck,nam-bck
尽管如此,它只是读取该/usr/local/nagios/etc/nrpe.cfg
文件以获取其正在进一步讨论的内容。
答案1
您有权利问题。
将命令更改为:
command[check_openmanage]=sudo /usr/lib/nagios/plugins/additional/check_openmanage -s -e -b ctrl_driver=0 bat_charge
(添加 sudo)
然后,将 nagios-user 添加到 sudoers:
nagios ALL=(ALL) NOPASSWD:/usr/lib/nagios/plugins/additional/check_openmanage
或者您可以只对文件进行 chmod ...这也有效。
Defaults requiretty
如果您使用的是 CentOS、Red Hat、Scientific 或 Fedora,请确保在 sudoers 文件中禁用。
答案2
简短回答:如果你使用 Bash 插件,请确保你有一个舍邦说明应使用哪个解释器:#!/bin/bash
我在使用自己编写的 Nagios 插件时遇到了同样的问题。脚本在本地启动时按预期运行,即使以用户身份nagios
使用以下语句运行时也是如此:
$ sudo sudo -s -u nagios
$ /path/to/my/plugin.sh
STATUS: OK
但是从 Nagios3 服务器使用 NRPE 进行远程启动失败:
$ /usr/lib/nagios/plugins/check_nrpe -H my-nagios-client -c my_plugin
NRPE: Unable to read output
我最终通过添加一个解决了这个问题舍邦在我的脚本中,因为看起来通过 NRPE 运行脚本并没有使用与运行时相同的解释器sudo sudo -s -u nagios
。
答案3
就我而言,问题很简单 - 用户纳吉奥斯无法执行脚本。chmod 之后它开始工作了。不需要 Sudo。这甚至是邪恶的 :)
答案4
在我的例子中,只有一个插件失败了,其他几个插件都运行正常。结果发现是 LOCALE 问题。
该插件是,它在 的输出中check_mem.sh
执行了 grep 。但系统范围的 LOCALE 返回的是(德语) 而不是,因此所有收到的值都是空字符串。Mem
free
Speicher
Mem