GH GambleHub

Grafana და მონაცემთა ვიზუალიზაცია

(განყოფილება: ტექნოლოგიები და ინფრასტრუქტურა)

მოკლე რეზიუმე

Grafana - მთელი დაკვირვების ფანჯარა: მეტრიკა, ლოგოები, ტრეკები, ბიზნეს ინდიკატორები და ალერტები ერთ ადგილზე. IGaming- ისთვის ეს: p95/p99 მონიტორინგი, გადახდის კონვერტაცია, Time-to-Wallet, თამაშის პროვაიდერების ხელმისაწვდომობა, ინციდენტების გეო განაწილება და გამოშვებების შედარება. წარმატება: შაბლონები (ცვლადები), გასაგები პანელები, გამოშვებების ვიდეოები, SLO დაშბორდები და დაშვების უფლებების დისციპლინა.

1) კავშირის არქიტექტურა

Datasources: Prometheus (მეტრიკა), Loki/ELK (ლოგოები), Tempo/Jaeger (ტრეისერები), ClickHouse/BigQuery/PG (ბიზნეს მონაცემები), OTLP P- ის საშუალებით Gateway.
საკვანძო კავშირები: მეტრიკიდან - 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, ვერსია, გამოშვების ტიპი (ცისფერი/ლურჯი-მწვანე).

3) ცვლადი და ტემპლატინგი

ცვლადები ერთ დაშბორდს ბევრს აქცევს.

მაგალითი (Prometheus query-variable):
  • Name: `service`
  • Query: `label_values(up, service)`
  • Multi შერჩევა + include all - მოსახერხებელია აგრეგატებისთვის.
კასკადის ცვლადები:
  • `region` → `env` → `service` → `instance`.
  • გამოიყენეთ 'regex '/' sort' UX და 'refresh: On dashboard load'.

4) პანელები და ვიზუალიზაციის ტიპები

Time series: p50/p95/p99, error-rate, throughput.
Stat/Gauge: მიზნები KPI (ავიაკომპანია, TTW p95).
Bar gauge/Table: ტოპ N მარშრუტები/PSP/თამაშების პროვაიდერები.
Geomap: ინციდენტების/ლატენტობის თერმული რუქები ქვეყნის მიხედვით/ROP.
Canvas: სქემატური ნაკადები (Player - API - PSP - Bank).
Node graph: სერვისების დამოკიდებულება, შეცდომების ფერი.

ტრანსფორმაციები:
  • Labels to fields, Outer Join (მეტრიკის და ბიზნეს ცხრილების წებოვანი), Reduce (max/max/avg), Add vield 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 სწრაფი გადასვლა ტრასაზე (ექსპლარები)

პანელში 'Time series' ჩართეთ Exemplars დაწკაპუნებით წერტილის გასწვრივ. იხსნება Tempo 'trace _ id'.

5. 5 Logs trace _ id (Loki)

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

6) სურათები და მოვლენები

Release annotations: Automous ღონისძიების დამატება (ვერსია, ავტორი, კანარის წონა).
Incident/Freeze: ინციდენტის დაწყების/დასრულების ნიშნები და გაყინვის ფანჯრები.
ბიზნეს ღონისძიებები: ძირითადი კამპანიები/ტურნირები - მოაწყეთ გრაფიკები.

7) ალერტა გრაფანაში

Alert rules ცენტრალურია (Prometheus/Loki/Cloud- ის საფუძველზე).
Contact points: PagerDuty/Slack/Email; Notification policies (საქაღალდე/ჭდეები).
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) Provizhining, როგორც კოდი (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), ჯგუფები, რომლებიც ასრულებენ საქაღალდეებს.
მონაცემთა ბაზების უფლებები: მხოლოდ საჭირო მამები, Viewer- ისთვის read-only.
PII ჰიგიენა: არ გაიყვანოთ ველები PII- დან პანელში; ლოგებისთვის - ფილტრაცია/შენიღბვა.
საიდუმლოებები: მხოლოდ Vault/Secure JSON fields- ის მეშვეობით, დაშბორდში „plaine ტექსტის“ გარეშე.

10) პროდუქტიულობა და ღირებულება

