我有 Nagios 的工作实例,我想在其他机器上运行 Icinga2。Nagios 使用 NRPE,所以我也想使用它。
我在文件中有以下配置:
object Service "NRPE check load" {
import "generic-service"
host_name = "agrippina"
check_command = "nrpe-check-2arg"
vars.host = "agrippina.domain.net"
vars.check = "check_load"
vars.loads = "'10' '20'"
}
和
object CheckCommand "nrpe-check-2arg" {
import "plugin-check-command"
command = [PluginDir + "/check_nrpe" ]
arguments = {
"-H" = "$host$"
"-c" = "$check$"
"-a" = "$loads$"
}
}
当我手动发出命令时:
/usr/lib/nagios/plugins/check_nrpe -H agrippina.domain.net -c 'check_load' -a '10' '20'
我收到
确定 - 平均负载:0.98、1.39、3.79|load1=0.980;10.000;20.000;0;load5=1.390;10.000;20.000;0;load15=3.790;10.000;20.000;0;
Icinga2 日志:
CHECK_NRPE: Received 0 bytes from daemon. Check the remote server logs for error messages.
我应该在哪里查找该消息?
自从我手动运行此检查并且它可以工作以来,如何在 Icinga2 中修复它?
答案1
更改vars.loads = "'10' '20'"
为,vars.loads = "10!20"
因为 NRPE 无法按照您在对象服务中声明的方式读取参数。
答案2
我不会为多种用例创建自定义 CheckCommand 定义。我们致力于让 CheckCommand 对象在开发周期中更具可重用性,而您将获得一件事 - 可选参数和条件参数。
http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/monitoring-basics#command-arguments
此外,icinga2 已经附带了“nrpe”插件检查命令定义,还允许您添加多个附加参数 -a) 作为数组传递。
你的例子:
vars.nrpe_arguments = [ 10, 20 ]
最好这样做,如果您有更多的 CheckCommand 定义要分享,请将它们发送到上游 - 这肯定会有所帮助,不要关心 CheckCommand 定义,而只关心主机/服务及其用作命令参数的自定义属性:)
https://wiki.icinga.org/display/community/Contribute+Icinga+2+ITL+Plugin+Check+Command+Definitions