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是技术与产品相遇的接口:度量,徽标和路线与商业图片相连。模板,正确的面板,注释和变量将数据转化为解决方案:快速诊断,可预测的发布以及可观察性的管理成本。