为主机配置多个 HTTP 检查的最佳做法是什么?
我知道有一种“应用”方法:
apply Service "http" for (http_vhost => config in host.vars.vhosts) {
...
}
但是我也需要“http_uri”值?!
如何通过常规配置文件执行此操作以及如何通过 Director 执行此操作?我必须在哪里以及如何修改模板才能将多个 HTTP 检查链接到特定主机?
答案1
我不使用 director,但我可以告诉你如何在普通代码中做到这一点。基本上我会创建一些字典/列表,正如你所说(在不同的范围内)。你必须在那里放置变量 - 那些你想更改的变量(例如 URL)。
因此,您可以用数据定义一个变量。它可以位于主机下,也可以在全局范围内创建它。
globals.http_urls = [ "/uril1", "/url2" ]
或者
object Host "testhost" {
host.address = 123.123.123.123
vars.http_urls = [ "/url1", "/url2" ]
}
然后你可以迭代该变量
apply Service "http-url" for (url in globals.http_url) {
command = http
# ... other http check variables ...
vars.http_url = url
# ... other variables ...
assign where host.name == "testhost"
}
您还可以遍历字典,它的工作原理如下:
globals.testdict = {
"server1" : "testdict",
"server2" : "testweb",
etc..
}
只需使用键 => 值格式定义
apply Service "http-url" for (server => url in globals.testdict) {
command = http
display_name = "http check " + server
vars.http_url = url
.. etc
assign where host.name == testserver
}
答案2
我并不是 Icinga 文档的忠实粉丝,但是它对如何在 Director 中做到这一点进行了很好的解释。
首先,您需要创建一个数组字段,如下所述:https://icinga.com/docs/icinga-director/latest/doc/14-Fields-example-interfaces-array/
然后您需要创建一个服务应用规则并为您的数组字段添加申请,如下所述:https://icinga.com/docs/icinga-director/latest/doc/15-Service-apply-for-example/
关于你的问题
但是我也需要“http_uri”值?!
那要看情况。如果你保留它,则检查的 uri 将是/
。我不确定是否可以check_http
为http_uri
和配置不同的值http_vhost
。
让我很困惑的是,http_uri
的参数check_http
只是path
URI 的组成部分。如果你尝试使用完整的 URI,就会发生奇怪的事情。