教你一招,告警规复时如何拿到规复时的值?

打印 上一主题 下一主题

主题 560|帖子 560|积分 1680

Prometheus 生态的原生做法,由于阈值是放在 promql 中的,规复时的消息中难以拿到规复时的值,夜莺 v7.0.0.beta10 版本开始,提供了一种较为简单的内置方式,解决这个问题。下面我们就来看一下如何实现这个本领。
升级方法

从 v6 版本开始,程序自动创建表结构,所以 v6、v7 的各个小版本之间升级,相对容易,整体逻辑是:

  • 1.备份,包罗数据库、二进制、配置文件、integrations目录,以防万一
  • 2.下载新版本解压,修改配置文件中的数据库连接地点、redis连接地点、时序库连接地点等个性化信息
  • 3.停掉老版本,启动新版本(建议新老版本使用不同的安装目录,都保存不删,建个软链指向当前使用的版本)
拿到规复时的值的原理

夜莺的告警逻辑是拿着规则中的 promql 去周期性查询,假如查不到数据就认为是正常的,假如查到了数据,就认为有触发了阈值的异常数据,进而天生告警事件。从这里逻辑可以看出,规复的时候,promql 查不到数据,所以也就难以拿到规复的时候的值了。
有两个办法可以解决:

  • 不要把阈值放到 promql 中了,promql 查询原始数据,然后在告警引擎里边判断是否触发了阈值,而不是让时序库去判断,Flashduty 和夜莺企业版就提供了这个方式,这个方式比较容易理解,但是每次 promql 把原始数据查出来,可能会查出特别大量的数据,要警惕使用
  • 在告警规复的时候,重新发起一次 promql 查询,查询当前最新值。但是要留意,好比 10 台机器同时触发了 load1 告警,某个时刻有 2 台规复了,查询最新值的 promql 得是准确去查询规复的 2 台,得对应起来
开源版本的夜莺,提供的是第二种方式,下面我们来看一下如何配置。
如何配置

要配置两个地方,第一个是通知模板,我以钉钉的通知模板举例,其他的通知模板大家可以参考钉钉的:
[code]#### {{if .IsRecovered}}<font color="#008800">
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

反转基因福娃

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表