GH GambleHub

Графана жана маалыматтарды визуалдаштыруу

(Бөлүк: Технология жана инфраструктура)

Кыскача резюме

Grafana - бардык байкоо витринасы: метрика, логи, трассировка, бизнес-көрсөткүчтөр жана бир жерде алерта. iGaming үчүн бул: p95/p99 мониторинг, төлөмдөрдү которуу, убакыт-коштомо, оюн провайдерлеринин жеткиликтүүлүгү, инциденттерди гео-бөлүштүрүү жана релиздерди салыштыруу (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) Design Дашборд: негиздери

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 бардык - агрегаттар үчүн ыңгайлуу.
Каскаддык өзгөрмөлөр:
  • `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 прокси)

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 Fast Ride секирүү (exemplars)

"Time series" панелинде Exemplars → Click → Tempo 'trace _ id' менен ачылат.

5. 5 Loki trace_id

logql
{service="$service"}     = "$traceID"

6) Аннотациялар жана окуялар

Release annotations: auto-кошуу окуя деплой (версия, жазуучу, Канар салмагы).
Incident/Freeze: окуя башталышы/аякташын белгилөө жана релиздерди тоңдуруу терезелери.
Бизнес-окуялар: ири кампаниялар/турнирлер - диаграммада белгилөө.

7) Графана Алерта

Alert rules борборлоштурулган (Prometheus/Loki/Cloud негизинде).
Contact points: PagerDuty/Slack/Email; Notification policies (папка/тегдер боюнча ruting).
Multi-window burn-rate: бюджеттин тез жана жай бышыруу.
Silences: пландаштырылган терезелерде жана дубликаттарда.

p95 үчүн сөз айкашынын мисалы:
promql histogram_quantile(0. 95,
sum by (le, service) (rate(http_request_duration_seconds_bucket{service="$service"}[5m]))
) > 0. 25

8) Код катары провижининг (IaC)

Git булактарын/dashboard/alerts сактоо.

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 рулей.
Downsampling/Retention узак сактоо backends.
Дашборд кэш жана чынчыл интервалдар (бардык жерде "1s" эмес).
Өзгөрмөлөрдүн кардиналдуулугун чектөө ('user _ id '/' session _ id' алмаштырбаңыз).
Кайра бөлүштүрүү: ызы-команда үчүн өзүнчө бийлик/folders.

11) iGaming үчүн атайын дашборддор

Payments: аракет/ийгилик/TTW p95, PSP/маршрут ката, гео-карта четтөөлөр.
Games/Providers: latency жана error-rate боюнча студия/оюндар, кайра баштоо.
Тобокелдик/Fraud: иш-аракеттердин ылдамдыгы, түзмөктөрдүн/IP, корреляциялар (таблица + бар-гейдж).
RG/Compliance: сессиялар> босого, Biftek өсүшү, аномалиялар боюнча алерт.
Release Compare: p95/error/бизнес-метриктер боюнча туруктуу vs канарейка.
Infra/USE: кластерлер жана кезек боюнча Utilization/Saturation/Errors.

12) JSON-Dashboard мисал (үзүндү)

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 (иш-аракет көрсөтмөлөрү).
Байланыштуу дашбордддорго шилтемелер (Payments, Infra, PSP).
Drilldown: Tags чыкылдатуу → чыпкалар (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 Руллдар → жай UI менен панелдер.
ар кандай шкала менен түстөр/уламыштар/огу-Y ашыкча.
Көрүүчүгө ачык панелге PII туташтыруу.
релиздердин аннотацияларынын жоктугу - ат чабыш кайдан экени белгисиз.
Бир "monovyu" дашборд ордуна folder түзүлүшү.

Натыйжалары

Grafana - технология продукт менен жолугушат Interface: метриктер, Логи жана жолдор бизнес сүрөттөр менен байланышкан. Шаблондор, туура панелдер, аннотациялар жана алерталар маалыматтарды чечимдерге айландырат: тез диагноз, болжолдуу релиздер жана башкарылуучу байкоо наркы.

Contact

Биз менен байланышыңыз

Кандай гана суроо же колдоо керек болбосун — бизге кайрылыңыз.Биз дайым жардам берүүгө даярбыз!

Telegram
@Gamble_GC
Интеграцияны баштоо

Email — милдеттүү. Telegram же WhatsApp — каалооңузга жараша.

Атыңыз милдеттүү эмес
Email милдеттүү эмес
Тема милдеттүү эмес
Билдирүү милдеттүү эмес
Telegram милдеттүү эмес
@
Эгер Telegram көрсөтсөңүз — Emailден тышкары ошол жактан да жооп беребиз.
WhatsApp милдеттүү эмес
Формат: өлкөнүн коду жана номер (мисалы, +996XXXXXXXXX).

Түшүрүү баскычын басуу менен сиз маалыматтарыңыздын иштетилишине макул болосуз.