夜莺监控告警规则里的“仅在本业务组生效”具体是怎么个逻辑?
首先,得了解告警和恢复的原理,参考官方文档: 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 标签的时候,夜莺就不根据归属关系做拦截,直接产生告警事件。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
2022-08-12 说透 Kubernetes 监控系列 - 概述