PromQL 从入门到精通increase,无非就是最后一个值减去第一个 值,即965323899880-965304237246=19662634,很遗憾,实际结果是23595160.8,差别 有点大,显然这个直观理解的算法是错的。 实际上,increase 这个 promql 发起请求的时间是1661570909,时间范围是[1m],相当于告 诉Prometheus,我要查询1661570849(16615709 就是把一段时间内的所有延迟数据从小到大排序,99分位就是看第99%位置的那个值的大小。 还是上面的例子,平均响应时间是1.18秒,但是99分位时间是10秒,相差巨大,更容易暴露问 题。这里所谓的99分位延迟10秒,可以理解为,99%的请求都在10秒内返回。 从监控系统角度,如何来存储和计算出99分位值呢?如果每分钟有1亿个请求,难道真的要在监 控系统中存储这1亿个请求,然后排序,然后求取分位值?那这个代价就太大了。监控数据是采 le="+Inf" 桶里,即值一定是大于60秒的,因为 le="+Inf" 这个桶没有上 界,导致我们无法区分这几个分位值。 1 2 3 4 5 6 7 8 下面我们假设一个指标及其数据,做一个算法演示,假设指标名是 http_request_duration_seconds_bucket ,其各个 bucket 的值如下: http_request_duration_seconds_b0 码力 | 16 页 | 2.77 MB | 1 年前3
告警OnCall事件中心建设方法白皮书
中的告 警和故障建立完美的对应关系,不过从降噪收敛角度来看,够用了。 3、根据时间 + 文本相似度做收敛 文本相似度需要引入算法,但是算法总得有个规律,我们很想把某个故障相关的告警聚拢到一起,但是显 然,很难有个行之有效的规律,没有规律的算法效果自然好不到哪儿去。 既然没办法把告警自动收敛成故障,那就手工来做。一个故障关联的关键告警,还是相对容易区分的,只 要把关键告 告警聚合 事件到告警的聚合比较容易,通常是用类似下面的算法来计算不同事件的关联关系: hash(32 + ["__name__=cpu_usage_idle", "host=host1"]) 这个值姑且称为事件 Hash,相同 Hash 的事件就被聚合为一条告警。更复杂的是告警到故障的合并,当 前我们支持基于规则的聚合,后面会基于算法聚合: 比如基于告警规则标题做聚合,某一时刻,基础网络故障,有0 码力 | 23 页 | 1.75 MB | 1 年前3
共 2 条
- 1













