我正在尝试使用一个基本示例来设置 NRPE,作为部署它的第一步。为简单起见,我在本地运行 NRPE 和 Nagios。NRPE 和 Nagios 似乎都在运行,但使用 Nagios 的 check_nrpe 却莫名其妙地失败了。编辑:我使用的是 Nagios 4.1.1 版和 NRPE 2.15 版。
我认为 NRPE 正在运行,因为我可以手动运行 check_nrpe:
/s/l/n/nagios_instance ❯❯❯ libexec/check_nrpe -H 127.0.0.1 -p 5667 -c check_total_procs ⏎
PROCS CRITICAL: 536 processes | procs=536;150;200;0;
我认为 Nagios 正在运行(并提供了正确的参数),因为我已经用 python 编写了这个简单的检查,文件名为 check_hello_world.py,位于 libexec 目录中:
#!/usr/bin/env python
import sys
print str(sys.argv)
raise SystemExit, 2
我的 nagios 配置的相关行如下所示:
define host {
use linux-server
host_name yourhost
alias My first Apache server
address 127.0.0.1
}
define command {
command_name check_procs_nrpe
command_line $USER1$/check_hello_world.py –H "$HOSTADDRESS$" -p 5667 -c "check_total_procs"
#command_line $USER1$/check_nrpe –H "$HOSTADDRESS$" -p 5667 -c "check_total_procs"
}
define service {
use generic-service
host_name yourhost
service_description Check using the hello world plugin
check_command check_procs_nrpe
}
如您所见,我使用两个命令之一定义了 check_procs_nrpe 命令,要么是简单的 python 脚本,要么是用于从命令行检查 procs 的 nrpe 命令。当我使用 python 脚本时,几分钟内我就会收到一封包含以下内容的电子邮件:
Additional Info:
[/spare/local/nagios/nagios_instance/libexec/check_hello_world.py, –H, 127.0.0.1, -p, 5667, -c, check_total_procs]
这似乎表明 Nagios 工作正常,触发警报,发送电子邮件,并正确解析参数。当我将命令更改为使用 check_nrpe 并重新运行 Nagios 时,我收到一封电子邮件,其中包含以下文本:
Additional Info:
Incorrect command line arguments supplied
我真的不知道下一步该怎么做。我没有此机器的 root 权限,因此无法轻松重新配置 rsyslog 以尝试获取日志信息。很乐意根据要求提供更多信息。有什么想法吗?
答案1
总之,问题在于“-H”中的破折号实际上不是破折号。它是一个短破折号。如果你仔细寻找,你实际上可以在上面的文本中清楚地看到它。不幸的是,Source Code Pro(我在终端中使用的字体,因此在 vim 中使用)并没有真正区分破折号和短破折号。我重新提出了一个与此相关的问题,同时我正在寻找一种新字体(并将破折号区分添加到我的标准列表中)。