我在 LAN 上运行 Nagios Core 服务器。我在网络外部有 5 台 Windows 机器,我通过 5 个不同端口上的 5 个 ssh 隧道与它们通信,监听 5 个自定义 NSClient++ 应用程序。此配置下一切运行良好,但我注意到 check_nt MEMUSE 给出的是奇数,而实际上我们想要/需要的只是实际的物理内存。
经过大量挖掘,我发现了 check_nrpe,它看起来能给我我正在寻找的数据。
我在commands.cfg中输入了以下内容:
define command {
command_name CheckWindowsPhysicalMem
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -p 5666 -c CheckMEM -a MaxWarn=$ARG1$% MaxCrit=$ARG2$% ShowAll=long type=physical
}
我将以下内容放入我的 windows.cfg 中
define service{
use generic-service
host_name HOSTNAME
service_description Physical Memory
check_command CheckWindowsPhysicalMem!80!90
}
我重新启动了 nagios 和 nagios-nrpe-server,现在出现此错误:
CHECK_NRPE: Receive header underflow - only 0 bytes received (4 expected)
我不确定我在这里错过了什么,但它看起来像是一个依赖项或一个包。Google-fu 在这方面失败了。
答案1
1.测试NRPE连接
您可以通过 NRPE 测试 Windows 和 Nagios 之间的连接,如下所示:
./check_nrpe -H Server
I (0.4.3.143 2015-04-29) seem to be doing fine...
如果您没有向 check_nrpe 传递任何参数,服务器(Windows 客户端)将以其版本号作为响应。
2. 测试你的命令
在您的 Windows 客户端上,您可以使用在控制台中本地测试您的命令nscp test
。
如果您的命令返回良好的结果,您可以从 nagios 服务器进行测试,无需参数:
# ./check_nrpe -H Server -c alias_cpu
OK: CPU load is ok.|'total 5m'=1%;80;90 'total 1m'=1%;80;90 'total 5s'=2%;80;90
3. NRPE 论点
默认情况下,出于安全考虑,NRPE 不允许 Nagios 向远程客户端发送参数。因此,您必须在每个 Windows 站点的 nsclient.ini 中启用此功能。