Váš hostitel definuje vlastní atribut "http_vhosts" jako slovník, ale ten se nikdy nepoužívá (neplatí pro iteraci definovanou pravidlem přes tento slovník a geberování objektů služeb).
Místo toho pravidlo pro aplikaci služby (bez smyčky for) pouze aplikuje službu "httpS". Náhodou je nastaven vlastní atribut hostitele "http_ssl" - měl by znít true jako boolean místo čísla jako řetězec (to je vždy pravda).
Pravděpodobně budete chtít zkontrolovat více URI, nejen /.
Můj návrh (2 řešení):
1) Opravte pravidlo použití služby a odeberte vlastní atributy http_* z definice hostitelského objektu. Místo toho je přidejte do pravidla použití služby:
apply Service "httpS" {
import "generic-service"
check_command = "http"
vars.http_uri = "/"
vars.http_ssl = true
assign where host.name == "mailserver-01"
}
Můžete najít všechny vlastní atributy používané jako parametry příkazu pro http CheckCommand v dokumentaci:http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/plugin-check-commands#plugin-check-command-http
2) Místo toho použijte službu Apply for rule a proveďte smyčku přes slovník http_vhosts definovaný na hostiteli.
vars.http_vhosts["https /"] = {
http_ssl = true
http_uri = "/"
}
Všimněte si pojmenování zde:„https /“ bude vygenerovaný název služby. http_ssl a http_uri jsou přesně stejné názvy jako požadované vlastní atributy podle http CheckCommand.
Kouzlo se odehrává uvnitř pravidla žádosti:Klíčem slovníku bude název služby. Hodnota slovníku je vnořený slovník a obsahuje klíče http_uri a http_ssl. V příkladu se nazývá "config". Tento konfigurační slovník má přesně stejnou strukturu jako atribut "vars", a proto jej můžeme přidat do žádosti o definici služby.
apply Service for (servicename => config in host.vars.http_vhosts) {
import "generic-service"
check_command = "http"
vars += config
}
Ověřte konfiguraci pomocí icinga2 daemon -C a poté se podívejte do vygenerovaných objektů služeb, abyste viděli, které uživatelské atributy jsou generovány (seznam objektů icinga2).
Jedna dobrá věc - všichni hostitelé, kteří mají definovaný uživatelský atribut http_vhosts, budou generovat tyto objekty služeb, není potřeba extea výraz "přiřadit kde" (možná spíše přidat ignorovat kde pro výjimky). Se správnou strategií napíšete žádost o pravidla pouze jednou a v budoucnu budete přidávat pouze nové hostitele s odpovídajícím slovníkem vlastních atributů :-)
http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/monitoring-basics#using-apply-for
Ačkoli řešení 2) vyžaduje pokročilé znalosti konfiguračního jazyka icinga 2 a jeho klíčových slov, typů hodnot a kouzelnických triků. Přesto si myslíme, že takové metody a osvědčené postupy pomáhají snížit dlouhodobou údržbu s přijímáním a změnou souborů.
Můžete také jít dále a použít podmínky if-else pro různé prahové hodnoty na základě názvu hostitele. Nebo použijte funkce k definování dynamických prahových hodnot, například na základě časových období.
Prohledal jsem a našel http příkaz v
/usr/share/icinga2/include/command-plugins.conf
V tomto příkladu jsem se pokusil sledovat https://mail.google.comNíže je /etc/icinga2/conf.d/hosts.conf
object Host "www.google.com" {
address = "74.125.136.84"
check_command = "http"
vars.http_vhost = "mail.google.com"
vars.http_ssl = "1"
}
Zde, jak to vypadá na řídicím panelu icingaweb2
Příklad2
object Host "secure.example.com" {
address = "14.28.83.22"
check_command = "http"
vars.http_vhosts["secure.example.com"] = {
http_uri = "/merchant/login.aspx"
}
vars.notification["mail"] = {
groups = [ "icingaadmins" ]
}
vars.http_ssl="1"
}