Grafana және деректерді көрсету
(Бөлім: Технологиялар және Инфрақұрылым)
Қысқаша түйіндеме
Grafana - барлық бақыланатын витрина: метрика, логи, трассировка, бизнес-көрсеткіштер және бір орында алерта. iGaming үшін бұл: p95/p99 мониторингі, төлем конверсиясы, Time-to-Wallet, ойын провайдерлерінің қолжетімділігі, оқыс оқиғаларды гео-бөлу және релиздерді салыстыру (stable vs canary). Табысқа жету: үлгілер (айнымалы), түсінікті панельдер, релиздер аңдатпалары, SLO-дашбордтар және кіру құқығы тәртібі.
1) Қосылым архитектурасы
Datasources: Prometheus (метриктер), Loki/ELK (логтар), Tempo/Jaeger (трейдерлер), ClickHouse/BigQuery/PG (бизнес деректер), Gateway арқылы OTLP.
Негізгі байланыстар: метрикадан → exemplar → trace → байланысты логтар бойынша 'trace _ id'.
Қалталар және RBAC: жеке қалталар 'SRE', 'Payments', 'Risk', 'Games', 'BizOps'; роли `Viewer/Editor/Admin` и granular permissions.
2) Дашбордтар дизайны: қағидаттар
1. 1-2 нұқу үшін сұраққа жауап: SLO-картадан егжей-тегжейлі.
2. Әрбір сервис + домендік карточкалар бойынша RED/USE (TTW, депозиттер конверсиясы).
3. Тұрақты тор: 24-бағаналы, үстінен ірі KPI, астынан бөлшектер.
4. Түстер мен табалдырықтар: ең аз, тек SLA/SLO бойынша.
5. Шығарылым аңдатпалары: Git SHA, нұсқасы, шығарылым түрі (canary/blue-green).
3) Ауыспалы және темплейттер (templating)
Айнымалылар бір дашбордты көп дашбордқа айналдырады.
Мысал (Prometheus query-variable):- Name: `service`
- Query: `label_values(up, service)`
- Multi-select + include all - агрегаттар үшін ыңғайлы.
- `region` → `env` → `service` → `instance`.
- UX үшін 'regex '/' sort' және 'refresh: On dashboard load' дегенді пайдаланыңыз.
4) Панельдер және визуализация түрлері
Time series: p50/p95/p99, error-rate, throughput.
Stat/Gauge: мақсатты KPI (availability, TTW p95).
Bar gauge/Table: Top-N маршруттары/PSP/ойын провайдерлері.
Geomap: елдер/РОР бойынша оқыс оқиғалардың/жасырындылықтың жылу карталары.
Canvas: сызбалық ағындар (Player → API → PSP → Bank).
Node graph: сервистерге тәуелділік, қателер бойынша бояу.
- Labels to fields, Outer join (метриктер мен бизнес-кестелерді желімдеу), Reduce (мин/макс/avg), Add field from calculation (конверсия).
5) Сұраулар мен панельдер мысалдары
5. 1 p95 latency (PromQL)
promql histogram_quantile(0. 95,
sum by (le, route) (rate(http_request_duration_seconds_bucket{service="$service",region="$region"}[5m]))
)
5. 2 Сұраулардың табысты болуы (SLO proxy)
promql sum(rate(http_requests_total{service="$service",status=~"2.. 3.."}[5m]))
/
sum(rate(http_requests_total{service="$service"}[5m]))
5. 3 Төлем конверсиясы (PromQL агрегаты)
promql sum(rate(payments_success_total{psp=~"$psp",currency=~"$currency"}[15m]))
/
sum(rate(payments_attempt_total{psp=~"$psp",currency=~"$currency"}[15m]))
5. 4 Трассаға жылдам секіру (exemplars)
'Time series' панелінде Exemplars → түймешігін қосыңыз → Tempo с 'trace _ id' ашылады.
5. 5 trace_id логтары (Loki)
logql
{service="$service"} = "$traceID"
6) Аңдатпалар мен оқиғалар
Release annotations: деплой кезінде оқиғаны авто-қосу (нұсқа, автор, канарейка салмағы).
Incident/Freeze: оқиғаның басталу/аяқталу белгілері және релиздерді қатыру терезелері.
Бизнес-оқиғалар: ірі науқандар/турнирлер - кестелерде белгілеңіз.
7) Графанадағы алерттар
Alert rules орталықтандырылған (Prometheus/Loki/Cloud базисінде).
Contact points: PagerDuty/Slack/Email; Notification policies (қалта/тегтер бойынша рутинг).
Multi-window burn-rate: бюджетті жылдам және баяу күйдіру.
Silences: жоспарлы терезелерде және қайталауларда.
promql histogram_quantile(0. 95,
sum by (le, service) (rate(http_request_duration_seconds_bucket{service="$service"}[5m]))
) > 0. 25
8) Провижининг код ретінде (IaC)
Git ішіндегі көздерді/дашбордтарды/алерталарды сақтаңыз.
datasource. yaml
yaml apiVersion: 1 datasources:
- name: Prometheus type: prometheus access: proxy url: http://prometheus:9090 isDefault: true
- name: Loki type: loki url: http://loki:3100
- name: Tempo type: tempo url: http://tempo:3100
dashboard. yaml
yaml apiVersion: 1 providers:
- name: sres folder: SRE type: file disableDeletion: false options:
path: /var/lib/grafana/dashboards/sre
grafana. ini (үзік)
ini
[auth]
disable_login_form = false
[users]
viewers_can_edit = false
[alerting]
enabled = true
[unified_alerting. screenshots]
capture = true
9) Қауіпсіздік және қол жетімділік
SSO (OIDC/SAML), топтар → рөлдер → қалталар.
datasources құқықтары: тек қажетті қалталарға, Viewer үшін read-only.
PII-гигиена: алаңдарды PII-ден панельге тартпау; логтар үшін - сүзіңіз/жасырыңыз.
Құпиялар: тек Vault/secure JSON fields арқылы, дашбордтарда «плэйн-мәтінсіз».
10) Өнімділік және құн
Ауыр өрнектер үшін Prometheus-те Recording rules.
Ұзақ сақталатын бэкендтерде Downsampling/Retention.
Дашборд кэші және адал аралықтар (барлық жерде «1s» емес).
Айнымалылардың түбегейлілігін шектеу ('user _ id '/' session _ id' дегенді қоймаңыз).
Қайта бөлу: шулы командалар үшін жеке инстанциялар/фолдер.
11) iGaming үшін мамандандырылған дашбордтар
Payments: әрекеттер/сәттілік/TTW p95, PSP/маршрут қатесі, гео-карта ауытқулары.
Games/Providers: latency және error-rate бойынша студиялар/ойындар, іске қосу конверсиясы.
Тәуекел/Fraud: әрекет жылдамдығы, құрылғылардың жарылысы/IP, корреляциялар (кесте + бар-гейдж).
RG/Compliance: сессиялар> табалдырық, стейктердің өсуі, аномалиялар бойынша алерталар.
Release Compare: тұрақты vs p95/error/бизнес-метриктер бойынша канареялық.
Infra/USE: Utilization/Saturation/Errors кластерлер мен кезектер бойынша.
12) JSON-дашборд мысалы (фрагмент)
json
{
"title": "Payments SLO",
"tags": ["slo","payments"],
"time": {"from":"now-6h","to":"now"},
"panels": [
{
"type":"stat",
"title":"Availability",
"targets":[{"expr":"sum(rate(http_requests_total{service=\"payments-api\",status=~\"2.. 3..\"}[5m]))/sum(rate(http_requests_total{service=\"payments-api\"}[5m]))"}],
"thresholds":{"mode":"absolute","steps":[{"color":"red","value":0},{"color":"green","value":0. 999}]}
},
{
"type":"timeseries",
"title":"p95 latency",
"exemplars": {"color":"rgba(31,120,193,0. 6)"},
"targets":[{"expr":"histogram_quantile(0. 95,sum by (le) (rate(http_request_duration_seconds_bucket{service=\"payments-api\"}[5m])))"}]
}
]
}
13) Runbooks және UX жақсарту
Әрбір алерт - Runbook URL (әрекеттер нұсқаулығы).
Байланысты дашбордтарға Links (Payments, Infra, PSP).
Drilldown: → сүзгілер (region/psp/route).
Variables defaults: 'env = prod', 'region = eu' - басталуды жылдамдатады.
14) Енгізу чек-парағы
1. datasources баптау: Prometheus/Loki/Tempo/SQL.
2. Қалталар мен RBAC енгізіңіз; құқықтар аудиті.
3. Үлгі айнымалыларын (region/env/service) жасаңыз.
4. SLO-дашборд жасаңыз (availability, p95, error-rate, қателер бюджеті).
5. Релиздер аңдатпасын және stable/canary салыстыруын қосыңыз.
6. exemplars бағдарламасын қосыңыз және басыңыз.
7. Алертты (multi-window burn-rate) және рутингті теңшеңіз.
8. Бәрін код ретінде провизиялаңыз, Git-те сақтаңыз, ыза жасаңыз.
9. Өнімділікті оңтайландыру: recording rules, интервалдар, кэш.
10. Бизнес-дашбордтарды енгізіңіз (TTW, төлем конверсиясы, GGR-карточкалар).
15) Антипаттерндер
«Зообақ» ауыспалы және стандарттары жоқ келісілмеген дашбордтар.
Ауыр PromQL бар панельдер recording rules → баяу UI.
Түстер/аңыз/білік-Y шамадан тыс көп.
Көрініс үшін ашық панелге PII қосу.
Релиздердің аннотациясының жоқтығы - жарыстың қайдан келетіні түсініксіз.
Фолдер құрылымының орнына бір «моновью» дашборд.
Grafana - техника өніммен кездесетін интерфейс: метрика, логи және трассалар бизнес-картиналармен қосылады. Үлгілер, дұрыс панельдер, аннотациялар және алерттар деректерді шешімдерге айналдырады: жылдам диагноз, болжамды релиздер және бақылаудың басқарылатын құны.