Slo Implementation

作者 wshobson46891e7e60da無授權條款收錄於 2026年10月8日更新於 2026年10月8日

Define and implement Service Level Indicators (SLIs) and Service Level Objectives (SLOs) with error budgets and alerting. Use when establishing reliability targets, implementing SRE practices, or measuring service performance.

僅含說明DevOps & Cloud
AI 產生的概覽

定義 SLI、SLO 與錯誤預算,並提供 Prometheus 規則與燃盡率告警,用於服務可靠性管理。

功能
提供定義服務等級指標(SLI)、服務等級目標(SLO)與錯誤預算的框架,包含可用性、延遲與耐久性 SLI 範例。它提供 SLO 目標對照表、錯誤預算政策、Prometheus 記錄規則、燃盡率告警規則以及 Grafana 儀表板查詢範例。隨附的參考檔案還包含更多範本與完整範例。
適用情境
適用於建立可靠性目標、落實 SRE 實務,或衡量使用者感受的服務效能。也適合需要建立以 SLO 為基礎的告警、追蹤錯誤預算,或設定可用性與延遲目標的團隊。
執行需求
僅為說明性內容,未附任何指令碼。若要套用範例,需要相容於 Prometheus 的指標環境,儀表板部分則需要 Grafana。此技能引用了隨附檔案 references/details.md。

SLO Implementation

Framework for defining and implementing Service Level Indicators (SLIs), Service Level Objectives (SLOs), and error budgets.

Purpose

Implement measurable reliability targets using SLIs, SLOs, and error budgets to balance reliability with innovation velocity.

When to Use

  • Define service reliability targets
  • Measure user-perceived reliability
  • Implement error budgets
  • Create SLO-based alerts
  • Track reliability goals

SLI/SLO/SLA Hierarchy

SLA (Service Level Agreement)  ↓ Contract with customersSLO (Service Level Objective)  ↓ Internal reliability targetSLI (Service Level Indicator)  ↓ Actual measurement

Defining SLIs

Common SLI Types

1. Availability SLI
promql
# Successful requests / Total requestssum(rate(http_requests_total{status!~"5.."}[28d]))/sum(rate(http_requests_total[28d]))
2. Latency SLI
promql
# Requests below latency threshold / Total requestssum(rate(http_request_duration_seconds_bucket{le="0.5"}[28d]))/sum(rate(http_request_duration_seconds_count[28d]))
3. Durability SLI
# Successful writes / Total writessum(storage_writes_successful_total)/sum(storage_writes_total)

Setting SLO Targets

Availability SLO Examples

SLO %Downtime/MonthDowntime/Year
99%7.2 hours3.65 days
99.9%43.2 minutes8.76 hours
99.95%21.6 minutes4.38 hours
99.99%4.32 minutes52.56 minutes

Choose Appropriate SLOs

Consider:

  • User expectations
  • Business requirements
  • Current performance
  • Cost of reliability
  • Competitor benchmarks

Example SLOs:

yaml
slos:  - name: api_availability    target: 99.9    window: 28d    sli: |      sum(rate(http_requests_total{status!~"5.."}[28d]))      /      sum(rate(http_requests_total[28d]))
  - name: api_latency_p95    target: 99    window: 28d    sli: |      sum(rate(http_request_duration_seconds_bucket{le="0.5"}[28d]))      /      sum(rate(http_request_duration_seconds_count[28d]))

Error Budget Calculation

Error Budget Formula

Error Budget = 1 - SLO Target

Example:

  • SLO: 99.9% availability
  • Error Budget: 0.1% = 43.2 minutes/month
  • Current Error: 0.05% = 21.6 minutes/month
  • Remaining Budget: 50%

Error Budget Policy

yaml
error_budget_policy:  - remaining_budget: 100%    action: Normal development velocity  - remaining_budget: 50%    action: Consider postponing risky changes  - remaining_budget: 10%    action: Freeze non-critical changes  - remaining_budget: 0%    action: Feature freeze, focus on reliability

SLO Implementation

Prometheus Recording Rules

yaml
# SLI Recording Rulesgroups:  - name: sli_rules    interval: 30s    rules:      # Availability SLI      - record: sli:http_availability:ratio        expr: |          sum(rate(http_requests_total{status!~"5.."}[28d]))          /          sum(rate(http_requests_total[28d]))
      # Latency SLI (requests < 500ms)      - record: sli:http_latency:ratio        expr: |          sum(rate(http_request_duration_seconds_bucket{le="0.5"}[28d]))          /          sum(rate(http_request_duration_seconds_count[28d]))
  - name: slo_rules    interval: 5m    rules:      # SLO compliance (1 = meeting SLO, 0 = violating)      - record: slo:http_availability:compliance        expr: sli:http_availability:ratio >= bool 0.999
      - record: slo:http_latency:compliance        expr: sli:http_latency:ratio >= bool 0.99
      # Error budget remaining (percentage)      - record: slo:http_availability:error_budget_remaining        expr: |          (sli:http_availability:ratio - 0.999) / (1 - 0.999) * 100
      # Error budget burn rate      - record: slo:http_availability:burn_rate_5m        expr: |          (1 - (            sum(rate(http_requests_total{status!~"5.."}[5m]))            /            sum(rate(http_requests_total[5m]))          )) / (1 - 0.999)

SLO Alerting Rules

yaml
groups:  - name: slo_alerts    interval: 1m    rules:      # Fast burn: 14.4x rate, 1 hour window      # Consumes 2% error budget in 1 hour      - alert: SLOErrorBudgetBurnFast        expr: |          slo:http_availability:burn_rate_1h > 14.4          and          slo:http_availability:burn_rate_5m > 14.4        for: 2m        labels:          severity: critical        annotations:          summary: "Fast error budget burn detected"          description: "Error budget burning at {{ $value }}x rate"
      # Slow burn: 6x rate, 6 hour window      # Consumes 5% error budget in 6 hours      - alert: SLOErrorBudgetBurnSlow        expr: |          slo:http_availability:burn_rate_6h > 6          and          slo:http_availability:burn_rate_30m > 6        for: 15m        labels:          severity: warning        annotations:          summary: "Slow error budget burn detected"          description: "Error budget burning at {{ $value }}x rate"
      # Error budget exhausted      - alert: SLOErrorBudgetExhausted        expr: slo:http_availability:error_budget_remaining < 0        for: 5m        labels:          severity: critical        annotations:          summary: "SLO error budget exhausted"          description: "Error budget remaining: {{ $value }}%"

SLO Dashboard

Grafana Dashboard Structure:

┌────────────────────────────────────┐│ SLO Compliance (Current)           ││ ✓ 99.95% (Target: 99.9%)          │├────────────────────────────────────┤│ Error Budget Remaining: 65%        ││ ████████░░ 65%                     │├────────────────────────────────────┤│ SLI Trend (28 days)                ││ [Time series graph]                │├────────────────────────────────────┤│ Burn Rate Analysis                 ││ [Burn rate by time window]         │└────────────────────────────────────┘

Example Queries:

promql
# Current SLO compliancesli:http_availability:ratio * 100
# Error budget remainingslo:http_availability:error_budget_remaining
# Days until error budget exhausted (at current burn rate)(slo:http_availability:error_budget_remaining / 100)*28/(1 - sli:http_availability:ratio) * (1 - 0.999)

Additional patterns and templates

More detailed templates and worked examples live in references/details.md. Read that file for the full pattern library.

來源與署名

來源:wshobson/agents位於plugins/observability-monitoring/skills/slo-implementation提交46891e7

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架