GH GambleHub

Операции и Управление → Алерты по емкости систем

Алерты по емкости систем

1) Зачем это нужно

Емкостные алерты предупреждают о приближении к техническим лимитам задолго до инцидента: «мы на 80% от потолка — пора масштабироваться». Для продуктовых бизнесов это напрямую про деньги: пропущенные ставки/депозиты, дропы сессий, задержки live-игр и отказы провайдеров = потерянная выручка, репутация, штрафы и откаты.

Цели:
  • Предсказуемо выдерживать пиковые нагрузки (ивенты, турниры, стримы, большие кампании).
  • Включать авто-скейлинг вовремя и планировать capacity uplift.
  • Снижать шум и будить «по делу», когда рискуют SLO/деньги.
  • Давать инженерам точные рекомендации через runbook.

2) Базовые понятия

Емкость (Capacity): максимально устойчивая пропускная способность (RPS/TPS, коннекты, IOPS, throughput).
Headroom: запас между текущей нагрузкой и лимитами.
SLO/SLA: целевые уровни доступности/времени отклика; алерты должны быть «SLO-aware».
Burn-rate: скорость «сжигания» SLO-бюджета ошибок/латентности.
High/Low Watermark: верхние/нижние уровни для срабатываний и авто-восстановления.

3) Архитектура сигналов и источники данных

Телееметрия: метрики (Prometheus/OTel), логи (ELK/ClickHouse), трассировки (OTel/Jaeger).
Слоевой подход: алерты по слоям (Edge → API → бизнес-сервисы → очереди/стримы → БД/кэши → файловые/объектные хранилища → внешние провайдеры).
Контекст: фичефлаги, релизы, кампании маркетинга, турниры, гео-расклад.
Инцидент-шина: Alertmanager/PagerDuty/Opsgenie/Slack; привязка к runbook и матрице эскалаций.

4) Ключевые метрики по слоям (что мониторить и зачем)

Edge / L7

RPS, 95-/99-перцентиль latency, error rate (5xx/4xx), open connections.
Rate-limits/quotas, drops на CDN/WAF/Firewall.

API-шлюз / Backend-for-Frontend

Saturation по воркерам/ворк-пулу, очередь запросов, timeouts к даунстримам.
Доля деградации (fallbacks, circuit-breakers).

Очереди / Стриминг (Kafka/Rabbit/Pulsar)

Lag/consumer delay, backlog growth rate, throughput (msg/s, MB/s).
Partition skew, rebalancing churn, ISR (для Kafka), ретраи/дед-лейтер.

Асинхронные воркеры

Время ожидания задач, длина очереди, процент просроченных SLA задач.
Saturation CPU/Memory/FD у пулов.

Кэши (Redis/Memcached)

Hit ratio, latency, evictions, used memory, подключенные клиенты/ops/s.
Кластеры: слоты/реплики, failover events.

БД (PostgreSQL/MySQL/ClickHouse)

Active connections vs max, lock waits, replication lag, buffer/cache hit.
IOPS, read/write latency, checkpoint/flush, bloat/fragmentation.

Объектное/файловое хранилище

PUT/GET latency, 4xx/5xx, egress, запросы/сек, лимиты провайдера.

Внешние провайдеры (платежи/KYC/провайдеры игр)

TPS лимиты, QPS окна, error rate/timeout, очередь ретраев, «cost per call».

Инфраструктура

CPU/Memory/FD/IOPS/Network saturation на узлах/подах/ASG.
HPA/VPA события, pending pods, контейнерные OOM/Throttling.

5) Типы емкостных алертов

1. Статические пороги

Простые и понятные: `db_connections > 80% max`. Хороши как «сигнал-маяк».

2. Адаптивные (динамические) пороги

Базируются на сезонности и тренде (rolling windows, STL-декомпозиция). Позволяют ловить «необычно высоко для этого часа/дня недели».

3. SLO-ориентированные (burn-rate)

Срабатывают, когда скорость проедания error-budget поставит под удар SLO в горизонте X часов.

4. Прогностические (forecast-alerts)

«Через 20 минут при текущем тренде очередь достигнет 90%». Используют линейный/Robust/Prophet-подобный прогноз на коротких окнах.

5. Составные (multi-signal)

Тригеррят при комбинации: `queue_lag ↑` + `consumer_cpu 85%` + `autoscaling at max` → «нужна ручная интервенция».

6) Пороговые политики и анти-шум

High/Low Watermark:
  • Вверх: предупреждение 70–75%, крит 85–90%. Вниз: гистерезис 5–10 п.п. Чтобы не «пилить по порогу».
