GH GambleHub

Grafana și vizualizarea datelor

(Secțiunea: Tehnologie și infrastructură)

Scurt rezumat

Grafana este o casetă de prezentare pentru toată observabilitatea: valori, busteni, urme, indicatori de afaceri și alerte într-un singur loc. Pentru iGaming, acestea sunt: monitorizarea p95/p99, conversia plăților, Time-to-Wallet, disponibilitatea furnizorului de jocuri, geo-distribuția incidentelor și stabil vs canar. Succes: șabloane (variabile), panouri ușor de înțeles, adnotări de lansare, tablouri de bord SLO și disciplina drepturi de acces.

1) Arhitectura conexiunii

Resurse de date: Prometheus (metrics), Loki/ELK (logs), Tempo/Jaeger (trails), ClickHouse/BigQuery/PG (business data), OTLP prin Gateway.
Link-uri cheie: din → exemplar → urme metrice → jurnalele legate de 'trace _ id'.
Dosare și RBAC: foldere separate "SRE", "Plăți", "Risc", "Jocuri", "BizOps'; роли 'Viewer/Editor/Admin' и permisiuni granulare.

2) Design tablou de bord: principii

1. Răspunsul la întrebarea din 1-2 clicuri: de la card SLO la detalii.
2. RED/UTILIZARE pentru fiecare serviciu + carduri de domeniu (TTW, conversie depozit).
3. Grilă stabilă: 24 coloane, KPI mare pe partea de sus, detalii pe partea de jos.
4. Culori și praguri: minim, numai SLA/SLO.
5. Adnotări de lansare: Git SHA, versiune, tip de lansare (canar/albastru-verde).

3) Variabile și șabloane (șablon)

Variabilele transformă un tablou de bord în multe.

Exemplu (Prometheus interogare-variabilă):
  • Denumire: 'service'
  • Interogare: 'label _ values (up, service)'
  • Multi-select + include toate - convenabil pentru agregate.
Variabile în cascadă:
  • „region” → „env” → „serviciu” → „instanţă”.
  • Utilizați „regex ”/„ sort” pentru UX și „refresh: La încărcarea tabloului de bord”.

4) Panouri și tipuri de randare

Seria de timp: p50/p95/p99, rata de eroare, debit.
Stat/Ecartament: KPI țintă (disponibilitate, TTW p95).
Bar ecartament/masă: rutele de top N/PSP/furnizorii de jocuri.
Geomap: hărți termice/latență pe țări/ROR.
Canvas: fluxuri schematice (Player → API → PSP → Bank).
Nod grafic: dependențe de serviciu, colorare prin erori.

Transformări:
  • Etichete în câmpuri, Îmbinare exterioară, Reducere (min/max/avg), Adăugare câmp din calcul (conversie).

5) Exemple de interogări și panouri

5. 1 p95 latență (PromQL)

promql histogram_quantile(0. 95,
sum by (le, route) (rate(http_request_duration_seconds_bucket{service="$service",region="$region"}[5m]))
)

5. 2 Succesul cererilor (proxy SLO)

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

5. 3 Conversia plăților (agregat PromQL)

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

5. 4 Salt rapid în pistă (exemplare)

În panoul „Seria timp”, activați Examplars → făcând clic pe punctul → Tempo se deschide cu 'trace _ id'.

5. 5 Loki trace_id

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

6) Adnotări și evenimente

Adnotări de lansare: auto-adăugarea unui eveniment în timpul epuizării (versiune, autor, greutate canară).
Incident/Înghețare: Semnele de pornire/sfârșit incidente și eliberarea ferestrelor înghețate.
Evenimente de afaceri: campanii mari/turnee - marcați pe diagrame.

7) Alerte la Grafana

Reguli de alertă la nivel central (bazate pe Prometheus/Loki/Cloud).
Puncte de contact: PagerDuty/Slack/Email; Politici de notificare (înrădăcinare prin folder/tags).
Multi-fereastră arde-rata: rapid şi lent buget prăjire.
Tăceri: în ferestre programate și cu duplicate.

Exemplu de expresie pentru p95:
promql histogram_quantile(0. 95,
sum by (le, service) (rate(http_request_duration_seconds_bucket{service="$service"}[5m]))
) > 0. 25

8) Alocarea ca cod (IaC)

Stocați surse/tablouri de bord/alerte în 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

