第07期:故障排查-为什么发出的告警为已解决?( 二 )
其次 , Ruler 提供了 3 个 metric 的值来监控缓冲队列的运行情况:
- thanos_alert_queue_alerts_dropped_total
- thanos_alert_queue_alerts_pushed_total
- thanos_alert_queue_alerts_popped_total
解决通过以上的分析 , 我们基本确定了问题的根源:Ruler 组件内置的缓冲队列堆积造成了告警发送的延迟 。 针对这个问题 , 我们选择调整队列的 maxBatchSize 值 。 下面介绍一下这个值如何设置的思路 。
由于每计算一次告警规则就会尝试推送一次缓冲队列 , 我们通过估计一个告警数量的最大值 , 得到 maxBatchSize 可以设置的最小值 。 假设你的业务系统需要监控的实体数量分别为 x1、x2、x3、...、xn , 实体上的告警规则数量分别有 y1、y2、y3、...、yn , 那么一次能产生的告警数量最多是(x1 * y2 + x2 * y2 + x3 * y3 + ... + xn * yn) , 最多推送(y1 + y2 + y3 + ... + yn)次 , 所以要使缓冲队列不堆积 , maxBatchSize 应该满足:
maxBatchSize >= (x1 * y2 + x2 * y2 + x3 * y3 + ... + xn * yn) / (y1 + y2 + y3 + ... + yn) , 假设 x = max(x1,x2, ...,xn), 将不等式右边适当放大后为 x , 即 maxBatchSize 的最小值为 x 。 也就是说 , 可以将 maxBatchSize 设置为系统中数量最大的那一类监控实体 , 对于 DMP 平台 , 一般来说是 MySQL 实例 。
注意事项上面的计算过程只是提供一个参考思路 , 如果最终计算出该值过大 , 很有可能对 AlertManager 造成压力 , 因而失去缓冲队列的作用 , 所以还是需要结合实际情况 , 具体分析 。
因为 DMP 将 Ruler 集成到了自己的组件中 , 所以可以比较方便地对这个值进行修改 。 如果是依照官方文档的介绍使用的 Ruler 组件 , 那么需要对源码文件进行定制化修改 。
源码文件:
)
参考资料1.
2.
相关内容方面的知识 , 大家还有什么疑问或者想知道的吗?赶紧留言告诉小编吧!
文章插图
- 智能手机市场|华为再拿第一!27%的份额领跑全行业,苹果8%排在第四名!
- 同比|亚马逊公布“剁手节”创纪录战绩:第三方卖家全球销售额超48亿美元 同比大增60%
- 产业|前瞻生鲜电商产业全球周报第67期:发力社区团购!京东内部筹划“京东优选”
- 零部件|马瑞利发力电动产品,全球第七大零部件供应商在转型
- 互联网|苏宁跳出“零售商”重组互联网平台业务 融资60亿只是第一步
- 俄罗斯手机市场|被三星、小米击败,华为手机在俄罗斯排名跌至第三!
- 当初|这是我的第一部华为手机,当初花6799元买的,现在“一文不值”?
- 出海|出海日报丨短视频生产服务商小影科技完成近4亿元 C 轮融资;华为成为俄罗斯在线出售智能手机的第一品牌
- 敢动|女生最害怕被“偷看”的3软件,QQ不算啥,第二敢动就“翻脸”
- 报名啦!宿迁开展第五届“十大科技之星”评选