NRPE 无法读取输出,但为什么呢?

tic*_*use 27 nagios nrpe

我对 NRPE 有这个问题,到目前为止我在网上找到的所有东西似乎都指向我已经尝试过的东西。

# /usr/local/nagios/plugins/check_nrpe -H nrpeclient
Run Code Online (Sandbox Code Playgroud)

NRPE v2.12
Run Code Online (Sandbox Code Playgroud)

正如预期的那样。

手动运行命令(在“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"
Run Code Online (Sandbox Code Playgroud)

但是如果我尝试从 Nagios 服务器运行命令,我会得到以下信息:

# /usr/local/nagios/plugins/check_nrpe -H comxps -c check_openmanage
NRPE: Unable to read output
Run Code Online (Sandbox Code Playgroud)

谁能想到我可能在这方面犯了错误的其他任何地方?我在多台其他服务器上做了同样的事情,没有问题。我能想到的唯一区别是这个盒子是基于 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
Run Code Online (Sandbox Code Playgroud)

尽管如此,它显然是在阅读该/usr/local/nagios/etc/nrpe.cfg文件以进一步了解它所谈论的内容。

Bar*_*Vos 35

你有权利问题。

将命令更改为:

command[check_openmanage]=sudo /usr/lib/nagios/plugins/additional/check_openmanage -s -e -b ctrl_driver=0 bat_charge
Run Code Online (Sandbox Code Playgroud)

(添加须藤)

然后,将 nagios-user 添加到 sudoers:

nagios ALL=(ALL) NOPASSWD:/usr/lib/nagios/plugins/additional/check_openmanage
Run Code Online (Sandbox Code Playgroud)

或者你可以只是 chmod 文件......这也有效。

如果您使用 CentOS、Red Hat、Scientific 或 Fedora,请确保Defaults requiretty在 sudoers 文件中禁用。


Mic*_*lif 11

简短回答:如果您使用的是 Bash 插件,请确保您有一个说明应该使用哪个解释器的shebang#!/bin/bash


我自己编写的 Nagios 插件也面临同样的问题。该脚本在本地启动时按预期运行,即使nagios使用以下语句以用户身份运行:

$ sudo sudo -s -u nagios
$ /path/to/my/plugin.sh
STATUS: OK
Run Code Online (Sandbox Code Playgroud)

但是从 Nagios3 服务器使用 NRPE 进行远程启动是不成功的:

$ /usr/lib/nagios/plugins/check_nrpe -H my-nagios-client -c my_plugin
NRPE: Unable to read output
Run Code Online (Sandbox Code Playgroud)

我最终通过在我的脚本中添加一个shebang解决了这个问题,因为通过 NRPE 运行脚本似乎没有使用与运行sudo sudo -s -u nagios.

  • 惊人的答案!sudo -s -u nagios 让我了解了为什么 nagios 无法从特定插件返回输出。太感谢了! (2认同)

blu*_*zcz 6

就我而言,问题很简单 - 用户nagios无法执行脚本。chmod 后它开始工作。不需要须藤。它甚至是邪恶的:)


AXE*_*abs 5

check_nrpe 得到“NRPE:无法读取输出”,尽管检查在本地工作,因为我使用的插件在 SELinux 上不能很好地工作。禁用它并确保删除文件的上下文:

$ ls -l check_om_storage
-r-xr-xr--. 1 root nrpe 3808 Feb 27 17:54 check_om_chassis
$ setfattr -x security.selinux check_om_storage
$ ls -l check_om_chassis 
-r-xr-xr-- 1 root nrpe 3808 Feb 27 17:54 check_om_chassis
Run Code Online (Sandbox Code Playgroud)


小智 5

就我而言,只有一个插件失败,而其他几个插件工作正常。结果证明是LOCALE问题。

该插件是check_mem.sh并且它Memfree. 但是系统范围的 LOCALE 返回Speicher(德语)而不是Mem,因此所有接收到的值都是空字符串。

  • Rush,欢迎来到顺丰!在我看来,这是一个很好的第一个答案:简明扼要,它为这里已有的答案集合添加了一些新内容。来自我的 +1,我希望将来能从你那里读到更多这样的答案(我希望你能原谅我的小格式编辑)。 (2认同)