Как контролировать удаленный «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 показывает ОК / зеленый, я не уверен, что это правильный путь

satch_boogie
источник

Ответы:

10

Ваш хост определяет пользовательский атрибут "http_vhosts" как словарь, но он никогда не используется (нет применения для определения итерации правила для этого словаря и сервисных объектов geberating).

Вместо этого правило применения службы (без цикла for) просто применяет службу "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- команда-клиент

2) Вместо этого используйте службу apply для правила и переберите словарь http_vhosts, определенный на хосте.

vars.http_vhosts["https /"] = {
  http_ssl = true
  http_uri = "/"
}

Обратите внимание на название здесь: «https /» будет именем сгенерированной службы. http_ssl и http_uri - это те же имена, что и обязательные настраиваемые атрибуты http CheckCommand.

Волшебство происходит внутри правила apply for: ключом словаря будет имя службы. Значение словаря является вложенным словарем и содержит в качестве ключей 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 daemon -C, а затем посмотрите на созданные сервисные объекты, чтобы увидеть, какие настраиваемые атрибуты генерируются (список объектов icinga2).

Одна хорошая вещь - все хосты, для которых определен пользовательский атрибут http_vhosts, будут генерировать эти сервисные объекты, нет необходимости в выражении «назначать где» (возможно, вместо этого добавьте ignore where для исключений). При правильной стратегии вы напишите «Применить правила» только один раз, и в будущем добавите только новые хосты с соответствующим словарем атрибутов :-)

http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/monitoring-basics#using-apply-for

Хотя решение 2) требует дополнительных знаний о языке конфигурации icinga 2 и его ключевых словах, типах значений и фокусах. Тем не менее, мы думаем, что такие методы и лучшие практики помогают сократить длительное обслуживание с принятием и изменением файлов.

Вы также можете пойти дальше и использовать условия if-else для разных пороговых значений на основе имени хоста. Или используйте функции для определения динамических порогов, например, на основе периодов времени.

dnsmichi
источник
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 введите описание изображения здесь

Example2

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"
}
satch_boogie
источник