Перейти к содержимому
Перейти к основному содержимому

Rules engine

Rules engine превращает поток логов и метрик в изменения статусов компонентов и инциденты. Вы настраиваете правила в дашборде: движок сверяет с ними входящие данные и решает, деградировал компонент или восстановился.

LogRule

LogRule — правило над потоком логов компонента. Оно смотрит на события в окне оценки и поддерживает два типа условий:

  • Доля ошибок — срабатывает, когда доля строк уровня ERROR/FATAL в окне превышает порог. Дополнительно задаётся минимальный объём строк, чтобы правило не срабатывало на трёх событиях из трёх.
  • Совпадение по регулярному выражению — срабатывает, когда хотя бы одна строка в окне совпадает с паттерном (например, OutOfMemory).

Каждое правило привязано к компоненту и задаёт целевой статус — например, перевести компонент в Degraded.

MetricRule

MetricRule — правило над численными метриками компонента. Оно агрегирует точки метрики в окне и сравнивает результат с порогом:

  • Агрегаты: avg, sum, min, max, p95, p99, count.
  • Операторы: больше, больше или равно, меньше, меньше или равно, равно, не равно.

Пример: «среднее http_latency_ms за 5 минут больше 500» → компонент переходит в Degraded.

Окна и событийная оценка

Оценка правил — событийная: движок реагирует на факт записи нового батча логов или метрик, а не опрашивает хранилище по таймеру. Каждое правило смотрит на данные в своём скользящем окне (по умолчанию 5 минут) — окно определяет, сколько истории учитывается при каждой оценке.

Такой подход исключает дрейф между приходом данных и реакцией: как только батч записан, затронутые правила оцениваются сразу.

Защита от шума: flap-guard и cooldown

Два механизма не дают правилам генерировать шквал инцидентов:

  • Flap-guard — число подряд подтверждённых оценок, после которого правило меняет статус компонента. По умолчанию 2: одиночный всплеск не откроет инцидент, нужно подтверждение в следующей оценке.
  • Cooldown — минимальная пауза после смены статуса, в течение которой правило не меняет статус повторно. По умолчанию 5 минут: компонент не будет «мигать» между Operational и Degraded.
подсказка

Для шумных сигналов начинайте с flap-guard 2–3 и cooldown порядка длины вашего SLO-окна. Ослабляйте параметры, только если правило пропускает реальные проблемы.

От срабатывания к уведомлению

Когда правило подтверждённо сработало, компонент переходит в целевой статус и открывается инцидент. Подписчики получают уведомления по настроенным каналам — Telegram, Email или Webhook. Когда условие перестаёт выполняться (с учётом flap-guard и cooldown), компонент возвращается в нормальный статус, а инцидент закрывается.

Дальше