我在局域网上运行Nagios Core服务器。 我在networking外部有5台Windows机器,通过5个不同端口上的5个ssh隧道来监听5个自定义NSClient ++应用程序。 所有的这个configuration都运行良好,但是我注意到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)
我不知道我在这里错过了什么,但如果看起来像一个依赖或一个包。 谷歌 – 福在这一个失去了。
1.testingNRPE连接
你可以通过NRPEtesting你的窗口和Nagios之间的连接,如下所示:
./check_nrpe -H Server I (0.4.3.143 2015-04-29) seem to be doing fine...
如果你没有传递任何参数给你的check_nrpe,服务器(windows客户端)将用他的版本号来回应。
2.testing你的命令
在您的Windows客户端上,您可以使用nscp test在控制台上本地testing您的命令。
如果你的命令返回的结果很好,你可以从你的nagios服务器上进行testing,没有参数:
# ./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中启用它。