GH GambleHub

错误预算和SLO管理

1)为什么SLO和错误预算

SLO(服务级别目标)是用户感知的目标质量级别;SLI是可测量的度量;Error Budget-每个窗口的偏差入场(通常为30/90天)。
错误预算将可靠性从"抽象"转换为可管理的资源:当预算迅速燃烧时-冻结菲奇和奇尼姆;当预算正常时-您可以加快发布速度。

2)SLI选择: 什么算是"好"

标准:"从用户的角度来看是成功的"。

2.1经典SLI

可用性:成功请求的百分比(不包括客户端取消的请求)。
'success=http_status ∈ {2xx,3xx,404}和没有时间表'(如果是期望的语义,则404可能被认为是读取API的成功)。
Latency:请求的百分比快于阈值(例如p95 ≤ 300 ms)。

`good_latency = duration_ms ≤ 300`.

Freshness/Staleness:"数据不超过X分钟"(缓存、目录、系数)。
质量:结果正确(通过业务验证器/后端不变量)。

2.2边界和段

SLI必须从重要的部分中考虑:"route","tenant/brand","region/jurisdiction","payment_provider"。因此,您不会"侵蚀"整个系统中单个关键手柄的故障。

3)公式和预算

3.1基于Request(最好用于API)


SLO_availability = good_requests / total_requests
Error_budget = 1 - SLO_target
Burn = 1 - SLO_actual

3.2个基于时间的(用于后台服务/流媒体)


SLO_uptime = good_minutes / total_minutes

3.3目标示例

API通用: 99。30天内可用性的9% →预算=0。1%.

关键支付笔: 99。95%;目录/搜索:99。5%.

潜伏期:p95 ≤ 300毫秒对'/v1/payments',p99 ≤ 800毫秒。

4)SLI指导

4.1项原则

Logi/Traces →带有显式桶的RED (Rate/Errors/Duration)度量标准。
请务必提供"tenant"、"region"、"route_class"(没有PII)。
考虑两个指标:"成功"和"一切",对于后坐力-"快速"和"一切"。

4.2 Prometheus示例(5m的价格)

promql
Availability (successes/total)
sli:success:rate5m = sum by(region, route)(
rate(http_requests_total{code=~"2..    3.."}[5m])
)
sli:total:rate5m = sum by(region, route)(
rate(http_requests_total[5m])
)
sli:availability:ratio5m = sli:success:rate5m / sli:total:rate5m

Latency (fraction faster than 300 ms)
sli:fast:rate5m = sum by(region, route)(
rate(http_request_duration_seconds_bucket{le="0. 3"}[5m])
)
sli:latency_ok:ratio5m = sli:fast:rate5m / sli:total:rate5m

5) Alerta按燃烧率计算(多窗口、多燃烧)

5.1个想法

我们正在研究预算相对于目标的燃烧速度。如果在短窗口和长窗口上速度很高-信号。

5.2阈值配置文件(适用于SLO 99.9%)

分页:burn rate ≥ 14。4 × (1小时预算的10%,6小时预算的5%)。
Tiket:燃烧率≥ 6 ×(6小时2%,24小时1%)。

5.3规则示例(Prometheus,pseudo)

promql
Let's calculate the error_ratio on two windows short = 1 - (sum (rate (http_requests_total{code=~"2..    3.."}[5m])) /
sum(rate(http_requests_total[5m])))
long = 1 - (sum(rate(http_requests_total{code=~"2..    3.."}[1h])) /
sum(rate(http_requests_total[1h])))

For SLO = 99. 9%, error_budget=0. 001. BurnRate = error_ratio / 0. 001 burn_short = short / 0. 001 burn_long = long / 0. 001

Paging: Both windows exceed 14. 4× alert: SLOErrorBudgetBurnRateHigh expr: burn_short > 14. 4 and burn_long > 14. 4 for: 5m labels: { severity="page" }
annotations:
summary: "SLO burn rate high (short & long windows)"
runbook: "slo/runbooks/payments. md"

同样,tiket在6h/24 h。

6)预算办公室: 程序

6.1个发布门户

如果预算余额为<25%,趋势为负值-fici上的"冻结代码",则SRE/可持续性的优先级。

