Оповещения по метрикам
Правило оповещения по метрике следит за агрегатом метрики (avg/max/p95 и т. п.) на скользящем окне времени и открывает инцидент, когда значение пробивает заданный порог. Открытие и закрытие инцидента каждое шлёт ровно одно уведомление в каналы доставки проекта — те же email/webhook/Telegram, что и у алертов по проблемам (см. Оповещения).
Где находится
Значок колокольчика в левой рельсе → «Оповещения» → группа «Правила» → «По метрикам» (или напрямую /projects/{id}/metrics/alerts). Управлять правилами может участник команды проекта (оператор), а также owner и admin организации — см. Роли и права.
Создание правила
Кнопка «Новое правило» открывает форму:
| Поле | Что указать |
|---|---|
| Метрика | Точное имя метрики, как оно приходит по OTLP (например, http.server.duration) — регистр и написание должны совпадать буква в букву |
| Агрегация | avg, max, min, sum, p50, p95, p99 |
| Условие | > (больше) или < (меньше) |
| Порог | Число, с которым сравнивается агрегат. Должно быть конечным — NaN/Infinity отклоняются с ошибкой «порог должен быть конечным числом» |
| Окно (с) | Ширина скользящего окна в секундах, положительное целое (например, 300 — 5 минут) |
| Окружение | Необязательно; точное совпадение. Пусто = любое окружение |
| Ключ лейбла / Значение лейбла | Необязательный доп. фильтр по одному лейблу метрики (точное совпадение); заполнять либо оба поля, либо ни одного |
Доступные агрегации
| Агрегация | Смысл |
|---|---|
avg | Среднее значение за окно |
max | Максимум за окно |
min | Минимум за окно |
sum | Сумма значений за окно |
p50 / p95 / p99 | Перцентиль (только для метрик типа histogram; для остальных типов агрегация не сработает содержательно) |
Условия
| Условие | Символ | Пробитие | Восстановление (закрытие инцидента) |
|---|---|---|---|
| gt | > | текущее значение > порога | текущее значение ≤ порога × 0.95 |
| lt | < | текущее значение < порога | текущее значение ≥ порога × 1.05 |
Восстановление намеренно требует отойти от порога на 5% в безопасную сторону (гистерезис) — иначе значение, колеблющееся ровно на границе, открывало и закрывало бы инцидент на каждой проверке.
Как это оценивается
Фоновый оценщик проходит по всем включённым правилам раз в минуту — это значение по умолчанию, меняется через GOTCHA_METRIC_EVAL_INTERVAL_SECONDS (секунды).
Важно: в режимах web и ingest оценщики по умолчанию не запускаются — правило будет включено и не сработает никогда. Включите их явно через GOTCHA_EVALUATORS_ENABLED=true либо разверните инстанс в режиме all или uptime. На каждом проходе для правила берётся агрегат метрики за окно [сейчас − окно, сейчас) — тем же запросом, что рисует график на детальной странице метрики. Если данных за окно нет вовсе — решение не принимается (инцидент не открывается и не закрывается, ждём следующего прохода).
Дальше:
- нет открытого инцидента и значение пробило порог → открывается инцидент, уходит уведомление «сработало»;
- инцидент уже открыт и значение всё ещё нарушено (или в «мёртвой зоне» гистерезиса) → инцидент обновляется (текущее значение, пик — самое «плохое» значение за всё время инцидента), уведомление не дублируется;
- инцидент открыт и значение восстановилось (см. таблицу выше) → инцидент закрывается, уходит уведомление «решено».
На один rule одновременно может быть только один открытый инцидент.
Инциденты
Ниже таблицы правил на той же странице — список инцидентов проекта (до 100 последних): статус (Открыт / Решён), пиковое и текущее значение агрегата, время начала. Пустое состояние подсказывает, что инцидент появится здесь, как только метрика пробьёт порог правила.
Уведомления и каналы
Уведомления об открытии/закрытии инцидента ставятся в очередь на все включённые каналы доставки проекта — те же, что настроены в Оповещениях (email/webhook/Telegram), отдельных каналов для метрик заводить не нужно. Email пропускается с предупреждением в логе, если SMTP не настроен (см. Конфигурацию). Появятся ли в уведомлении имя метрики, значения и порог, решает та же по-получательная политика доверия, что и у алертов по проблемам: детали уходят только доверенным получателям (вашей собственной инфраструктуре; как определяется доверие — в Оповещениях), остальным — ссылка на страницу правил и вид события, а GOTCHA_EXTERNAL_CHANNEL_DETAILS_ENABLED=true снимает ограничение для всех.
Порог на графике
Если на детальной странице метрики (/projects/{id}/metrics/{name}) выбрана та же агрегация, что и в правиле, и правило включено, — его порог рисуется горизонтальной пунктирной линией с подписью условия (например, p95 > 500). Подробнее о самом графике — в Метриках.
Пример: алерт по p95 latency > 500 мс за 5 минут
Допустим, приложение шлёт histogram-метрику http.server.duration (юнит ms) — см. Метрики, как её отправить по OTLP.
- Откройте
/projects/{id}/metrics/http.server.duration, чтобы убедиться, что точки приходят, и свериться с точным именем/юнитом метрики. - Перейдите в «Оповещения → Правила → По метрикам» и нажмите «Новое правило».
- Заполните форму:
- Метрика:
http.server.duration - Агрегация:
p95 - Условие:
> - Порог:
500 - Окно (с):
300(это и есть 5 минут) - Окружение:
production(необязательно, но полезно — иначе окно смешает прод и локальную разработку) - Ключ/значение лейбла — оставить пустыми
- Метрика:
- Нажмите «Создать правило». В таблице появится строка
http.server.duration | p95 > 500 | 300s | production | Включено. - Как только p95 за последние 5 минут превысит 500 (в тех же единицах, что несёт метрика — Gotcha не конвертирует юниты), откроется инцидент, и уведомление уйдёт во включённые каналы проекта. На графике метрики с агрегацией p95 появится пунктирная линия на отметке 500.
- Когда p95 опустится ниже 475 (500 × 0.95), инцидент закроется, и придёт второе уведомление — «решено».
Редактирование и выключение правила
Кнопка «Редактировать» в строке таблицы открывает модальное окно «Правка правила» с теми же полями, что и при создании, плюс флажок «Включено». Правка — только для оператора проекта, как и создание.
- Изменение условия (метрика, агрегация, порог, окно, фильтры) вступает в силу со следующего цикла проверки: открытый инцидент правила пересчитывается по новому условию — закрывается сам, если оно больше не нарушено, либо продолжается. Новых уведомлений об открытии из-за правки не будет: инцидент тот же.
- Выключение (снятый флажок «Включено») сразу и атомарно закрывает открытый инцидент правила — в той же транзакции, что сохраняет правило; инцидент остаётся в истории со статусом «Решён». Уведомление о восстановлении не отправляется: восстановления не было, правило выключил оператор. Выключенное правило оценщик не рассматривает вовсе, пока его не включат снова.
- Включение обратно ничего не открывает задним числом — первый цикл проверки после включения решает по текущему значению агрегата.
Выключение — правильный способ временно замолчать правило, сохранив его настройки и историю инцидентов.
Удаление правила
Кнопка «Удалить» в строке таблицы правил удаляет его после подтверждения на отдельной странице. Вместе с правилом удаляются все его инциденты — открытые и закрытые (связь в базе каскадная): открытый инцидент не «закрывается», а исчезает, и уведомление о восстановлении по нему не отправляется. Нужно прекратить срабатывания, но сохранить историю — выключите правило, а не удаляйте.
Смотрите также
- Метрики — что такое метрика, как её отправлять, детальный график.
- Оповещения — каналы доставки, алерты по проблемам, лог неудачных доставок.