我试图通过Icinga2 check_nrpe插件监视虚拟服务器上的一个小型服务。 我已经正确设置,因为我可以做到以下几点:
/usr/lib/nagios/plugins/check_nrpe -H remote-server-ip ,我得到NRPE v2.15 /usr/lib/nagios/plugins/check_nrpe -H main-server-ip ,我得到了相同的结果。 /usr/lib/nagios/plugins/check_nrpe -H remote-server-ip -c check_load我得到WARNING - load average: 5.85, 5.67, 5.55|load1=5.850;15.000;30.000;0; load5=5.670;10.000;25.000;0; load15=5.550;5.000;20.000;0; WARNING - load average: 5.85, 5.67, 5.55|load1=5.850;15.000;30.000;0; load5=5.670;10.000;25.000;0; load15=5.550;5.000;20.000;0; 现在我正在尝试使用check_nrpe在远程计算机上运行一个放在/usr/local/lib/ check_remote_server.py的小脚本。 为此我做了以下几点:
在/etc/icinga2/conf.d/test.conf
object Service "Test Check" { import "generic-service" host_name = "remote-server-ip" check_command = "check_nrpe" vars.ARG1 = "check_remote_server" } object Host "remote-server-ip" { import "linux-server" address = "xx.xx.xx.xx" groups = [ "test" ] }
并在/etc/nagios/nrpe.cfg
command[check_remote_server]=/usr/local/lib/check_remote_server.py -w 2 -c 1
然而,当我重新启动icinga2并检查状态,我得到各种语法错误,编译错误等错误,只有当我回滚我所做的所有更改后消失。 我不知道如何通过check_nrpe传递参数的生活。
任何人都可以给我一个简单的问题,如何通过check_nrpeconfiguration自定义检查?
编辑:使用icinga标签,而不是icinga2,因为没有icinga2标签。
编辑2:我刚刚从命令行/usr/lib/nagios/plugins/check_nrpe -H remote-ip -c check_disk -a "-w 20% -c 10% CHECK_NRPE: Received 0 bytes from daemon. Check the remote server logs for error messages. /usr/lib/nagios/plugins/check_nrpe -H remote-ip -c check_disk -a "-w 20% -c 10%和错误CHECK_NRPE: Received 0 bytes from daemon. Check the remote server logs for error messages.
机会是你的命令行testingcheck_disk返回“从守护进程接收0字节”的原因是因为你没有:
dont_blame_nrpe=1
设置在您的nrpe.cfg文件中,因为这是允许nrpe客户端传递任何参数所必需的。 由于允许任意参数进行nrpetesting存在安全隐患,默认情况下它是不允许的。
你不需要启用它来testing你的自定义检查脚本,因为你已经在主机的nrpe.cfg中定义了它。 当您通过icinga服务器testing自定义检查命令时会发生什么
/usr/lib/nagios/plugins/check_nrpe -H remote-ip -c check_remote_server
?
排除与nrpe和你的检查脚本有关的任何问题,但也要看看你的服务和命令定义。 看看你的configuration片段,我看到的第一个问题是“对象服务”这一行 – 这应该是“应用服务”。 另外,确保你有一个为NRPE定义的命令定义。 尝试像这样开始:
object HostGroup "test" { display_name = "Test Group" assign where host.name == "hostname.com" check_command = "dummy" } object Host "hostname.com" { import "generic-host" address = "xx.xx.xx.xx" } object CheckCommand "check_nrpe" { import "plugin-check-command" command = [PluginDir + "/check_nrpe" ] # Make sure this points to check_nrpe binary arguments = { "-H" = "$host$" "-c" = "$ARG1$" } } apply Service "Test Check" { import "generic-service" check_command = "check_nrpe" vars.ARG1 = "check_remote_server" assign where "test" in host.groups }
有些相关,但是因为你使用的是icinga2,为什么不只是沟通nrpe并使用icinga2 本地客户端 ? 这非常灵活,可以说比使用nrpe更安全。
看来你的远程服务器是正确的,你的nrpe.cfg中有相关的行
command[check_remote_server]=/usr/local/lib/check_remote_server.py -w 2 -c 1
如果你的脚本实际上输出了Nagios识别的数据(我对Nagios是否抱怨语法错误持怀疑态度,请确保分号的数量与之匹配!)
那么在你的主人身上,应该如此简单
check_nrpe!check_remote_server