Можно ли запустить скрипт, когда на Icinga2 хосте есть критический сервис? - PullRequest
0 голосов
/ 11 октября 2018

Допустим, на данном хосте FooHost работает Apache2.Icinga2 запускает проверку с помощью команды ssh и обнаруживает, что Apache2 не запущен, что вызывает критическое предупреждение.

Возможно ли заставить Icinga2 выполнить сценарий для этого события?В этом примере я хотел бы написать сценарий, который выполняет удаленное выполнение SSH systemctl restart apache2.

В качестве альтернативы мы могли бы написать сторожевой сценарий, который можно развернуть на all серверы, но гораздо больше смысла записывать его в окно Icinga2 и использовать ssh remote execute, потому что это позволяет централизованное управление.

Я не вижу причин, чтобы инженерам входить в систему, чтобы это исправить, если только этоперезагрузка также не удалась.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Вы можете использовать Команды событий (как обработчики событий в Icinga 1.x / Nagios) для достижения этой цели.

В документации показан следующий пример, в котором используется пользовательский shell скрипт для выполнения операций перезапуска:

object EventCommand "restart_service" {
  command = [ PluginDir + "/restart_service" ]

  arguments = {
    "-s" = "$service.state$"
    "-t" = "$service.state_type$"
    "-a" = "$service.check_attempt$"
    "-S" = "$restart_service$"
  }

  vars.restart_service = "$procs_command$"
}

object Service "Process httpd" {
  check_command = "procs"
  event_command = "restart_service"
  max_check_attempts = 4

  host_name = "icinga2-client1.localdomain"
  command_endpoint = "icinga2-client1.localdomain"

  vars.procs_command = "httpd"
  vars.procs_warning = "1:10"
  vars.procs_critical = "1:"
}
0 голосов
/ 12 ноября 2018

насколько я знаю, это невозможно, но вы можете использовать команду nagios nrpe или cronjob , которая является командой выполнения, подобной этой

pgrep apache2 || /bin/systemctl restart apache2 > /dev/null 2>&1

или

/bin/systemctl status apache2 || /bin/systemctl restart apache2

, что означает, что если служба apache2 не запущена, она будет перезапущена.

...