夜莺监控告警规则里的 “仅在本业务组生效” 具体是怎么个逻辑?

首先,得了解告警和恢复的原理,参考官方文档: https://flashcat.cloud/docs/content/flashcat-monitor/nightingale-v6/faq/alerting-logic/

对于某个告警规则(假设其归属业务组 A),其 promql 为 cpu_usage_idle < 5 告警,夜莺的告警引擎就会拿着这个 promql 去查时序库,比如查到 10 台机器的 cpu_usage_idle 数据都小于 5 ,于是,时序库返回 10 条数据,进而产生 10 条告警。

时序库并不知道这 10 台机器是归属在哪个业务组的,比如时序库用的是 Prometheus,机器和业务组的关联关系是在夜莺里,是两个不同的系统。所以,时序库只是返回所有符合 cpu_usage_idle < 5 的 time series 指标数据。

如果勾选了仅在当前业务组生效,就本例而言,就是说,只有业务组 A 下面的机器触发了 < 5 这个规则,才产生告警事件,其他业务组的机器即便触发了也不产生告警规则。这是怎么做到的呢?

夜莺看到时序库返回了 10 条记录,然后就从这 10 条数据里取 ident 标签的值当做机器,然后看这个机器是否属于 “告警规则所属的业务组”,如果属于,那就生成告警事件,如果不属于,就丢弃这个事件。通过这种方式,来实现告警规则只对本业务组内的机器生效。

嗯,目前来看,整个逻辑是挺好的。

但是,有的时候,promql 可能会写一些聚合函数,导致 promql 查询的结果中不包含 ident 标签,此时,夜莺就无能为力了,不知道时序库返回的这个数据属于哪个机器,也就无法根据机器的归属关系判断是否发告警了。

promql 查询的结果中不包含 ident 标签的时候,夜莺就不根据归属关系做拦截,直接产生告警事件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜莺开源监控

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值