我正在尝试关闭 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