我正在尝试配置 Nagios 命令,以便使用 NRPE 插件检查远程 Windows 主机上的物理内存状态。我在 Ubuntu Server v14.10 上使用 Nagios v3.0.6,以及最新稳定版 NSClient++ 0.4.3。以下是配置文件中的片段:
define command {
command_name check_ph_mem
command_line /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -p 5666 -c CheckMEM -a MaxWarn=$ARG1$% MaxCrit=$ARG2$% ShowAl$
}
和
define service{
host_name remote-win-host
service_description Check Memory NRPE
check_command check_ph_mem
use generic-service
}
Nagios 无法从此命令中检索任何信息,因为当我执行
/usr/lib/nagios/plugins/check_nrpe -H 192.168.1.150
它返回以下错误:
CHECK_NRPE: Error - Could not complete SSL handshake.
我已尝试按C:\Program Files\NSClient++\nsclient.ini
以下方式重新配置部分内容:
[/settings/NRPE/server]
allow arguments = true
allowed hosts = 192.168.1.15
port = 5666
但它返回了相同的错误。我已经阅读了数十个类似的主题并尝试了不同的建议,但我仍然遇到相同的问题。
您知道如何修复这个问题吗?
答案1
如果您在 Windows 主机上使用 NSCP-0.4.3.x(而不是 NSCP-0.4.2.x),则基于证书的身份验证将成为默认身份验证方法。这就是您的检查不起作用的原因。要解决此问题,您需要将以下内容添加到您的配置中:
[/settings/NRPE/server]
insecure = true
之后您需要重新启动 NSClient++ 服务。更多信息请参见这里(6.1 什么是不安全模式)
答案2
就我而言,我必须添加以下内容:
; ALLOW INSECURE CHIPHERS and ENCRYPTION - Only enable this if you are using legacy check_nrpe client.
接下来的两行:
insecure = true
allow arguments = true
并更改如下:
; VERIFY MODE - Comma separated list of verification flags to set on the SSL socket
从
verify mode = peer-cert
到
verify mode = none
答案3
使用 NSClient++ 0.5.2.39 和 check_nrpe 3.2.1,以下是对我有用的:
在Linux机器上生成DH密钥(需要很长时间)
openssl dhparam -C 2048 2> /dev/null|sed -n '/BEGIN/,/END/p'
将你的 DH 密钥粘贴到新创建的文件中
C:\Program Files\NSClient++\security\nrpe_dh_2048.pem
编辑
C:\Program Files\NSClient++\nsclient.ini
:[/settings/NRPE/server] dh = ${certificate-path}/nrpe_dh_2048.pem
重新启动 NSClient++ 服务:
net stop nscp && net start nscp
答案4
编辑您的 nsclient.ini 文件并按如下所示设置参数,它对我来说有效:
[/settings/NRPE/server]
allow arguments = 1
allow nasty_meta chars = 1
allowed hosts = 10.10.83.94,127.0.0.1
port = 5666
use SSL = 1
ssl options = no-sslv2,no-sslv3
verify mode = none
insecure = true