Я хотел бы поделиться с вами способом отправки уведомлений из icinga2 в кеш через API.
Версия Icinga2 : 2.4.10-1
Версия кэша : 2.3.9
Прежде всего, вы должны знать, какой ID компонента вы хотите использовать (в моем случае, потому что вы можете обновить компонент по имени)
Чтобы получить идентификатор компонента, вы можете использовать команду curl:
curl --insecure --request GET --url https://URL/api/v1/components -H "X-Cachet-Token: TOKEN"
URL : URL-адрес вашей установки кэша
TOKEN : токен участника в Cachet
Создать команду в /etc/icinga2/conf.d/commands.conf
object NotificationCommand "cachet-incident-notification-v2" {
import "plugin-notification-command"
command = [ PluginDir + "/cachet-notification-v2.sh" ]
env = {
"SERVICESTATE" = "$service.state$"
}
}
Создать шаблон уведомления в /etc/icinga2/conf.d/templates.conf
template Notification "cachet-incident-notification-v2" {
command = "cachet-incident-notification-v2"
states = [ OK, Warning, Critical, Unknown ]
types = [ Problem, Acknowledgement, Recovery, Custom,
FlappingStart, FlappingEnd,
DowntimeStart, DowntimeEnd, DowntimeRemoved ]
/*
period = "24x7"
*/
interval = 0
}
Создать уведомление в /etc/icinga2/conf.d/notifications.conf
apply Notification "cachet-incident-notification-v2" to Service {
import "cachet-incident-notification-v2"
user_groups = host.vars.notification.pager.groups
assign where service.vars.cachetv2 == "1" && host.vars.cachetv2 == "1"
interval = 0 # Disable Re-notification
}
Добавьте переменную в службу проверки в /etc/icinga2/conf.d/service/your/service.conf
[...]
vars.cachetv2 = "1"
[...]
Добавьте переменную в файл конфигурации вашего хоста в /etc/icinga2/conf.d/hosts/your/host
[...]
vars.cachetv2 = "1"
[...]
Создайте скрипт в /usr/lib/nagios/plugins/cachet-notification-v2.sh
#!/bin/bash
# Some Constants
NOW="$(date +'%d/%m/%Y')"
CACHETAPI_URL="https://URL/api/v1/components/<ID DU COMPOSANT>"
CACHETAPI_TOKEN="TOKEN><"
# Map Notification states for icinga2
# OK - 1 operational
# Warning - 3 Partial outage
# Critical - 4 Major outage
# Unknown - 2 Performance issues
case "$SERVICESTATE" in
'OK')
COMPONENT_STATUS=1
;;
'WARNING')
COMPONENT_STATUS=3
;;
'CRITICAL')
COMPONENT_STATUS=4
;;
'UNKNOWN')
COMPONENT_STATUS=2
;;
esac
curl -X PUT -H "Content-Type: application/json;" -H "X-Cachet-Token: ${CACHETAPI_TOKEN}" -d '{"status": "'"${COMPONENT_STATUS}"'"}' ${CACHETAPI_URL} -k
PS : дать разрешение на выполнение сценария
Проверьте синтаксис и перезагрузите
/etc/init.d/icinga2 checkconfig && /etc/init.d/icinga2 reload
Результат:
Когда ваша проверка выдает « CRITICAL », статус в Cachet будет иметь ОСНОВНУЮ ВЫПУСК
Когда ваша проверка выдает « WARNING », статус в Cachet будет ЧАСТИЧНАЯ ВЫПУСК
Когда ваша проверка выдает « OK », статус в Cachet будет ОПЕРАЦИОННЫМ
Когда ваша проверка выдает « UNKNOWN », состояние в Cachet будет равно ЗАДЕРЖКА ИСПОЛНЕНИЯ
Надеюсь, это поможет.
Николас Б.