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), компонент возвращается в нормальный статус, а инцидент закрывается.