Временные окна и подавления:
  • `for: 5m` для критов, `for: 10–15m` для предупреждений. Night-mode: роутить некритичное в чат без пейджинга.
Группировка событий:
  • Группировать по сервису/кластеру/гео, чтобы не плодить карточки инцидентов.
Dependency-aware suppression:
  • Если провайдер KYC на ауте и API-ошибки следствие — пейджим владельца интеграции, а не всех потребителей.
Временные окна маркетинга:
  • В период акций повышать пороги шума для «ожидаемого роста», но оставлять SLO-алерты нетронутыми.

7) Примеры правил (псевдо-Prometheus)

БД коннекты:

ALERT PostgresConnectionsHigh
IF (pg_stat_activity_active / pg_max_connections) > 0. 85
FOR 5m
LABELS {severity="critical", team="core-db"}
ANNOTATIONS {summary="Postgres connections >85%"}
Kafka lag + авто-скейлинг на пределе:

ALERT StreamBacklogAtRisk
IF (kafka_consumer_lag > 5_000_000 AND rate(kafka_consumer_lag[5m]) > 50_000)
AND (hpa_desired_replicas == hpa_max_replicas)
FOR 10m
LABELS {severity="critical", team="streaming"}
Burn-rate SLO (латентность API):

ALERT ApiLatencySLOBurn
IF slo_latency_budget_burnrate{le="300ms"} > 4
FOR 15m
LABELS {severity="page", team="api"}
ANNOTATIONS {runbook="wiki://runbooks/api-latency"}
Redis память и эвикшены:

ALERT RedisEvictions
IF rate(redis_evicted_keys_total[5m]) > 0
AND (redis_used_memory / redis_maxmemory) > 0. 8
FOR 5m
LABELS {severity="warning", team="caching"}
Провайдер платежей — лимиты:

ALERT PSPThroughputLimitNear
IF increase(psp_calls_total[10m]) > 0. 9 psp_rate_limit_window
FOR 5m
LABELS {severity="warning", team="payments", provider="PSP-X"}

8) SLO-подход и бизнес-приоритет

От сигнала к воздействию на бизнес: алерты по емкости должны ссылаться на risk to SLO (конкретные игры/гео/метрики GGR, конверсия депозита).
Многоуровневость: предупреждения для on-call сервиса; крит — пейдж владельца домена; SLO-падение — мажорный инцидент и командный «сводный» канал.
Фичефлаги деградации: автоматическое снижение нагрузки (частичный read-only, урезание тяжелых фич, снижение частоты джекпот-бродкастов, выключение «тяжелых» анимаций в live-играх).

9) Авто-скейлинг и «правильные» триггеры

HPA/VPA: таргет не только по CPU/Memory, но и по бизнес-метрикам (RPS, queue lag, p99 latency).
Warm-up тайминги: учесть холодный старт и лимиты провайдера (ASG spin-up, контейнерные билдеры, прогрев кэшей).
Guardrails: стоп-условия при лавинообразном росте ошибок; защита от «скейлим проблему».
Capacity-playbooks: где и как добавить шард/партицию/реплику, как перераспределить трафик по регионам.

10) Процесс: от проектирования до эксплуатации

1. Картирование лимитов: собрать «истинные» bottleneck-лимиты по каждому слою (max conns, IOPS, TPS, quotas провайдеров).
2. Выбор метрик-предикторов: какие сигналы раньше всех указывают на «упремся через N минут».
3. Дизайн порогов: high/low + SLO-burn + составные.
4. Runbook на каждый крит: шаги диагностики («что открыть», «какие команды», «куда эскалировать»), три варианта действий: быстрый обход, масштабирование, деградация.
5. Тестирование: симуляции нагрузок (chaos/game days), «сухие запуски» алертов, проверка анти-шума.
6. Ревью и усыновление: владелец сигнала = владелец сервиса. Без владельца — нет пейджа.
7. Ретроспективы и тюнинг: еженедельный разбор ложных/пропущенных; метрика «MTTA (ack), MTTD, MTTR, Noise/Signal ratio».

11) Анти-паттерны

CPU>90% ⇒ паника: без корреляции с latency/queues это может быть нормально.
«Один порог на всех»: разные регионы/тайм-зоны — разные профили трафика.
Алерт без runbook: пейдж без четкого действия истощает on-call.
Слепота к провайдерам: внешние квоты/лимиты нередко первыми «ломают» сценарии (PSP, KYC, антифрод, провайдеры игр).
Нет гистерезиса: «пиление» на границе 80%/79%.

