介绍 OBSERVE 的 SLO 能力:如何定义 SLI、设置可靠性目标、跟踪错误预算,用快速/慢速两档燃烧率告警在预算耗尽前提前介入,把服务稳定性从口号变成可记账的数字。
“我们的 SLA 是 99.9%。”这句话写在合同里,却几乎没人盯着它看。原因很简单:99.9% 是月度目标,等月底一算发现没达标,事故已经过去二十天了,追责没有意义,改进更无从谈起。
SLO 换了个思路:把可用性拆成能实时观察的指标,让团队每天、每小时都知道自己离红线还有多远。它不是给老板看的报表,是给值班人用的仪表盘。
把这三个词串起来,可靠性就从口号变成了可以记账的东西。
在 OBSERVE 里创建 SLO 不用手搓 PromQL,选定指标、窗口和目标即可。下面是一个基于请求延迟定义的 SLO 配置示例:
slo:
name: checkout-api-availability
sli:
source: prometheus
query: >
sum(rate(http_request_duration_seconds_bucket{le='0.3',service='checkout'}[5m]))
/
sum(rate(http_request_duration_seconds_count{service='checkout'}[5m]))
objective: 99.5
window: 30d
budget:
fastBurnThreshold: 14.4 # 1 小时耗尽月预算
slowBurnThreshold: 3.0 # 6 小时耗尽月预算
labels:
team: checkout
severity: page
定义好之后,OBSERVE 会自动计算当前窗口的 SLI 达标率、剩余错误预算,并在仪表盘上画出预算消耗曲线。值班人一眼就能看出“这个月还剩多少犯错额度”。
只看剩余预算有个问题:预算是月底才见底的,中途消耗速度过快的信号容易被忽略。OBSERVE 用燃烧率(burn rate)解决这个问题——燃烧率等于实际消耗速度除以允许的平均消耗速度。
比如一个月预算 0.5%,平均每天只能消耗约 0.017%。如果某天消耗了 0.17%,燃烧率就是 10 倍。燃烧率告警分两档:
这样,故障刚发生几分钟内就能触发告警,而不是等月底报表。
给刚开始做 SLO 的团队三条建议: