GH GambleHub

Qrafana və verilənlərin vizuallaşdırılması

(Bölmə: Texnologiya və Infrastruktur)

Qısa xülasə

Grafana - bütün müşahidə vitrini: metrika, log, izləmə, biznes göstəriciləri və bir yerdə alert. iGaming üçün bu: p95/p99 monitorinqi, ödəniş konvertasiyası, Time-to-Wallet, oyun provayderlərinin mövcudluğu, hadisələrin geo-paylanması və relizlərin müqayisəsi (stable vs canary). Uğur: şablonlar (dəyişənlər), başa düşülən panellər, buraxılış izahları, SLO dashboard və giriş hüquqları intizamı.

1) Qoşulma arxitekturası

Datasources: Prometheus (metriklər), Loki/ELK (log), Tempo/Jaeger (treys), ClickHouse/BigQuery/PG (biznes məlumatları), Gateway vasitəsilə OTLP.
Açar əlaqələr: metrika → exemplar → trace → bağlı log 'trace _ id'.
Qovluqlar və RBAC: ayrı-ayrı qovluqlar 'SRE', 'Payments', 'Risk', 'Games', 'BizOps'; роли `Viewer/Editor/Admin` и granular permissions.

2) Daşbordların dizaynı: prinsiplər

1. 1-2 klik üçün suala cavab: SLO kartdan detallara.
2. Hər xidmət üzrə RED/USE + domen kartları (TTW, depozit konvertasiyası).
3. Sabit Mesh: 24-sütun, böyük KPI üst, alt hissələri.
4. Rənglər və eşiklər: minimum, yalnız SLA/SLO.
5. Buraxılış şərhləri: Git SHA, versiyası, buraxılış növü (canary/blue-green).

3) Dəyişənlər və temperatur (templating)

Dəyişənlər bir dashboard çox çevirir.

Nümunə (Prometheus query-variable):
  • Name: `service`
  • Query: `label_values(up, service)`
  • Multi-select + include all - aqreqatlar üçün əlverişlidir.
Kaskad dəyişənləri:
  • `region` → `env` → `service` → `instance`.
  • UX üçün 'regex '/' sort' və 'refresh: On dashboard load' istifadə edin.

4) Panellər və vizualizasiya növləri

Time series: p50/p95/p99, error-rate, throughput.
Stat/Gauge: Hədəf KPI (availability, TTW p95).
Bar gauge/Table: Top-N marşrutları/PSP/oyun provayderləri.
Geomap: ölkələrə/ROR-a görə hadisələrin/gizli istilik xəritələri.
Canvas: sxematik axınlar (Player → API → PSP → Bank).
Node graph: xidmətlərin asılılığı, səhv rəngləmə.

Transformasiyalar:
  • Labels to fields, Outer join (metrik və iş cədvəlləri yapışdırma), Reduce (min/max/avg), Add field from calculation (dönüşüm).

5) Sorğu və panel nümunələri

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 Sorğuların müvəffəqiyyəti (SLO proxy)

promql sum(rate(http_requests_total{service="$service",status=~"2..    3.."}[5m]))
/
sum(rate(http_requests_total{service="$service"}[5m]))

5. 3 Ödənişlərin konvertasiyası (PromQL aqreqat)

promql sum(rate(payments_success_total{psp=~"$psp",currency=~"$currency"}[15m]))
/
sum(rate(payments_attempt_total{psp=~"$psp",currency=~"$currency"}[15m]))

5. 4 Sürətli atlama (exemplars)

'Time series' panelində Exemplars 'ı daxil edin → nöqtəyə basın → Tempo ilə 'trace _ id' açılır.

5. 5 Loki trace_id

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

6) Şərhlər və hadisələr

Release annotations: deploye (versiyası, müəllif, kanarya çəkisi) hadisənin avtomatik əlavə.
Incident/Freeze: hadisənin başlanğıcı/sonu işarələri və relizlərin dondurulması pəncərələri.
Biznes tədbirləri: böyük kampaniyalar/turnirlər - cədvəllərdə qeyd edin.

7) Alerta ilə Grafana

Alert rules mərkəzləşdirilmiş (Prometheus/Loki/Cloud bazasında).
Contact points: PagerDuty/Slack/Email; Notification policies (qovluq/etiketlərə görə ruting).
Multi-window burn-rate: büdcə tez və yavaş bişir.
Silences: planlaşdırılan pəncərələrdə və dublikatlarda.

