SLO 燃烧率
orders-api 可用率目标 99.9%(错误预算 0.001,30 天)。延迟 SLI 是「快于 300ms 的请求比例」,目标 99%(预算 0.01)。下表是规则表达式里的阈值,来自 SRE Workbook,不是单元测试喂进去的错误率。
| 规则倍数 | 长窗口 | 短窗口 | 30 天预算消耗 | 规则 |
|---|---|---|---|---|
| 14.4 | 1h | 5m | 1 小时约消耗 2% | OrdersApiErrorBudgetBurnFast 的 1h+5m 支 |
| 6 | 6h | 30m | 6 小时约消耗 5% | OrdersApiErrorBudgetBurnFast 的 6h+30m 支 |
| 3 | 1d | 2h | 1 天约消耗 10% | OrdersApiErrorBudgetBurnSlow 的 1d+2h 支 |
| 1 | 3d | 6h | 3 天约消耗 10% | OrdersApiErrorBudgetBurnSlow 的 3d+6h 支 |
| 14.4 / 6 | 1h / 6h | 5m / 30m | 延迟预算 0.01 | OrdersApiLatencySLOBurn |
下面每一行的输入倍数由 tests/rules/slo.test.yml 的 input_series 最后一段步长算出(错误增量 / 总增量 / 预算),再写入 checks.json。eval_time、firing 和结果来自同一次 promtool 记录。比较是严格大于,所以触发用例的输入高于规则倍数,而不是等于规则倍数。
| 测试组 | 输入倍数 | 告警 | eval_time | firing | 结果 |
|---|---|---|---|---|---|
| fast_burn_15x | 15 | OrdersApiErrorBudgetBurnFast | 5h58m | false | passed |
| fast_burn_15x | 15 | OrdersApiErrorBudgetBurnFast | 5h59m | true | passed |
| fast_burn_15x | 15 | OrdersApiErrorBudgetBurnSlow | 5h58m | true | passed |
| fast_burn_15x | 15 | OrdersApiErrorBudgetBurnSlow | 5h59m | true | passed |
| slow_burn_3_5x_only | 3.5 | OrdersApiErrorBudgetBurnFast | 3m | false | passed |
| slow_burn_3_5x_only | 3.5 | OrdersApiErrorBudgetBurnSlow | 2m | false | passed |
| slow_burn_3_5x_only | 3.5 | OrdersApiErrorBudgetBurnSlow | 3m | true | passed |
| burn_0_5x_neither | 0.5 | OrdersApiErrorBudgetBurnFast | 10m | false | passed |
| burn_0_5x_neither | 0.5 | OrdersApiErrorBudgetBurnSlow | 10m | false | passed |
| latency_burn_fires | 50 | OrdersApiLatencySLOBurn | 8h | true | passed |
| latency_burn_quiet | 1 | OrdersApiLatencySLOBurn | 8h | false | passed |
这些组的 input_series 有多段,表上的倍数是最后一段的步长,不是整段平均:fast_burn_15x。 fast_burn_15x 的 OrdersApiErrorBudgetBurnFast 在 5h58m 不触发,在 5h59m 触发。输入倍数是 15。 Fast 规则要 1h 与 5m 同时高于 14.4 倍,或 6h 与 30m 同时高于 6 倍,并持续 for 2m。fast_burn_15x 把高错误率放在尾段,所以 Fast 在 5h58m 仍为空,到 5h59m 才出现。这个时刻对上的是 1h+5m 那一支。 fast_burn_15x 的 OrdersApiErrorBudgetBurnSlow 在 5h58m、5h59m 触发。输入倍数是 15。 slow_burn_3_5x_only 的 OrdersApiErrorBudgetBurnFast 在 3m 不触发。输入倍数是 3.5。 slow_burn_3_5x_only 的 OrdersApiErrorBudgetBurnSlow 在 2m 不触发,在 3m 触发。输入倍数是 3.5。 burn_0_5x_neither 的 OrdersApiErrorBudgetBurnFast 在 10m 不触发。输入倍数是 0.5。 burn_0_5x_neither 的 OrdersApiErrorBudgetBurnSlow 在 10m 不触发。输入倍数是 0.5。 latency_burn_fires 的 OrdersApiLatencySLOBurn 在 8h 触发。输入倍数是 50。 latency_burn_quiet 的 OrdersApiLatencySLOBurn 在 8h 不触发。输入倍数是 1。
延迟组的组名没有倍数记号。它们的输入倍数用同一套末段步长,预算是 0.01。Watchdog 只有 firing 用例,不在这张表里。