当我尝试执行以下命令时,主服务器中出现此 check_nrpe ssl 无法完成握手错误。
/usr/local/nagios/libexec/check_nrpe -H 10.192.122.234
10.192.122.234 --> nagios client machine
但是当我使用
/usr/local/nagios/libexec/check_nrpe -H localhost
它给出了正确的结果,即 nrpe 版本,即使不是 localhost,如果我使用主服务器 IP,它也会给我 nrpe 版本作为结果。
当我从 nagios 客户端机器执行相同的命令时,它再次给我 nrpe 版本。主服务器 IP 位于 nrpe.cfg 文件中。有关信息,主 IP 和客户端 IP 均配置为 eth1。
那么问题出在哪里?为什么我的主服务器无法在客户端机器上运行此命令?
答案1
当你收到此错误时
CHECK_NRPE: Error - Could not complete SSL handshake.
这意味着nrpe服务器没有配置允许该请求。
你需要从 nrpe 配置文件中允许请求者的 IP 地址/etc/nagios/nrpe.cfg
。你应该在以下行中包含该 IP:
allowed_hosts=127.0.0.1,your.ip.goes.here
更改配置后,不要忘记重新加载/重新启动 nrpe 服务器。
答案2
基本上,没有必要从 Nagios 客户端运行 check_nrpe,因为首先没有理由将其安装在 Nagios 客户端机器上。
check_nrpe插件应该始终从Nagios服务器运行。
除了 Khaled 的回答之外,我还会检查 NRPE 是否配置为独立守护进程或配置为由 Xinetd 启动。
如果它配置为通过 xinetd 运行(你可以检查下是否有一个名为 nrpe 的文件/etc/xientd.d
),它将看起来像这样:
service nrpe
{
flags = REUSE
type = UNLISTED
port = 5666
socket_type = stream
wait = no
user = nagios
group = nagios
server = /usr/sbin/nrpe
server_args = -c /etc/nagios/nrpe.cfg --inetd
log_on_failure += USERID
disable = no
only_from = 127.0.0.1 nagios01.company.com 10.X.X.30
}
确保在“only_from”行中包含您的 Nagios 服务器 IP 或主机名,并确保值以空格分隔,而不是像文件中那样以逗号分隔/etc/nrpe/nrpe.cfg
。
我要检查的另一件事是 Nagios 服务器是否能够通过 NRPE 端口 telnet 连接 Nagios 客户端。
默认端口是 5666,因此您应该从 Nagios 服务器运行以下命令:
telnet nagios_server 5666
输出应如下所示:
[root@nagios01 ~]# telnet do01.company.com 5666
Trying 10.X.X.30...
Connected to do01.company.com.
Escape character is '^]'.
如果您无法从 Nagios 服务器 telnet 到 Nagios 客户端,我会从那里开始查找。
有一份我解决 NRPE 相关问题时经常使用的官方文档,请查看: Nagios 官方文档