Як слідкувати за віддаленими “https” за допомогою Icinga версії 2?


9

У мене є icinga 2.3.11 на ubuntu 14.04.3 в VirtualBox. Я намагаюся відстежувати порт "https" 443, наприклад " https://mail.google.com " тут. Нижче наведено мій фрагмент з файлу host.conf за замовчуванням

object Host "mailserver-01" {
    import "generic-host"
    address = "74.125.136.17"    /* ip for mail.google.com */ 
    vars.os = "Linux"
    vars.http_vhosts["http"] = {
        http_uri = "/"
    }
    vars.http_ssl = "1"
    vars.http_warn_time = "5"
    vars.http_critical_time = "10"

    vars.notification["mail"] = {
        groups = [ "icingaadmins" ]
    }
}

Нижче наведено фрагмент з файлу services.conf за замовчуванням

apply Service "httpS" {
    import "generic-service"
    check_command = "http"
    assign where host.name == "mailserver-01"
}

Хоча інформаційна панель icingaweb2 показує нормально / зелений колір, я не впевнений, чи правильно це

Відповіді:


10

Ваш хост визначає спеціальний атрибут "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 для різних тимхокдів на основі імені хоста. Або використовуйте функції для визначення динамічних порогів на основі, наприклад, часових періодів.


2

Я гуглив і знайшов команду http в

/usr/share/icinga2/include/command-plugins.conf

У цьому прикладі я спробував відстежувати https://mail.google.com Нижче /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"
}

Ось як це виглядає на інформаційній панелі icingaweb2 введіть тут опис зображення

Приклад2

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"
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.