Ваш хост визначає спеціальний атрибут "http_vhosts" як словник, але він ніколи не використовується (не застосовується для визначеного правилом ітерація над цим словником та генерування об'єктів обслуговування).
Натомість правило застосувати сервіс (без циклу) просто застосовує послугу "httpS". Випадково встановлено спеціальний атрибут хоста "http_ssl" - він повинен читати true як булевий, а не число як рядок (це завжди так).
Напевно, ви хочете перевірити кілька URI, не тільки /.
Моя пропозиція (2 рішення):
1) Зафіксуйте правило застосування служби та видаліть користувацькі атрибути http_ * з визначення хост-об’єкта. Замість цього додайте їх до правила застосування служби:
apply Service "httpS" {
import "generic-service"
check_command = "http"
vars.http_uri = "/"
vars.http_ssl = true
assign where host.name == "mailserver-01"
}
Ви можете знайти всі власні атрибути, що використовуються як параметри команди для http CheckCommand, у документації: http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/plugin-check-commands#plugin-check- команда-http
2) Використовуйте службовий застосунок замість правила та переведіть курсор на словник http_vhosts, визначений у хоста.
vars.http_vhosts["https /"] = {
http_ssl = true
http_uri = "/"
}
Зверніть увагу на найменування тут: "https /" буде згенеровано ім'я служби. http_ssl та http_uri - це точно такі ж імена, що і необхідні спеціальні атрибути http CheckCommand.
Магія відбувається всередині застосунку для правила: Ключ словника буде назвою служби. Значення словника є вкладеним словником і містить http_uri та http_ssl як ключі. У прикладі, який називається "config". Цей словник конфігурації має таку саму структуру, що і атрибут "vars", тому ми можемо просто додати його всередині сервісу, застосувати для визначення.
apply Service for (servicename => config in host.vars.http_vhosts) {
import "generic-service"
check_command = "http"
vars += config
}
Перевірте конфігурацію за допомогою демона icinga2 -C, а потім загляньте в згенеровані сервісні об’єкти, щоб побачити, які спеціальні атрибути генеруються (список об’єктів icinga2).
Хороша річ - всі хости, у яких визначений спеціальний атрибут http_vhosts, будуть генерувати ці сервісні об’єкти, немає необхідності в виразі extea "призначити де" (можливо, краще додавати ігнорувати, де є винятки). За допомогою правильної стратегії ви напишете заявку на правила лише один раз, а в майбутньому додасте лише нові хости зі відповідним словником атрибутів :-)
http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/monitoring-basics#using-apply-for
Хоча рішення 2) вимагає розширених знань про мову конфігурації icinga 2 та її ключові слова, типи значень та магічні трюки. Однак ми вважаємо, що такі методи та найкраща практика допомагають скоротити довгострокове обслуговування із прийняттям та зміною файлів.
Ви також можете піти далі та використовувати умови if-else для різних тимхокдів на основі імені хоста. Або використовуйте функції для визначення динамічних порогів на основі, наприклад, часових періодів.