首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算SLO的燃烧速率?

如何计算SLO的燃烧速率?
EN

DevOps用户
提问于 2019-08-16 11:44:20
回答 1查看 4.4K关注 0票数 8

我已经读了几次谷歌SRE的书,但我需要一些澄清,确切地说,如何设置烧伤率,并了解需要多长时间才能触发警报。

我的大部分问题都来自于“https://landing.google.com/sre/workbook/chapters/alerting-on-slos/#4-alert-on-burn-rate”这本书的这一节。

  1. 表5-4,99.9% SLO的误差率为1,刻度为0.1%。我只想确认一下--这0.1%来自100% - 99.9%,其中99.9%是SLO。这是否意味着,如果某些服务的SLO (例如90% SLO)低得离谱,那么其烧损率为1的错误率为10%。我能正确地解释这个吗?
  2. 书上说,下面几句话

对于基于刻录速率的警报,触发警报所需的时间是(1-SLO/错误比)*警报窗口大小*烧录率。

因此,如果我的SLO是95%,而我的错误率是1(让我们假设所有在最后1小时内出现的请求都是错误的)。假设我的燃烧率是1。如果我把这些值插进公式中,我得到,

代码语言:javascript
复制
(100-95/1) * 1 hour * 1 = 5.

这就是我困惑的地方。这是5个小时吗?你会把1小时换成60分钟吗?普罗米修斯需要多长时间才能发出第一次警报?

此外,如果需要5个小时才能得到警报,那么检测时间是不是太晚了?也许一些关于如何使用这个公式来计算一些实数的具体例子将是非常有帮助的。

  1. 下一个公式,

当警报触发时所消耗的错误预算是:(刻录速率*警报窗口大小)/period。

只是想澄清这一点-如果我的烧录率为1,我的警报窗口大小为1小时,这意味着,在5小时内,我将消耗,(1 * 1)/5 =我的错误预算的20%。

是这样的吗?

  1. 如果长窗口为1小时,短窗口为5分钟,如果刻录率为14.4,错误预算消耗为2%,则表5-8建议发送警报。

在上面的图表中,5分钟的误差率(10%)高于1小时的错误率。如果烧录率相同= 14.4,为什么它们的错误率是不同的?我很难理解这一点。

它还说,根据这些信息,需要5分钟才能发出警报。对任何一名SLO来说都是这样吗?还是只适用于99.9%的SLO?

  1. 最后,我只想澄清一下:本章中的例子使用了以下记录规则,即每个请求的错误比率。

job:slo_errors_per_request:ratio_rate1h{job="myjob"} > (14.4*0.001)

如果我想要类似的东西来识别延迟-即所有延迟超过2秒的请求的比率,那么这将是以下PromQL:

代码语言:javascript
复制
(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% )。

EN

回答 1

DevOps用户

回答已采纳

发布于 2020-02-28 15:01:31

  1. 是的,你的解释是正确的。
  2. 当您将SLO表示为百分比时,您也应该将错误率表示为百分比。所以,在你的例子中,1的错误率是100%。这将使方程:(100-95/100) *1小时*1= 0.05小时=3分钟
  3. 该等式中的期间是您为SLO选择的报告期间。您没有提到您选择的时间段。工作簿中的例子是30天。如果在示例中使用30天(720小时)时间,则在触发警报所需的3分钟内将消耗大约0.14%的错误预算:(1*1小时)/ 720小时= 0.14%
  4. 这些比率是不同的,因为它们是在不同的时间内测量的。(请注意,该图形使用对数标度,因此实际错误率和5m测量的峰值为15%,而不是10%。) 。
    • 考虑一下在错误开始一分钟后您将测量什么:
      • 在5米的测量中,误差为4分钟,误差为15%,误差为1分钟,总误差为3%。
      • 60m的测量结果是59分钟的无误差加上15%的误差1分钟,这只是一个0.25%的总体错误率。

代码语言:javascript
复制
- 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.
代码语言:javascript
复制
- Using the equation from before, the actual time taken to alert is 5.76 minutes:  5.76 = (0.001/0.15) \* 60 \* 14.4
  1. 您的PromQL似乎在查看好事件而不是坏事件,因为le="2“选择器用于计算延迟小于或等于(le) 2秒的桶。您可能希望为好的事件创建一个单独的"good_latency_rate1h“记录规则,然后对您的警报使用类似于”(1-Good_潜时_rate1h)> (14.4*0.001)“之类的内容。
票数 7
EN
页面原文内容由DevOps提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://devops.stackexchange.com/questions/8915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档