GH GambleHub

Grafana ve veri görselleştirme

(Bölüm: Teknoloji ve Altyapı)

Kısa Özet

Grafana, tüm gözlemlenebilirlik için bir vitrindir: metrikler, günlükler, izler, iş göstergeleri ve uyarılar tek bir yerde. IGaming için bunlar: p95/p99 izleme, ödeme dönüştürme, Time-to-Wallet, oyun sağlayıcı kullanılabilirliği, olayların coğrafi dağılımı ve istikrarlı vs kanarya. Başarı: şablonlar (değişkenler), anlaşılabilir paneller, sürüm ek açıklamaları, SLO panoları ve erişim hakları disiplini.

1) Bağlantı mimarisi

Veri kaynakları: Prometheus (metrikler), Loki/ELK (günlükler), Tempo/Jaeger (yollar), ClickHouse/BigQuery/PG (iş verileri), Gateway üzerinden OTLP.
Anahtar bağlantılar: "trace _ id'tarafından" exemplar "" trace metrik "ilgili günlüklerden.
Klasörler ve RBAC: ayrı klasörler 'SRE', 'Ödemeler', 'Risk', 'Oyunlar', 'BizOps'; роли 'Görüntüleyici/Editör/Yönetici' ayrıntılı izinler и.

2) Gösterge paneli tasarımı: ilkeler

1. 1-2 tıklamayla sorunun cevabı: SLO kartından detaylara.
2. Her hizmet + etki alanı kartları için KIRMIZI/KULLANIM (TTW, para yatırma dönüşümü).
3. Kararlı ızgara: 24 sütunlu, üstte büyük KPI, altta ayrıntılar.
4. Renkler ve eşikler: minimum, yalnızca SLA/SLO.
5. Sürüm ek açıklamaları: Git SHA, sürüm, sürüm türü (kanarya/mavi-yeşil).

3) Değişkenler ve şablonlar (şablonlama)

Değişkenler bir panoyu birçok panoya dönüştürür.

Örnek (Prometheus sorgu değişkeni):
  • Adı: 'Hizmet'
  • Sorgu: 'label _ values (up, service)'
  • Çoklu seçim + tümünü içerir - kümeler için uygundur.
Basamaklı değişkenler:
  • 'region' - 'env' - 'service' - 'instance'.
  • UX için 'regex'/' sort've' refresh: On dashboard load 'kullanın.

4) Paneller ve oluşturma türleri

Zaman serisi: p50/p95/p99, hata oranı, verim.
Stat/Gauge: Hedef KPI (kullanılabilirlik, TTW p95).
Bar göstergesi/Tablo: üst N yolları/PSP/oyun sağlayıcıları.
Geomap: ülkeye/ROR'a göre termal olay/gecikme haritaları.
Canvas: şematik akışlar (Player, API, PSP, Bank).
Düğüm grafiği: hizmet bağımlılıkları, hatalarla renklendirme.

Dönüşümler:
  • Alanlara etiketler, Dış birleştirme, Azalt (min/max/avg), Hesaplamadan alan ekle (dönüştürme).

5) Sorgu ve panel örnekleri

5. 1 p95 gecikme (PromQL)

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

5. 2 İsteklerin başarısı (SLO proxy)

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

5. 3 Ödeme dönüşümü (PromQL toplamı)

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

5. 4 Piste hızlı atlama (örnekler)

'Time series' panelinde, Examplars'ı açın - noktaya tıklamak - Tempo 'trace _ id'ile açılır.

5. 5 Loki trace_id

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

6) Açıklamalar ve olaylar

Sürüm ek açıklamaları: Tükenme sırasında bir olayın otomatik olarak eklenmesi (sürüm, yazar, kanarya ağırlığı).
Olay/Donma: Olay başlangıç/bitiş işaretleri ve donma pencerelerini serbest bırakın.
İş etkinlikleri: büyük kampanyalar/turnuvalar - grafiklerde işaretleyin.

7) Grafana'da Uyarılar

Merkezi olarak uyarı kuralları (Prometheus/Loki/Cloud tabanlı).
İletişim noktaları: PagerDuty/Slack/Email; Bildirim ilkeleri (klasör/etiketlere göre köklendirme).
Çok pencereli yanma oranı: hızlı ve yavaş bütçe kavurma.
Sessizlikler: zamanlanmış pencerelerde ve kopyalarla.

