В межах глобальних завдань по моніторингу випала змога ознайомитись з PagerDuty та налаштувати інтеграцію з системою моніторингу Zabbix. На даному етапі розглянемо тільки інтеграцію а ознайомлення та налаштування делегувань буде в окрземих публікаціях.
Як працюватиме інтеграція? Все відбувається за допомогою webhook та PagerDuty Event API v2. Використовується користувач в Zabbix для PagerDuty, через якого відбувається відправка сповіщень коли було знайдено пробему. Проте є й нюанси, так як це не повноцінна інтеграція ми не зможемо взаємодіяти через pagerduty з забіксом (закривати або aсk проблему) проте zabbix буде повідомляти нас про проблеми, підтвердження та їх вирішення й самостійно їх закривати як в Zabbix так PagerDuty.
Процес налаштуванян поділяється на два етапи:
- Етап1 – створення інтеграції в PagerDuty.
- Eтап2 – налаштування Zabbix.
Налаштування PagerDuty
Створення інтеграції
Потрібно залогінитись в PagerDuty та обрати пункт Service > Service Discovery:
З правого боку натискаємо на + New Service:
Перейшли до створення інтеграції. В полі Name* вказуємо назву (в моєму випадку це Zabbix) а в Description можемо дописати для чого ця інтеграція, далі натискаємо Next:
Обираємо Generate a new Escalation Policy, ящо до початку налаштування інтеграції Ви вже створили політику, то її можна обрати в пункт Select an existing Escalation Policy, натискаємо Next:
Обираємо Zabbix, далі натискаємо Create Service:
Інтеграцію створено:
Далі нам знадобиться токен, який ми будемо використовувати в zabbix media type. Для отримання токену натискаємо на інтеграцію, обираємо вкладку Integrations, розгортаємо її. З правого боку бачимо Integration Token:
Основну частину завершено, переходимо до налаштування з боку Zabbix.
Налаштування Zabbix
Для початку потрібно обрати версію Zabbix, для цього переходимо за посиланням тут та обираємо необхідну версію, в моєму випадку че версія 5.0:
Після чого завантажуємо шаблон, перейшовши за посиланям:
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/pagerduty?at=release/5.0
Створення глобального Macros
Administration > General в лівому кутку з`явиться список, в якому потрібно обрати Macros. Додаємо новий макро Macro:{$ZABBIX.URL} | Value: https://your_zabbix_url:
Створення Media Type для PagerDuty
Зараз будемо імпортувати завантажений шаблон, переходимо в Administration > Media Types > Import:
Обираємо завантажений файл, додаємо його, натискаємо Import:
Залишається додати Токен, який ми скопіювали після створення інтеграції в PagerDuty. В MediaType обираємо PagerDuty, шукаємо рядок з token, в нього додаємо токен та зберігаємо:
Створення користувача для PagerDuty сповіщень
Створюємо користувача (або можна використати вже існуючого), в моєму випадку це буде користувач inv, в Permission оберемо права admin:
Далі в media потрібно додати PagerDuty, тиснемо Add:
Після заповнення, натискаємо Update:
де:
- Type: обираємо PagerDuty (темплейт який ми додали);
- Send to: кому або куди будемо відправляти (для інформативності);
- Use if severity: при яких типав сповіщень використовувати нотифікацію;
Медіа додано, залишається зберегти, та перейти до екшенів, натискаємо Update:
Тепер потрібно обрати подію на яку буде спрацьовувати webhook. Переходимо в Configuration > Action, обираємо необхідний Action, обираємо вкладку Operations:
В моєму випадку з даним екшеном потрібно у всі три пункти Operations / Recovery operations / Update operations додати відправку в PagerDuty. Для цього по черзі в кожному з пунктів натискаємо Add:
де:
- Operation Type: обираємо Send Message;
- Send to Users: обираємо створеного користувача inv;
- Send only to: вказуємо PagerDuty;
Після додавання бачимо наступне:
Натискаємо Update та переходимо до перевірки сповіщень.
Перевірка
Для перевірки ми зупинемо на одному з серверів zabbix-agent та будемо спостерігати. Ось що бачимо через браузер:
трішки детальніше:
Після того як проблему буде вирішено, забікс відправить webhook, проблема автоматично закриється.
Розглянемо як відобрадається сповіщення в додатку:
Щож, інтеграцію налаштували, далі залишається створити графіки чергувань, налаштувати делегування та перевірити роботу дзвінків.