金丝雀发行版必须具有单独的SLO剪辑('部署。environment="canary"`).

6.2 beclog优先级

按燃烧速度和收入影响比例分配团队容量。

用指标证明技术债务是合理的: "fix X将使燃烧率降低Y%。"

6.3事后事件

每个事件都是RCA和"无法回滚的假人"(动作),控制权"是否已返回SLO"。

7) SLO作为代码

7.1 SLO清单(YAML)示例)

yaml service: payments-api owner: team-payments slis:
- name: availability type: request_based success_query: sum(rate(http_requests_total{svc="pay",code=~"2..    3.."}[5m]))
total_query:  sum(rate(http_requests_total{svc="pay"}[5m]))
objective: 99. 95 window: 30d segments: ["region", "tenant", "route"]
- name: latency_p95_300ms type: latency_threshold good_query: sum(rate(http_request_duration_seconds_bucket{svc="pay",le="0. 3"}[5m]))
total_query: sum(rate(http_request_duration_seconds_count{svc="pay"}[5m]))
objective: 99. 0 window: 30d alerts:
- name: burn_high_page windows: ["5m", "1h"]
threshold_burn: 14. 4 severity: page

7.2规则生成

使用生成器(slo-generator, pyrra, sloth)自动生成规则、行车记录和报告。

8)SLO降解和保护

Load shedder:在高峰时给出没有"昂贵"依赖性的快速答桉。

Cache & stale: `stale-while-revalidate` для read.

Rate/Concurrency限制:保护后端;重要路线是优先级。
电路/时间表:快速时间表和"倒退"分支。
功能闪光灯:一键关闭重型幻灯片。

9) SLO的可观察性

Dashbords:SLO actual vs target,预算余额,burn rate,路线/提供商捐款。
相关:从SLO的"漏洞"→ →特定的跟踪→ 逻辑/profile。
报告:每周-趋势,预算消费,退化的最高原因。

10)反模式

一个"全球"SLO适用于所有→掩盖了问题。分段。
«99.99%全部"不考虑成本和现实。从用户体验中选择目标。
根据CPU/heap代替burn rate/SLO。
忽略破坏UX的4 x/长重复。
不透明窗口(滚动vs日历)-比较"苹果与橙子"。

11) iGaming/财务细节

货币路径(存款/结算):单独的SLO高于总体水平(例如,99。95%的可用性;p95 ≤ 250毫秒)。
PSP/KYC提供商:每个提供商+Alerta的SLO对燃烧的贡献;自动路由切换(智能路由)。
司法管辖区/特南特:SLO和"区域/司法/品牌"预算,以使本地问题不会"淹没"全球度量标准。
负责任的游戏:SLO应用限制/自我体验(compliance formulation)的时间。
审计/监管:保存SLO和事件报告;内部审计的透明度。

12)准备就绪支票清单

  • 由SLI (可用性/latency/quality/freshness)和路段(route/tenant/region)定义。
  • 目标(SLO)是现实的,与业务一致;有30/90天的滚动窗口。
  • Alerta的燃烧率与多窗口(分页/滴答声)。
  • SLO作为代码(规则/dashbord生成器);预算报告。
  • 释放门与预算余额挂钩;金丝雀切片。
  • 已实施并测试了降解机制(shedder、cache stale、circuit、limits)。
  • 指标↔跟踪的相关性(exemplars),清晰的运行手册。
  • 财务/司法途径-单独的SLO/Alertes;PSP/KYC分类。
  • 定期复古事件和基于燃烧的可靠性投资。

13) TL;DR

通过用户价值定义SLI,设置逼真的SLO,并通过多窗口通过Error Budget和burn rate进行控制。按计划启用SLO代码、发布门和降级。按路线/特南特/地区细分;对于金钱的路径,保持更严格的目标和单独的差。

Contact

联系我们

如需任何咨询或支持,请随时联系我们。我们随时准备提供帮助!

Telegram
@Gamble_GC
开始集成

Email — 必填。Telegram 或 WhatsApp — 可选

您的姓名 可选
Email 可选
主题 可选
消息内容 可选
Telegram 可选
@
如果填写 Telegram,我们也会在 Telegram 回复您。
WhatsApp 可选
格式:+国家代码 + 号码(例如:+86XXXXXXXXX)。

点击按钮即表示您同意数据处理。