tablou de bord. yaml

yaml apiVersion: 1 providers:
- name: sres folder: SRE type: file disableDeletion: false options:
path: /var/lib/grafana/dashboards/sre

grafana. ini (fragment)

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

9) Securitate și acces

SSO (OIDC/SAML), grupuri → roluri → foldere.
Drepturi la resurse de date: numai dosarele necesare, numai pentru citire pentru Viewer.
Igiena PII: nu trageți câmpuri cu PII în panou; pentru jurnale - filtru/mască.
Secrete: numai prin câmpurile Vault/Secure JSON, fără „text simplu” în tablouri de bord.

10) Performanță și cost

Reguli de înregistrare în Prometheus pentru expresii grele.
Downsampling/retenție în backend-uri de stocare pe termen lung.
Cache tablou de bord și intervale echitabile (nu "1s' peste tot).
Restricționarea cardinalității variabilelor (nu înlocuiți 'user _ id'/' session _ id').
Redistribuire: instanțe/foldere separate pentru echipe zgomotoase.

11) Tablouri de bord specializate pentru iGaming

Plăți: încercări/succes/TTW p95, PSP/eroare de traseu, hartă geo-deviație.
Jocuri/Furnizori: latență și eroare prin studio/joc, conversie lansare.
Risc/Fraudă: viteză de acțiune, explozii de dispozitive/IP, corelații (tabel + bar-gage).
RG/Conformitate: sesiuni> praguri, cresterea fripturii, alerte de anomalie.
Release Compare: stabil vs canar by p95/error/business metrics.
Infra/UTILIZARE: Utilizare/Saturație/Erori de cluster și coadă.

12) Exemplu de tablou de bord JSON (fragment)

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 și îmbunătățiri UX

Fiecare alertă are un URL Runbook (instrucțiuni de acțiune).
Link-uri către tablourile de bord aferente (Plăți ↔ Infra ↔ PSP).
Drilldown: clicuri pe etichete → filtre (regiune/psp/traseu).
Variabilele implicite: 'env = prod', 'region = eu' - accelerează pornirea.

14) Lista de verificare a implementării

1. Configurați resursele de date: Prometheus/Loki/Tempo/SQL.
2. Introduceți dosare și RBAC; auditul drepturilor.
3. Creați variabile șablon (regiune/env/serviciu).
4. Construiți tablouri de bord SLO (disponibilitate, p95, rată de eroare, buget de eroare).
5. Adăugați adnotări de eliberare și comparații stabile/canare.
6. Activați exemplare și mergeți la urme/jurnale făcând clic.
7. Configurați alerte (multi-fereastră arde-rata) și înrădăcinare.
8. Furnizarea totul ca cod, magazin în Git, face o revizuire.
9. Optimizați performanța: reguli de înregistrare, intervale, memorie cache.
10. Introduceți tablouri de bord de afaceri (TTW, conversie de plată, carduri GGR).

15) Antipattern

„Zoo” tablouri de bord inconsistente, fără variabile și standarde.
Panouri cu PromQL grele, fără reguli de înregistrare → lent UI.
Supraabundenta de culori/legende/axa Y cu scale diferite.
Conexiune PII în panouri deschise pentru Viewer.
Lipsa adnotărilor de eliberare - nu este clar de unde provin salturile.
Un tablou de bord „monovew” în loc de o structură de foldere.

Rezumat

Grafana este interfața în care tehnica îndeplinește produsul: măsurători, jurnale și piese se conectează la imagini de afaceri. Șabloanele, panourile corecte, adnotările și alertele transformă datele în soluții: diagnostic rapid, eliberări previzibile și costuri de observabilitate ușor de gestionat.

Contact

Contactați-ne

Scrieți-ne pentru orice întrebare sau solicitare de suport.Suntem mereu gata să ajutăm!

Telegram
@Gamble_GC
Pornește integrarea

Email-ul este obligatoriu. Telegram sau WhatsApp sunt opționale.

Numele dumneavoastră opțional
Email opțional
Subiect opțional
Mesaj opțional
Telegram opțional
@
Dacă indicați Telegram — vă vom răspunde și acolo, pe lângă Email.
WhatsApp opțional
Format: cod de țară și număr (de exemplu, +40XXXXXXXXX).

Apăsând butonul, sunteți de acord cu prelucrarea datelor dumneavoastră.