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.
- '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.
- 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.
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.