Grafana和數據可視化
(部分: 技術和基礎設施)
簡短摘要
格拉法納(Grafana)是所有可觀察性的展示:度量,標誌,跟蹤,業務指標和異物在一個位置。對於iGaming,這些是:p95/p99監視,付款轉換,時間到錢包,遊戲提供商的可用性,事件的地理分布以及發布比較(stable vs canary)。成功:模板(變量),可理解的面板,版本註釋,SLO-dashbords和訪問權限學科。
1)連接架構
Datasources:Prometheus(度量),Loki/ELK(徽標),Tempo/Jaeger(步道),ClickHouse/BigQuery/PG(業務數據),OTLP通過Gateway。
關鍵鏈接:從→ exemplar → trace度量標準→通過「trace_id」鏈接的邏輯。
文件夾和RBAC: 個別文件夾「SRE」,「Payments」,「Risk」,「Games」,「BizOps」;роли `Viewer/Editor/Admin` и granular permissions.
2)dashbords設計: 原理
1.1-2點擊問題的答案:從SLO卡到細節。
2.每個服務的RED/USE+域卡(TTW,存款轉換)。
3.穩定網格:24柱,頂部大KPI,底部細節。
4.顏色和閾值:最低,僅通過SLA/SLO。
5.發行註釋:Git SHA,版本,發行類型(金絲雀/藍綠色)。
3)變量和template(templating)
變量將單個差速器轉換為多個。
示例(Prometheus查詢可變性):- Name: `service`
- Query: `label_values(up, service)`
- Multi-select+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 p 95)。
Bar gauge/Table:前N 路線/PSP/遊戲提供商。
Geomap:按國家/ROR分列的事件/潛伏熱圖。
Canvas:示意圖流(Player → API → PSP → Bank)。
Node graph:服務依賴性,著色錯誤。
- 字段標簽,外部連接(縮放指標和業務表),重做(min/max/avg),從計算中添加字段(轉換)。
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快速跳上賽道(exemplars)
在「Time series」面板中,啟用Exemplars →點擊點→以「trace_id」打開Tempo。
5.5 Logi by trace_id (Loki)
logql
{service="$service"} = "$traceID"
6)註釋和事件
Release annotations:在失效時自動添加事件(版本、作者、金絲雀重量)。
事件/Freeze:事件開始/結束標記和發布凍結窗口。
商業活動:大型活動/錦標賽-在圖表上標記。
7) Alerta在Grafana
警告規則是集中的(基於Prometheus/Loki/Cloud)。
Contact points: PagerDuty/Slack/Email;通知政策(按文件夾/標簽排序)。
多窗口燃燒率:快速而緩慢的預算泛光燈。
Silences:在計劃窗口和重復窗口中。
promql histogram_quantile(0. 95,
sum by (le, service) (rate(http_request_duration_seconds_bucket{service="$service"}[5m]))
) > 0. 25
8)Provigining作為代碼(IaC)
在Git 中存儲源/dashbords/alerta。
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),→ →文件夾角色的組。
Datasources的權利:僅適用於適當的文件夾,只適用於Viewer。
PII衛生:不要在面板上拉動PII的田地;對於登錄,過濾或偽裝。
秘密:僅通過Vault/secure JSON fields,在行車記錄板中沒有「格子文本」。
10)性能和成本
Prometheus中用於重表達的記錄規則。
在長期存儲後端下裝/保留。
行車記錄緩存和誠實間隔(無處不在「1s」)。
限制變量的基數(不要替代「user_id」/「session_id」)。
重新分配:用於嘈雜命令的單個實例/子集。
11)專用iGaming dashboard
Payments:嘗試/成功/TTW p 95,PSP/路線錯誤,地理偏差圖。
Games/Providers:工作室/遊戲的延遲和錯誤率,啟動轉換。
Risk/Fraud:動作速度,設備/IP爆發,相關性(表+bar gage)。
RG/Compliance:會議>閾值,牛排生長,異常變異。
Release Compare:在p95/error/業務指標上穩定 vs金絲雀。
Infra/USE: Utilization/Saturation/Errors跨群集和隊列。
12) JSON dashboard示例(片段)
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改進
每個Alert都是Runbook URL(操作說明)。
鏈接到相關行車記錄儀(Payments ↔ Infra ↔ PSP)。
Drilldown:按標簽點擊→過濾器(區域/psp/路線)。
Variables defaults:「env=prod」,「region=eu」-加速啟動。
14)實施支票
1.自定義datasources: Prometheus/Loki/Tempo/SQL。
2.輸入文件夾和RBAC;權利審計。
3.創建模板變量(region/env/service)。
4.構建SLO-dashbords(可用性,p95, error-rate,錯誤預算)。
5.添加版本註釋和stable/canary比較。
6.通過點擊打開exemplars並切換到軌道/邏輯。
7.配置Alerta(多窗口燃燒率)和Ruting。
8.把所有的東西都像代碼一樣,儲存在Git中,做咆哮。
9.優化性能:記錄規則、間隔、緩存。
10.輸入商務行車記錄(TTW、付款轉換、GGR卡)。
15)反模式
沒有變量和標準的「動物園」不協調的行車記錄儀。
沒有記錄規則的沈重PromQL面板→緩慢的UI。
顏色過剩/傳說/軸對Y的比例不同。
在Viewer打開的面板中連接PII。
沒有發布註釋-不清楚跳躍來自何處。
一個「monovyo」 dashbord代替folder結構。
結果
Grafana是技術與產品相遇的接口:度量,徽標和路線與商業圖片相連。模板,正確的面板,註釋和變量將數據轉化為解決方案:快速診斷,可預測的發布以及可觀察性的管理成本。