Перейти до вмісту
На сайт

Сповіщення та інциденти

Правила сповіщень стежать за трафіком одного проєкту й повідомляють потрібних людей, коли він перетинає заданий вами поріг.

  1. Відкрийте сторінку Сповіщення проєкту й створіть правило.
  2. Виберіть умову й заповніть те, що вона просить: поріг і вікно для більшості, ендпоінт, за яким стежити, для CONSECUTIVE_FAILURES, лише вікно для NO_TRAFFIC.
  3. Виберіть важливість і канал та заповніть налаштування каналу.
  4. Збережіть. Типово правила перевіряються щохвилини (ALERTS_EVALUATION_CRON).
Умова Спрацьовує, коли
FAILURE_RATE Частка невдалих доставок (у відсотках) серед доставок проєкту, створених за вікно, досягає порогу або перевищує його. Підходить, коли трафік погіршується, але ще не зник.
CONSECUTIVE_FAILURES Усі останні доставки на ендпоінт (стільки, скільки задає поріг) завершилися невдало. Потребує ендпоінта: правило без нього не буде збережено. Помічає ендпоінт, який зовсім перестав відповідати, раніше, ніж частка невдач, бо не залежить від обсягу трафіку.
DLQ_THRESHOLD Кількість доставок проєкту, що за вікно потрапили до недоставлених повідомлень, досягає порогу або перевищує його. Саме ця умова показує, що доставки полишають, а не просто повторюють.
LATENCY_THRESHOLD p95 часу відповіді за вікно по всьому проєкту (у мілісекундах) досягає порогу або перевищує його. Повільний ендпоінт вичерпує ліміт одночасних запитів і врешті вмикає circuit breaker.
NO_TRAFFIC Проєкт не отримав жодної події за вікно. Вікно тут означає, яка тривалість тиші вже ненормальна, тож задавайте його довшим за найтихіший звичайний проміжок. Поріг ця умова не бере, а наступна подія закриває сповіщення.

Правило спрацьовує, коли його умова починає виконуватися, а не під час кожної перевірки, поки вона виконується. Один збій — одне сповіщення, а не нове щохвилини.

Якщо під час перевірки виявляється, що умова більше не виконується, відкрите сповіщення закривається автоматично. Коли умова знову почне виконуватися, це буде нове сповіщення з новим повідомленням, тож закривати сповіщення вручну, щоб дізнатися про наступний збій, не потрібно.

Налаштування, від яких залежить, чи хтось відреагує

Section titled “Налаштування, від яких залежить, чи хтось відреагує”
Налаштування Типово Порада
Вікно 5 хв За який проміжок часу оцінюється умова. Коротке вікно за малого трафіку дає хибні спрацювання, довге за великого реагує запізно. Підбирайте його під те, скільки доставок проєкт отримує за цей час.
Ендпоінт Немає Обов’язковий для CONSECUTIVE_FAILURES. Решта умов оцінює весь проєкт.
Важливість WARNING INFO, WARNING або CRITICAL. INFO не відкриває інциденту й не може використовувати PagerDuty чи Opsgenie. Інцидент, який відкриває правило, отримує ту саму важливість, а PagerDuty та Opsgenie отримують її як терміновість сповіщення.
Приглушення й відкладення Вимкнено Правило можна приглушити безстроково або відкласти до певного часу. На час запланованих робіт відкладайте правило, а не видаляйте його. Вимкнене правило взагалі не перевіряється.

Одне правило — один канал. Щоб надсилати сповіщення у два місця, створіть два правила.

Канал Куди надсилає Що потрібно
IN_APP Сповіщення в панелі керування. Типовий канал. Нічого
EMAIL До 10 адрес через кому. Кожна має належати учасникові організації, який її підтвердив; будь-яку іншу адресу буде відхилено під час збереження правила. Налаштована пошта в розгортанні: EMAIL_ENABLED=true і параметри SMTP
SLACK URL вхідного вебхука Slack URL
WEBHOOK Будь-яку вашу адресу, як JSON-запит POST. Так можна передати сповіщення в систему тикетів чи власну маршрутизацію. URL
DISCORD Канал Discord, одним embed із правилом, значенням проти порогу й посиланням на інциденти проєкту (будується з APP_BASE_URL). URL вебхука каналу
PAGERDUTY Сервіс PagerDuty, через Events API v2. Викликає чергового, коли правило спрацьовує, і знімає виклик, коли умова минає. Routing key інтеграції Events API v2 на цьому сервісі
OPSGENIE Команду в Opsgenie, через Alerts API. Створює сповіщення, коли правило спрацьовує, і закриває його, коли умова минає. Ключ API-інтеграції цієї команди та її регіон: US або EU

Routing key PagerDuty, API-ключ Opsgenie та URL вебхука Discord є секретами: вони зберігаються зашифрованими, API їх ніколи не повертає, а ротація ключа шифрування перешифровує їх. Щоб лишити збережений секрет під час редагування правила, залиште поле порожнім. Зміна каналу правила видаляє його.

В API правило називає канал за id і передає його налаштування в channelConfig. GET /api/v1/alert-channels повертає встановлені канали з налаштуваннями кожного у вигляді JSON Schema, де секрет позначено writeOnly; GET /api/v1/alert-conditions робить те саме для умов. Див. довідник API.

Інцидент зводить усе, що сталося, в один запис із хронологією. Його можна відкрити вручну на сторінці Інциденти проєкту й додавати нотатки до його хронології.

Правило сповіщень з важливістю WARNING чи CRITICAL, спрацювавши, теж відкриває інцидент із назвою правила; правило INFO лише записує сповіщення. Поки цей інцидент не закрито, кожне наступне спрацювання правила додається до його хронології, а не відкриває новий. Коли перевірка виявляє, що умова більше не виконується, інцидент закривається з позначкою Закрито автоматично, а правило з каналом PagerDuty чи Opsgenie знімає виклик, який відкрило: обидва використовують інцидент як ключ дедуплікації, тож закриття потрапляє саме до того сповіщення. Коли умова знову почне виконуватися, відкриється новий інцидент.

Ручне закриття інциденту не закриває сповіщення в PagerDuty чи Opsgenie; закрийте його там.

Статус Що означає
OPEN Ще ніхто не взявся
INVESTIGATING Хтось над ним працює
RESOLVED Закрито. Хронологія зберігається, тож наступний такий випадок можна буде порівняти з цим.
  • Немає правила для ендпоінта, який Railhook вимкнув сам. Він створює власне сповіщення, і воно з’являється в цьому списку без правила за ним (див. Коли Railhook вимикає ендпоінт). Змінити його важливість або надіслати в канал не вийде.