Logo GH

Наблюдаемость и телеметрия

(Раздел: Технологии и Инфраструктура)

Краткое резюме

Наблюдаемость — это способность отвечать на «почему оно так работает?» без релиза новых билдов. В iGaming это критично: пиковые турниры, платежные пики, многорегиональность и требования по ответственному гэмблингу/PII. Базис — метрики, логи, трассировки, объединенные общими идентификаторами и стандартами (OpenTelemetry), с SLO-контрактами, шумоустойчивым алертингом и контролем стоимости.

1) Каркас наблюдаемости: из чего он состоит

Метрики (числа по времени): RED/USE, бизнес-KPI, SLI. Хранятся в TSDB.
Логи (события в текст/JSON): аудит, ошибки, бизнес-факты, безопасность.
Трассировки (спэны): путь запроса через сервисы, латентности, причины задержек.
Профайлинг: CPU/память/eBPF-потоки, heap/lock-контеншн.
RUM и синтетика: реальные пользователи (web/app) + робот-проверки.
Каталог телеметрии: схемы, политики PII, сроки хранения, тэги стоимости.

2) Таксономия сигналов и принципы

RED для API: Rate, Errors, Duration.
USE для инфраструктуры: Utilization, Saturation, Errors (CPU, диски, сеть, очереди).
SLI/SLO: измеряемые индикаторы (например, успешные запросы/все, p95 latency), цели доступности (напр., «99.9% за 30 дней»), бюджет ошибок → триггеры процессов.
High-cardinality с умом: лейблы должны быть полезны в разрезах (регион/тенант/провайдер), но не взрывать TSDB.

3) Стандарты и сквозная корреляция

OpenTelemetry (OTel): единый SDK/протокол для метрик, логов и трассировок.
Идентификаторы: `trace_id`, `span_id`, `correlation_id`, `player_id` (псевдонимизированный), `payment_route`.
Протекание ID: входной шлюз → все микросервисы → платежи/PSP → очереди/джобы → логи/метрики/спэны.

Пример: заголовки корреляции


traceparent: 00-<trace_id>-<span_id>-01 x-request-id: <correlation_id>

4) Метрики: что и как измеряем

Именование/лейблы

`service="payments-api"`, `env="prod"`, `region="eu-west"`, `tenant`, `provider="pspX"`.

Примеры Prometheus

prometheus
RED http_requests_total{service="api",route="/deposit",method="POST",status="200"}
http_request_duration_seconds_bucket{service="api",le="0. 25",route="/deposit"} 1234 http_request_errors_total{service="api",route="/deposit"}

USE cpu_utilization_ratio{node="n1"} 0. 71 queue_depth{queue="withdrawals"} 128

Бизнес payments_success_total{psp="X",currency="EUR"} 4521 payment_conversion_ratio{route="pspX"} 0. 948

Гистограммы и exemplars

Храните гистограммы латентности (native-histograms/βuckets) и привязывайте exemplar с `trace_id` для прыжка от «медленного бакета» к конкретной трассе.

5) Логи: структурировано и безопасно

Только JSON (никакого «free-form» в проде).
Поля: `timestamp`, `severity`, `service`, `trace_id`, `correlation_id`, `player_id_hash`, `event`, `amount`, `currency`, `ip_hash`.
Маскирование/хэширование PII, отдельные индексы/retention для чувствительного.
Пайплайны логов: парсинг → нормализация → обогащение (geo/ASN) → редактирование PII → индексация.

Пример JSON-события

json
{
"ts":"2025-11-05T10:42:31Z",
"sev":"ERROR",
"service":"payments-api",
"event":"psp_timeout",
"trace_id":"9c5e...e2",
"route":"pspX",
"duration_ms": 3100,
"attempt":2,
"player_id_hash":"p:1b7f...",
"pii_redacted":true
}

6) Трассировки: где теряется время

Спэны: входной запрос, вызовы провайдеров (PSP/игровые провайдеры), БД/кэш, межсервисные RPC.
Атрибуты: `db.system`, `net.peer.name`, `messaging.system`, `psp.route`, `game.provider`.

Сэмплинг:
  • head-based (вероятностный) для объема,
  • tail-based (по условиям: ошибки, p95+, VIP-сегмент),
  • guaranteed-keep для платежных/PII-критичных.

7) Наблюдаемость фронта и мобайла

RUM: TTFB, FCP/LCP/CLS/INP, ошибки JS, сети и SPA-роутинг.
Краш-репорты: символикация, деобфускация, версия билда, устройство/OS.
Синтетика: сценарии входа/депозита/ставки; геораспределенные проверки.

8) SLO, SLI и бюджет ошибок

Пример SLO (псевдо-YAML)

yaml service: payments-api sli:
- name: availability expr: sum(rate(http_requests_total{status=~"2..    3.."}[5m]))
/ sum(rate(http_requests_total[5m]))
- name: latency_p95 expr: histogram_quantile(0. 95, rate(http_request_duration_seconds_bucket[5m]))
targets:
availability: "99. 9%/30d"
latency_p95: "<=250ms/30d"
error_budget_policy:
fast_burn: 5% for 1h -> page, freeze deploy slow_burn: 20% for 24h -> incident, improvement plan

Алертинг по бюджету ошибок, а не по «каждой метрике».
Freeze-процедуры при сгорании бюджета: ограничить релизы/канарею.

9) Алертинг без шума