p95 üçün ifadə nümunəsi:
promql histogram_quantile(0. 95,
sum by (le, service) (rate(http_request_duration_seconds_bucket{service="$service"}[5m]))
) > 0. 25

8) Kod kimi provijininq (IaC)

Git-də mənbələri/daşbordları/alertləri saxlayın.

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 (fraqment)

ini
[auth]
disable_login_form = false
[users]
viewers_can_edit = false
[alerting]
enabled = true
[unified_alerting. screenshots]
capture = true

9) Təhlükəsizlik və giriş

SSO (OIDC/SAML), qruplar → rollar → qovluqlar.
datasources hüquqları: Viewer üçün yalnız lazımi qovluqlar, read-only.
PII-gigiyena: paneldə PII ilə sahələri çəkməyin; log üçün - süzün/maskalayın.
Sirlər: yalnız Vault/secure JSON fields vasitəsilə, dashboard «plain mətn» olmadan.

10) Performans və dəyəri

ağır ifadələr üçün Prometheus Recording rules.
Uzun saxlama arxalarında Downsampling/Retention.
Dashboard cache və dürüst intervalları (hər yerdə «1s» deyil).
Dəyişənlərin kardinallığının məhdudlaşdırılması ('user _ id '/' session _ id' əvəz etməyin).
Yenidən bölüşdürmə: səs-küylü komandalar üçün ayrı-ayrı instansiyalar/folderlər.

11) iGaming üçün xüsusi daşbordlar

Payments: cəhdlər/uğur/TTW p95, PSP/marşrut xətası, geo-kart sapmaları.
Games/Providers: latency və error-rate studiya/oyun, başlanğıc dönüşüm.
Risk/Fraud: hərəkət sürəti, cihaz/IP sıçrayışları, korrelyasiya (cədvəl + bar-geyj).
RG/Compliance: sessiyalar> eşik, biftek böyüməsi, anomaliyalar üzrə alertlər.
Release Compare: p95/error/biznes metrikləri ilə stabil vs kanarya.
Infra/USE: Utilization/Saturation/Errors.

12) JSON Dashboard nümunəsi (fraqment)

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 və UX təkmilləşdirilməsi

Hər bir alert - Runbook URL (hərəkət təlimatı).
Links bağlı dashboard (Payments, Infra, PSP).
Drilldown: etiketlərə basın → filtrlər (region/psp/route).
Variables defaults: 'env = prod', 'region = eu' - başlanğıcı sürətləndirir.

14) Giriş çek siyahısı

1. datasources konfiqurasiya: Prometheus/Loki/Tempo/SQL.
2. Qovluqları və RBAC daxil edin; hüquqların auditi.
3. Şablon dəyişənləri (region/env/service) yaradın.
4. SLO daşbordları (availability, p95, error-rate, səhv büdcəsi) qurun.
5. Reliz uzantıları və stable/canary müqayisə əlavə edin.
6. exemplars daxil edin və basın yollar/log keçid.
7. Alertlər (multi-window burn-rate) və rutinq konfiqurasiya.
8. Hər şeyi kod kimi təmin edin, Git-də saxlayın, review edin.
9. Performans optimallaşdırın: recording rules, intervallar, cache.
10. Biznes daşbordları (TTW, ödəniş konvertasiyası, GGR kartları) daxil edin.

15) Antipattern

«Zoopark» dəyişən və standartları olmayan razılaşdırılmamış daşbordlar.
recording rules → yavaş UI olmadan ağır PromQL ilə panellər.
Müxtəlif şkalalar ilə həddindən artıq rəng/əfsanə/Y oxu.
Viewer üçün açıq paneldə PII bağlantısı.
Buraxılışların qeydlərinin olmaması - atların haradan gəldiyi bəlli deyil.
Folder quruluşu əvəzinə bir «monovyu» daşbord.

Nəticələr

Grafana - texnologiyanın məhsulla qarşılaşdığı interfeys: metriklər, loglar və treklər biznes şəkilləri ilə birləşir. Şablonlar, düzgün panellər, izahatlar və qərarlar məlumatları həllərə çevirir: sürətli diaqnoz, proqnozlaşdırıla bilən buraxılışlar və idarə edilə bilən müşahidə dəyəri.

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

Telegram
@Gamble_GC
İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.