Ana makineniz "http_vhosts" özel özelliğini sözlük olarak tanımlar, ancak bu asla kullanılmaz (sözlüğü tanımlayan yinelenen kural ve yinelenen hizmet nesneleri için geçerli bir kural yoktur).
Bunun yerine hizmet uygulama kuralı (for döngüsü olmadan) yalnızca "httpS" hizmetini uygular. Kazara ana bilgisayar özel özniteliği "http_ssl" ayarlanır - dize olarak bir sayı yerine true olarak boolean olarak okunmalıdır (bu her zaman doğrudur).
Muhtemelen birden fazla URI'yi kontrol etmek istiyorsunuz, sadece / değil.
Teklifim (2 çözüm):
1) Hizmet uygulama kuralınızı düzeltin ve http_ * özel özniteliklerini ana makine nesne tanımınızdan kaldırın. Bunun yerine bunları hizmet uygulama kuralına ekleyin:
apply Service "httpS" {
import "generic-service"
check_command = "http"
vars.http_uri = "/"
vars.http_ssl = true
assign where host.name == "mailserver-01"
}
Http CheckCommand için komut parametreleri olarak kullanılan tüm özel öznitelikleri aşağıdaki belgelerde bulabilirsiniz: http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/plugin-check-commands#plugin-check- komut http
2) Bunun yerine kural için bir hizmet uygulaması kullanın ve ana bilgisayarda tanımlanan http_vhosts sözlüğü üzerinde döngü yapın.
vars.http_vhosts["https /"] = {
http_ssl = true
http_uri = "/"
}
Buradaki adlandırmaya dikkat edin: "https /" oluşturulan hizmet adı olacaktır. http_ssl ve http_uri, http CheckCommand tarafından istenen özel özniteliklerle aynı adlardır.
Sihir kural için başvur içinde gerçekleşir: Sözlük anahtarı hizmet adı olacaktır. Sözlük değeri iç içe bir sözlüktür ve anahtar olarak http_uri ve http_ssl içerir. "Config" olarak adlandırılan örnekte. Bu yapılandırma sözlüğü "vars" özniteliğiyle tam olarak aynı yapıya sahiptir, bu yüzden tanım için geçerli olan hizmetin içine ekleyebiliriz.
apply Service for (servicename => config in host.vars.http_vhosts) {
import "generic-service"
check_command = "http"
vars += config
}
İcinga2 daemon -C'yi kullanarak yapılandırmayı doğrulayın ve ardından hangi özel özniteliklerin oluşturulduğunu görmek için oluşturulan hizmet nesnelerine bakın (icinga2 nesne listesi).
İyi bir şey - tanımlanmış http_vhosts özel özniteliğine sahip tüm ana bilgisayarlar bu hizmet nesnelerini oluşturur, bir extea "atama nerede" ifadesine gerek yoktur (belki de istisnalar için nerede yoksaymayı ekleyin). Doğru strateji ile sadece bir kez kurallar için başvuruda bulunacaksınız ve gelecekte yalnızca eşleşen özel özellik sözlüğüne sahip yeni ana bilgisayarlar ekleyeceksiniz :-)
http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/monitoring-basics#using-apply-for
Her ne kadar çözüm 2), icinga 2 yapılandırma dili ve anahtar kelimeleri, değer türleri ve sihir hileleri hakkında ileri düzeyde bilgi gerektirir. Yine de, bu yöntemlerin ve en iyi uygulamaların, dosyaları benimseme ve değiştirme ile uzun vadeli bakımın azaltılmasına yardımcı olduğunu düşünüyoruz.
Ayrıca daha ileri gidebilir ve ana bilgisayar adına bağlı olarak farklı test grupları için if-else koşullarını kullanabilirsiniz. Veya örneğin zaman aralıklarına dayalı dinamik eşikleri tanımlamak için işlevleri kullanın.