Prometheus- ში ჩაწერა მძიმე გამონათქვამებისთვის.
Downsampling/Retention გრძელი შენახვის ზურგჩანთებში.
დაშბორდის ქეში და გულწრფელი ინტერვალები (არა „1s“ ყველგან).
ცვლადის კარდინალურობის შეზღუდვა (ნუ შეცვლით 'user _ id '/' session _ id').
გადანაწილება: ცალკეული ინსტანციები/ფოლდერები ხმაურიანი გუნდებისთვის.

11) სპეციალიზირებული დაშბორდები iGaming- ისთვის

Payments: მცდელობები/წარმატება/TTW p95, შეცდომა PSP/მარშრუტზე, გადახრების გეო-რუკა.
Games/Providers: latence და error-rate სტუდიებში/თამაშებში, გაშვების კონვერტაცია.
Risk/Fraud: მოქმედების სიჩქარე, მოწყობილობების/IP, კორელაცია (ცხრილი + ბარი).
RG/კომპლექსი: სესიები> ბარიერი, სტეიკების ზრდა, ანომალიების ალერტები.
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 (მოქმედების ინსტრუქცია).
ბმულები დაკავშირებულ დაშბორდებზე (Payments-Infra (PSP).
Drilldown: მარკირების კლიშეები - ფილტრები (region/psp/route).
Variables defaults: 'env =', 'region = eu' - აჩქარებს დაწყებას.

14) განხორციელების სია

1. მონაცემთა ბაზების პარამეტრები: Prometheus/Loki/Tempo/SQL.
2. შეიყვანეთ საქაღალდეები და RBAC; უფლებების აუდიტი.
3. შექმენით შაბლონის ცვლადები (region/env/service).
4. ააშენეთ SLO დაშბორდები (availability, p95, error-rate, შეცდომების ბიუჯეტი).
5. დაამატეთ გამოცემების მენიუ და stable/canary შედარება.
6. ჩართეთ exemplars და გადასვლა ტრასებზე/დაწკაპუნებით.
7. ეს ალერტას პარამეტრები (მრავალჯერადი ფანჯრის ბურანი) და რუტინგი.
8. ყველაფერი კოდივით გააკეთეთ, შეინახეთ Git, გააკეთეთ შურისძიება.
9. ოპტიმიზაცია მოახდინეთ: ჩანაწერების რულეტები, ინტერვალები, ქეში.
10. შეიყვანეთ ბიზნეს დაშბორდები (TTW, გადახდის კონვერტაცია, GGR ბარათები).

15) ანტიპატერები

არაკოორდინირებული დაშბორდის ზოოპარკი ცვლადის და სტანდარტების გარეშე.
მძიმე PromQL პანელები ჩანაწერების გარეშე არის ნელი UI.
ყვავილების/ლეგენდების ჭარბი რაოდენობა/ღერძი-Y სხვადასხვა მასშტაბებით.
PII დაკავშირება Viewer- სთვის გახსნილ პანელში.
გამოცემების პრეზენტაციების არარსებობა უცნობია, საიდან მოდის ნახტომი.
ერთი „მონო“ დაშბორდი, ფოლადის სტრუქტურის ნაცვლად.

შედეგები

Grafana არის ინტერფეისი, სადაც ტექნიკა ხვდება პროდუქტს: მეტრიკა, ლოგოები და ბილიკები უკავშირდება ბიზნეს სურათებს. შაბლონები, სწორი პანელები, დოკუმენტები და ალერტები მონაცემებს გადაწყვეტილებებად აქცევს: სწრაფი დიაგნოზი, პროგნოზირებადი გამოშვებები და კონტროლირებადი დაკვირვების ღირებულება.

Contact

დაგვიკავშირდით

დაგვიკავშირდით ნებისმიერი კითხვის ან მხარდაჭერისთვის.ჩვენ ყოველთვის მზად ვართ დაგეხმაროთ!

Telegram
@Gamble_GC
ინტეგრაციის დაწყება

Email — სავალდებულოა. Telegram ან WhatsApp — სურვილისამებრ.

თქვენი სახელი არასავალდებულო
Email არასავალდებულო
თემა არასავალდებულო
შეტყობინება არასავალდებულო
Telegram არასავალდებულო
@
თუ მიუთითებთ Telegram-ს — ვუპასუხებთ იქაც, დამატებით Email-ზე.
WhatsApp არასავალდებულო
ფორმატი: ქვეყნის კოდი და ნომერი (მაგალითად, +995XXXXXXXXX).

ღილაკზე დაჭერით თქვენ ეთანხმებით თქვენი მონაცემების დამუშავებას.