Назад | Перейти на главную страницу

Отключение определенных уведомлений Icinga 2 по HTTP

В Nagios Core можно отключить уведомления для определенной службы или хоста через веб-интерфейс. Это простой веб-запрос, который мы также можем создать в скрипте / инструменте командной строки.

Этот соединитель CGI идеален в случаях, когда нам нужно отключить уведомления для хостов, которые перезагружаются вручную, когда обновляются службы или код повторно развертывается с помощью автоматических сценариев и т. Д.

Недавно мы думали о переходе на Icinga 2. Из его веб-интерфейса (удачно названного Icinga Web) можно сделать то же самое. Есть только одна проблема; Поскольку в Icinga есть защита от CSRF, это невозможно сделать простым способом, эмулируя веб-запросы Icinga.

Есть ли способ сделать это через какой-то API (REST или иначе)? До сих пор мои поиски не нашли ничего, кроме спецификаций старого интерфейса CGI, который, похоже, не доступен в новом Icinga Web, ссылка: http://docs.icinga.org/latest/en/extcommands2.html

РЕДАКТИРОВАТЬ: Внимательно прочитав предоставленную ссылку, я заметил, что это дает нам командный файл, позволяющий вставлять команды как линейный носитель. Тем не менее, это по-прежнему вызывает у нас некоторые проблемы (одной из них является параллелизм).

По-видимому, в Icinga2 есть функция под названием «Livestatus», которая позволяет пользователю отправлять extcommands (http://docs.icinga.org/latest/en/extcommands2.html) через TCP-соединение. Все, что вам нужно сделать, это префикс команды с COMMAND.

Ты можешь использовать Icinga2 API для изменения конфигурации Icinga 2 и отправки действий в ядро ​​Icinga2. Фактически, текущий icingaweb2 (Icinga 2.8.1) предпочитает API.

Например, чтобы отключить уведомления на сервисе icinga.example!ping4, используйте:

curl -k -s -XPOST -u root:icinga \
   'https://localhost:5665/v1/objects/services/icinga.example!ping4' \
   -d '{"attrs": {"enable_notifications": false}}' \
   -H 'Accept: application/json' | python -m json.tool

куда root:icinga твой ApiUser имя и пароль.

{"results": [{
        "code": 200.0,
        "name": "icinga.example!ping4",
        "status": "Attributes updated.",
        "type": "Service"
    }]
}