我已经读了几次谷歌SRE的书,但我需要一些澄清,确切地说,如何设置烧伤率,并了解需要多长时间才能触发警报。
我的大部分问题都来自于“https://landing.google.com/sre/workbook/chapters/alerting-on-slos/#4-alert-on-burn-rate”这本书的这一节。
对于基于刻录速率的警报,触发警报所需的时间是(1-SLO/错误比)*警报窗口大小*烧录率。
因此,如果我的SLO是95%,而我的错误率是1(让我们假设所有在最后1小时内出现的请求都是错误的)。假设我的燃烧率是1。如果我把这些值插进公式中,我得到,
(100-95/1) * 1 hour * 1 = 5.这就是我困惑的地方。这是5个小时吗?你会把1小时换成60分钟吗?普罗米修斯需要多长时间才能发出第一次警报?
此外,如果需要5个小时才能得到警报,那么检测时间是不是太晚了?也许一些关于如何使用这个公式来计算一些实数的具体例子将是非常有帮助的。
当警报触发时所消耗的错误预算是:(刻录速率*警报窗口大小)/period。
只是想澄清这一点-如果我的烧录率为1,我的警报窗口大小为1小时,这意味着,在5小时内,我将消耗,(1 * 1)/5 =我的错误预算的20%。
是这样的吗?
在上面的图表中,5分钟的误差率(10%)高于1小时的错误率。如果烧录率相同= 14.4,为什么它们的错误率是不同的?我很难理解这一点。
它还说,根据这些信息,需要5分钟才能发出警报。对任何一名SLO来说都是这样吗?还是只适用于99.9%的SLO?
job:slo_errors_per_request:ratio_rate1h{job="myjob"} > (14.4*0.001)
如果我想要类似的东西来识别延迟-即所有延迟超过2秒的请求的比率,那么这将是以下PromQL:
(sum by (job, le) (rate(latency_quantile{job="myjob", le="2"}[1h]))
/
sum by (job, le) (rate(request_count{job="myjob"}[1h]))) > (14.4 * 0.001)这个看起来对吗?
总之,我希望这一章(作者承认它有一些复杂的实现)有一些更具体的例子,特别是关于公式和烧蚀率。表和图表中指定的一些示例是有意义的。但有些人需要更多的澄清来理解细微差别(例如,规定14.4的烧录率转化为错误预算的2%,这是因为当你除以30/14.4时,你会得到50小时的错误预算,而1小时是这50小时的2% )。
发布于 2020-02-28 15:01:31
- Then 5 minutes after the errors started:
- The 5m measurement would see 5 minutes of 15% errors, so the overall rate would be 15%.
- The 60m measurement would see 55 minutes of no errors plus 5 minutes of 15% errors, so the overall rate would be 1.25%. This is actually still too low to trigger the alert, so it will actually take more than 5 minutes to alert.- Using the equation from before, the actual time taken to alert is 5.76 minutes: 5.76 = (0.001/0.15) \* 60 \* 14.4https://devops.stackexchange.com/questions/8915
复制相似问题