slo-implementation - SKILL
name: slo-implementationdescription: “Framework for defining and implementing Service Level Indicators (SLIs), Service Level Objectives (SLOs), and error budgets.”risk: criticalsource: communitydate_added: “2026-02-27”SLO 实施用于定义和实施服务级别指标SLI、服务级别目标SLO和错误预算的框架。不要在此情况下使用此技能任务与 SLO 实施无关你需要此范围之外的其他领域或工具说明明确目标、约束和所需输入。应用相关的最佳实践并验证结果。提供可操作的步骤和验证方法。如果需要详细示例请打开resources/implementation-playbook.md。目的使用 SLI、SLO 和错误预算实施可衡量的可靠性目标以在可靠性与创新速度之间取得平衡。在以下情况下使用此技能定义服务可靠性目标衡量用户感知的可靠性实施错误预算创建基于 SLO 的告警跟踪可靠性目标SLI/SLO/SLA 层级SLA (Service Level Agreement) ↓ 与客户的合同 SLO (Service Level Objective) ↓ 内部可靠性目标 SLI (Service Level Indicator) ↓ 实际测量定义 SLI常见的 SLI 类型1. 可用性 SLI# 成功请求 / 总请求 sum(rate(http_requests_total{status!~5..}[28d])) / sum(rate(http_requests_total[28d]))2. 延迟 SLI# 低于延迟阈值的请求 / 总请求 sum(rate(http_request_duration_seconds_bucket{le0.5}[28d])) / sum(rate(http_request_duration_seconds_count[28d]))3. 持久性 SLI# 成功写入 / 总写入 sum(storage_writes_successful_total) / sum(storage_writes_total)参考参见references/slo-definitions.md设定 SLO 目标可用性 SLO 示例SLO 百分比每月停机时间每年停机时间99%7.2 小时3.65 天99.9%43.2 分钟8.76 小时99.95%21.6 分钟4.38 小时99.99%4.32 分钟52.56 分钟选择适当的 SLO考虑因素用户期望业务需求当前性能可靠性的成本竞争对手基准SLO 示例slos:-name:api_availabilitytarget:99.9window:28dsli:|sum(rate(http_requests_total{status!~5..}[28d])) / sum(rate(http_requests_total[28d]))-name:api_latency_p95target:99window:28dsli:|sum(rate(http_request_duration_seconds_bucket{le0.5}[28d])) / sum(rate(http_request_duration_seconds_count[28d]))错误预算计算错误预算公式错误预算 1 - SLO 目标示例SLO99.9% 可用性错误预算0.1% 每月 43.2 分钟当前错误0.05% 每月 21.6 分钟剩余预算50%错误预算策略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参考参见references/error-budget.mdSLO 实施Prometheus 记录规则# SLI 记录规则groups:-name:sli_rulesinterval:30srules:# 可用性 SLI-record:sli:http_availability:ratioexpr:|sum(rate(http_requests_total{status!~5..}[28d])) / sum(rate(http_requests_total[28d]))# 延迟 SLI请求 500ms-record:sli:http_latency:ratioexpr:|sum(rate(http_request_duration_seconds_bucket{le0.5}[28d])) / sum(rate(http_request_duration_seconds_count[28d]))-name:slo_rulesinterval:5mrules:# SLO 合规性1 满足 SLO0 违反-record:slo:http_availability:complianceexpr:sli:http_availability:ratio bool 0.999-record:slo:http_latency:complianceexpr:sli:http_latency:ratio bool 0.99# 剩余错误预算百分比-record:slo:http_availability:error_budget_remainingexpr:|(sli:http_availability:ratio - 0.999) / (1 - 0.999) * 100# 错误预算燃烧率-record:slo:http_availability:burn_rate_5mexpr:|(1 - ( sum(rate(http_requests_total{status!~5..}[5m])) / sum(rate(http_requests_total[5m])) )) / (1 - 0.999)SLO 告警规则groups:-name:slo_alertsinterval:1mrules:# 快速燃烧14.4 倍速率1 小时窗口# 1 小时内消耗 2% 的错误预算-alert:SLOErrorBudgetBurnFastexpr:|slo:http_availability:burn_rate_1h 14.4 and slo:http_availability:burn_rate_5m 14.4for:2mlabels:severity:criticalannotations:summary:Fast error budget burn detecteddescription:Error budget burning at {{ $value }}x rate# 慢速燃烧6 倍速率6 小时窗口# 6 小时内消耗 5% 的错误预算-alert:SLOErrorBudgetBurnSlowexpr:|slo:http_availability:burn_rate_6h 6 and slo:http_availability:burn_rate_30m 6for:15mlabels:severity:warningannotations:summary:Slow error budget burn detecteddescription:Error budget burning at {{ $value }}x rate# 错误预算耗尽-alert:SLOErrorBudgetExhaustedexpr:slo:http_availability:error_budget_remaining 0for:5mlabels:severity:criticalannotations:summary:SLO error budget exhausteddescription:Error budget remaining: {{ $value }}%SLO 仪表盘Grafana 仪表盘结构┌────────────────────────────────────┐ │ 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] │ └────────────────────────────────────┘示例查询# 当前 SLO 合规性 sli:http_availability:ratio * 100 # 剩余错误预算 slo:http_availability:error_budget_remaining # 错误预算耗尽所需天数按当前燃烧率 (slo:http_availability:error_budget_remaining / 100) * 28 / (1 - sli:http_availability:ratio) * (1 - 0.999)多窗口燃烧率告警# 短窗口与长窗口的组合可减少误报rules:-alert:SLOBurnRateHighexpr:|( slo:http_availability:burn_rate_1h 14.4 and slo:http_availability:burn_rate_5m 14.4 ) or ( slo:http_availability:burn_rate_6h 6 and slo:http_availability:burn_rate_30m 6 )labels:severity:criticalSLO 评审流程每周评审当前 SLO 合规性错误预算状态趋势分析事件影响每月评审SLO 达成情况错误预算使用情况事件事后分析SLO 调整每季度评审SLO 相关性目标调整流程改进工具增强最佳实践从面向用户的服务开始使用多个 SLI可用性、延迟等设定可实现的目标不要追求 100%实施多窗口告警以减少噪音持续跟踪错误预算定期评审 SLO记录 SLO 决策与业务目标保持一致自动化 SLO 报告使用 SLO 进行优先级排序参考文件assets/slo-template.md- SLO 定义模板references/slo-definitions.md- SLO 定义模式references/error-budget.md- 错误预算计算相关技能prometheus-configuration- 用于指标采集grafana-dashboards- 用于 SLO 可视化限制仅当任务明确符合上述范围时使用此技能。不要将输出视为特定环境验证、测试或专家审查的替代品。如果缺少必需的输入、权限、安全边界或成功标准请停下来询问澄清。