P95 için örnek ifade:
promql histogram_quantile(0. 95,
sum by (le, service) (rate(http_request_duration_seconds_bucket{service="$service"}[5m]))
) > 0. 25

8) Kod olarak sağlama (IaC)

Kaynakları/panoları/uyarıları Git'te saklayı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

gösterge tablosu. Yaml

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

grafana. ini (parça)

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

9) Güvenlik ve erişim

SSO (OIDC/SAML), gruplar - roller - klasörler.
Veri kaynakları için haklar: yalnızca gerekli klasörler, Görüntüleyici için salt okunur.
PII hijyeni: panelde PII ile alanları çekmeyin; günlükler için - filtre/maske.
Sırlar: Yalnızca Vault/güvenli JSON alanları aracılığıyla, panolarda "düz metin" olmadan.

10) Performans ve maliyet

Prometheus'ta ağır ifadeler için kayıt kuralları.
Uzun süreli depolama arka uçlarında altörnekleme/tutma.
Pano önbelleği ve adil aralıklar (her yerde "1s'değil).
Değişkenlerin kardinalite kısıtlaması ('user _ id'/' session _ id' yerine geçmez).
Yeniden dağıtım: gürültülü ekipler için ayrı örnekler/klasörler.

11) iGaming için özel panolar

Ödemeler: girişimler/başarı/TTW p95, PSP/rota hatası, coğrafi sapma haritası.
Oyunlar/Sağlayıcılar: Stüdyo/oyuna göre gecikme ve hata oranı, başlatma dönüşümü.
Risk/Dolandırıcılık: eylem hızı, cihaz patlamaları/IP, korelasyonlar (tablo + bar-gage).
RG/Uyumluluk: oturumlar> eşikler, biftek büyümesi, anomali uyarıları.
Release Compare: P95/hata/iş metrikleri ile kanarya vs kararlı.
Infra/USE: Küme ve Kuyruğa Göre Kullanım/Doygunluk/Hatalar.

12) Bir JSON kontrol paneli örneği (parça)

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) Runbook'lar ve UX geliştirmeleri

Her uyarının bir Runbook URL'si (eylem talimatı) vardır.
İlgili panolara bağlantılar (Ödemeler ↔ Infra ↔ PSP).
Drilldown: etiketlere tıklar - filtreler (bölge/psp/rota).
Değişkenler varsayılanlar: 'env = prod', 'region = eu' - başlangıcı hızlandırır.

14) Uygulama kontrol listesi

1. Veri kaynaklarını yapılandırın: Prometheus/Loki/Tempo/SQL.
2. Klasörleri ve RBAC girin; hak denetimi.
3. Şablon değişkenleri oluşturun (bölge/env/hizmet).
4. SLO panoları oluşturun (kullanılabilirlik, p95, hata oranı, hata bütçesi).
5. Sürüm ek açıklamaları ve kararlı/kanarya karşılaştırmaları ekleyin.
6. Örnekleri etkinleştirin ve tıklayarak izlere/günlüklere gidin.
7. Uyarıları (çoklu pencere yakma hızı) ve köklemeyi yapılandırın.
8. Her şeyi kod olarak sağlayın, Git'te saklayın, bir inceleme yapın.
9. Performansı optimize edin: kayıt kuralları, aralıklar, önbellek.
10. İş panolarını girin (TTW, ödeme dönüştürme, GGR kartları).

15) Antipatterns

"Zoo" değişken ve standartlar olmadan tutarsız panoları.
Kayıt kuralları olmayan ağır PromQL'li paneller - yavaş UI.
Farklı ölçeklerde renklerin/efsanelerin/Y ekseninin fazlalığı.
Görüntüleyici için açılan panellerde PII bağlantısı.
Sürüm ek açıklamalarının olmaması - atlamaların nereden geldiği açık değildir.
Bir klasör yapısı yerine bir "monovew" panosu.

Özet

Grafana, tekniğin ürünle buluştuğu arayüzdür: metrikler, günlükler ve izler iş resimlerine bağlanır. Şablonlar, doğru paneller, ek açıklamalar ve uyarılar verileri çözümlere dönüştürür: hızlı teşhis, öngörülebilir sürümler ve yönetilebilir gözlemlenebilirlik maliyeti.

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Telegram
@Gamble_GC
Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.