Multi-window, multi-burn правила: короткое/длинное окно.
Дедупликация/рутинг: по сервисам/регионам/критичности в on-call.
Runbook URL и автосбор контекста (последние деплои, изменения конфигов, граф зависимости).
Тихие часы и подавление во время плановых работ.

Пример правила (идея PromQL)

promql alert: PaymentsSLOFastBurn expr: slo_error_rate_5m > 2 slo_budget_rate for: 15m labels: { severity="page", service="payments-api" }
annotations:
summary: "SLO fast burn"
runbook: "https://runbooks/payments/slo"

10) Профайлинг и eBPF

eBPF/профайлеры: flame-графы CPU/alloc, I/O-латентность, сетевые дропы, Syscall-аномалии.
Полезно при узких местах p99, «джиттере» и редких зависаниях.

11) Бизнес-наблюдаемость (product & risk)

Финансы/монетизация: конверсия депозитов, TTW (time-to-wallet), авториз./сеттл, отмены/чарджбеки.
Игровая активность: ретеншн/стрик, доля live-ставок, «липкость» провайдеров.
Антифрод/абьюз: скорость действий, совпадения устройств/IP, корреляции.
RG-индикаторы: длительные сессии, «догон», рост стейков.
Бизнес-метрики коррелируются с техметриками и релизами (annotation events).

12) Безопасность, PII и соответствие

Data-zones: теги датасетов/логов (`pii=true`, `region=EU`).
Маскирование до индексации, псевдонимизация идентификаторов.
WORM-хранилища для аудита; ролевой доступ к логу.
Сроки хранения: разные для техлогов/аудита/бизнеса.
Запрет сырых секретов в логах; скан-проверки в CI.

13) Управление стоимостью (FinOps)

Лимит кардинальности: осторожно с `user_id`, `session_id`.
Партиционирование/ретеншн: горячее (7–14 дней), теплое (30–90), холодное (архив).
Сэмплинг трасс (tail-based) и downsampling метрик.
Биллинг по тегам `team`, `service`, `tenant`: отчеты «кто сжигает наблюдаемость».

14) Инструментарий (референс-стек)

Метрики: Prometheus/лэйк для метрик, дашборды Grafana.
Логи: Loki/ELK; ingestion правила, reduction/парсинг.
Трейсы: Tempo/Jaeger/OTel-коллекторы; exemplars-линки из метрик.
Синтетика: Blackbox-экспортер, браузерные роботы.
Alerting: Alertmanager/чат-интеграции, on-call ротации.
Профайлинг: eBPF/continuous profiling.

15) Примеры: быстро внедрить основу

(a) Экспортер RED для API (псевдокод):
python from prometheus_client import Counter, Histogram, start_http_server reqs = Counter('http_requests_total','', ['route','method','status'])
lat = Histogram('http_request_duration_seconds','', ['route'])
def handle(req):
with lat. labels(route=req. route). time():
status = app(req)
reqs. labels(route=req. route,method=req. method,status=str(status)). inc()
(b) Встраивание trace_id в логи (middleware-идея):
go tid:= ctx. Value("trace_id")
logger = logger. With("trace_id", tid)
logger. Info("deposit-accepted", "amount", amt, "route", route)
(c) Экземпляры (exemplars) в метриках:
prometheus http_request_duration_seconds_bucket{..., le="0. 25"} 1023 # exemplar: trace_id=9c5e...

16) Процессы и операционка

Единый словарь метрик/лейблов (naming-guide) и шаблон дашбордов.
Release-annotations автоматом в графах.
Инциденты: карточка, таймлайн, RCA без обвинений, action items.
Учебные тревоги («game-day»): имитации падений, задержек PSP, перегрева кэша.
Runbooks: пошаговые инструкции и автоссылки из алертов.

17) Чек-лист зрелости

1. OTel SDK/коллектор → единый экспорт метрик/логов/трейсов.
2. RED/USE покрывают все сервисы + SLI/SLO по ключевым API.
3. Корреляция `trace_id` ⇄ логи ⇄ метрики (exemplars, jump-links).
4. Алерты по бюджету ошибок с multi-burn и рунабук-ссылками.
5. RUM + синтетика на «депозит/ставка/вывод».
6. Профайлинг (eBPF) на проде по белому списку.
7. PII-политики: маскирование, зоны, доступ, сроки хранения.
8. Финансовый отчет по стоимости телеметрии (теги `team/service`).
9. «Готовность к пиковой нагрузке»: тест-план, прогрев кэшей, alert-шаблоны.
10. Регулярные RCA и пересмотр SLO/порогов.

18) Антипаттерны

Логи «простынями» без структуры и `trace_id`.
Алерты по каждой метрике → алерт-фэтИг.
Гистограммы без корректных бакетов → «плоские» p95.
Неограниченная кардинальность лейблов → взрыв стоимости.
Отсутствие RUM/синтетики — «все ок», а пользователю нет.
Смешение PII с техлогами, бессрочная ретенция.
Изоляция телеметрии от бизнес-KPI — «латентность падает, выручка тоже».

Итоги

Сильная наблюдаемость — это общий язык между продуктом, SRE, безопасностью и платежами. Соединив метрики, логи, трассы под OTel, введя SLO с бюджетом ошибок, сделав алертинг умным и стоимость управляемой, вы получаете систему, которая раньше замечает проблемы, быстрее восстанавливается и предсказуемо проходит пики трафика и турнирные нагрузки.

Contact

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

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

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

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

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

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