12) Особенности iGaming / финплатформ

Пики по расписанию: прайм-тайм, финалы турниров, крупные матчи; заранее повышать целевые реплики и наполнять кэши.
Live-стримы и джекпоты: всплески широковещательных ивентов → лимиты на брокерах/вебсокетах.
Платежи и KYC: окна провайдеров, антифрод-скоринг; держать запасные маршруты и «grace-режим» депозитов.
Гео-баланс: локальные провалы провайдера — увести трафик в соседний регион, где есть headroom.
Ответственность: при риске потери ставок/джекпотов — мгновенный пейдж доменной команде + бизнес-оповещение.

13) Дашборды (минимальный набор)

Capacity Overview: headroom по слоям, топ-3 рисковых участков, burn-rate SLO.
Stream & Queues: lag, backlog growth, consumer saturation, HPA state.
DB & Cache: коннекты, repl-lag, p95/p99 latency, hit ratio, evictions.
Providers: TPS/окна/квоты, timeouts/errors, стоимость вызовов.
Release/Feature context: релизы/фичефлаги рядом с кривыми.

14) Чек-лист внедрения

  • Перечень «истинных» лимитов и владельцев.
  • Карта метрик-предикторов + связи между слоями.
  • Статические пороги + гистерезис.
  • SLO-burn-алерты на критичные пути (депозит, ставка, запуск live-игры).
  • Прогностические алерты на очереди/стримы/коннекты.
  • Suppression/maintenance окна; анти-шум политики.
  • Runbook’и с командами, графиками, фичефлагами деградации.
  • Еженедельный разбор ложных срабатываний и тюнинг.
  • Учет маркетинговых кампаний и календаря ивентов.

15) Пример шаблона runbook (сокращенно)

Сигнал: `StreamBacklogAtRisk`

Цель: Не допустить рост lag > 10 млн и задержку обработок > 5 мин.

Диагностика (3–5 мин):

1. Проверить `hpa_desired/max`, throttle/oom в подах.

2. Посмотреть `rate(lag)`, распределение по партициям (skew).

3. Проверить брокер (ISR, under-replicated, network).

Действия:
  • Увеличить consumer-replicas на +N, поднять max-in-flight.
  • Включить приоритетный пул на «критичные топики».
  • Временно понизить частоту вторичных обработок/ enrichment.
  • Если `ASG at max` — запросить временный uplift у облака; параллельно — включить деградацию тяжелых функций.
  • Откат: вернуться к профилю «обычный трафик» после `lag < 1 млн` 15 минут.
  • Эскалация: владелец кластера Kafka, затем платформа SRE.

16) KPI и качество сигналов

Coverage: % критичных путей, закрытых емкостными алертами.
Noise/Signal: не более 1 ложного пейджа на on-call/неделю.
MTTD/MTTR: емкостные инциденты детектируются за ≤5 мин до SLO-ударов.
Proactive saves: кол-во предотвращенных инцидентов (по постмортемам).

17) Быстрый старт (консервативные дефолты)

БД: предупреждение 75% коннектов/IOPS/lat; крит 85%, гистерезис 8–10 п.п.
Кэши: `hit < 0.9` И `evictions > 0` >5 мин — предупреждение; `used_mem > 85%` — крит.
Очереди: `lag` рост > 3σ от среднего за 30д + `hpa at max` — крит.
API: `p99 > SLO1.3` 10 мин — предупреждение; `burn-rate>4` 15 мин — крит.
Провайдеры: `throughput > 90% квоты` — предупреждение; `timeouts > 5%` — крит.

18) FAQ

Q: Почему не алертить просто «CPU>80%»?
A: Без контекста latency/очередей это шум. CPU сам по себе не равен риску.

Q: Нужны ли адаптивные пороги?
A: Да, для суточной/недельной сезонности — снижают ложные срабатывания.

Q: Как учитывать маркетинг/ивенты?
A: Календарь кампаний → аннотации на графиках + временная корректировка анти-шума, но SLO-алерты не трогать.

Contact

Свяжитесь с нами

Обращайтесь по любым вопросам или за поддержкой.Мы всегда готовы помочь!

Начать интеграцию

Email — обязателен. Telegram или WhatsApp — по желанию.

Ваше имя необязательно
Email необязательно
Тема необязательно
Сообщение необязательно
Telegram необязательно
@
Если укажете Telegram — мы ответим и там, в дополнение к Email.
WhatsApp необязательно
Формат: +код страны и номер (например, +380XXXXXXXXX).

Нажимая кнопку, вы соглашаетесь на обработку данных.