关闭 icinga2 中一台主机的检查

关闭 icinga2 中一台主机的检查

我正在尝试关闭 icinga2 设置中对一个主机的 http 检查。我是新手,只是在原地打转。

我正在使用标准安装,并且成功地在许多 Linux 卫星机器上运行,但有些机器上没有运行 Web 服务器,所以我想关闭 http 检查。

经过一番不确定的寻找后,我发现避免应用规则的常见陷阱它似乎可以用 vars.no_web_check 变量做我想做的事情,但是我尽力尝试却无法让它工作。

我已经将忽略行添加到 groups.conf 以进行 http 测试,但是当我在repository.d/hosts/ 中设置主机配置时,如下所示

object Host "kvm3.infoteq.com.au" {
 import "satellite-host"
 check_command = "cluster-zone"
 vars.no_web_check = true
 }
}

当我尝试重新加载 icinga2 时出现错误,提示此配置有问题,错误:未使用计算的值。

groups.conf 文件中修改后的 http 节为

 object ServiceGroup "http" {
  display_name = "HTTP Checks"

  assign where match("http*", service.check_command)
  ignore where host.vars.no_web_check
}

我应该在这里添加这项检查吗?一定有更简单的方法可以做到这一点。

答案1

对于您的服务,我会尝试使用服务声明而不是服务组,例如:

apply Service "Interface " for (interface_name => interface_config in host.vars.interfaces){
        import "generic-service"
        check_command = "check_netint_w2012_byifname"
        vars.interface = interface_name
        vars.warning= "650000"
        vars.critical ="800000"    
        vars.snmp_communaute = host.vars.snmp_communaute    
        vars += interface_config
        assign where host.name in ["server1", "server2", "server3"]

}

此服务适用于所有在assign声明中有其姓名的主机。

您可以使用ignore来排除某些主机。它的语法是assign

答案2

您不能只vars.web_check = false在 groups.conf 中进行设置,然后再进行以下操作:

assign where host.vars.web_check

这将仅将此服务应用于仅将 web_check 设置为 true 的主机。我认为这也应该有效:

assign where match("http*", service.check_command) && host.vars.web_check

相关内容