В 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"
}]
}