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,我們將在 Email 之外,同步於 Telegram 回覆您。
WhatsApp 選填
格式:國碼 + 電話號碼(例如:+886XXXXXXXXX)。

按下此按鈕即表示您同意我們處理您的資料。