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).

Натискаючи кнопку, ви погоджуєтесь на обробку даних.