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

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 台,得对应起来

开源版本的夜莺,提供的是第二种方式,下面我们来看一下如何配置。

如何配置

要配置两个地方,第一个是通知模板,我以钉钉的通知模板举例,其他的通知模板大家可以参考钉钉的:

#### {{if .IsRecovered}}<font color="#008800">💚{{.RuleName}}</font>{{else}}<font color="#FF0000">💔{{.RuleName}}</font>{{end}}---
{{$time_duration := sub now.Unix .FirstTriggerTime }}{{if .IsRecovered}}{{$time_duration = sub .LastEvalTime .FirstTriggerTime }}{{end}}
- **告警级别**: {{.Severity}}级
{{- if .RuleNote}}
- **规则备注**: {{.RuleNote}}
{{- end}}
{{- if not .IsRecovered}}
- **当次触发时值**: {{.TriggerValue}}
- **当次触发时间**: {{timeformat .TriggerTime}}
- **告警持续时长**: {{humanizeDurationInterface $time_duration}}
{{- else}}
{{- if .AnnotationsJSON.recovery_value}}
- **恢复时值**: {{formatDecimal .AnnotationsJSON.recovery_value 4}}
{{- end}}
- **恢复时间**: {{timeformat .LastEvalTime}}
- **告警持续时长**: {{humanizeDurationInterface $time_duration}}
{{- end}}
- **告警事件标签**:
{{- range $key, $val := .TagsMap}}
{{- if ne $key "rulename" }}- `{{$key}}`: `{{$val}}`
{{- end}}
{{- end}}

这里最为关键的逻辑是判断 .AnnotationsJSON.recovery_value 的逻辑:

{{- if .AnnotationsJSON.recovery_value}}
- **恢复时值**: {{formatDecimal .AnnotationsJSON.recovery_value 4}}
{{- end}}

如果 .AnnotationsJSON 中包含 recovery_value 就展示,展示的时候把 recovery_value 保留 4 位小数。这个 .AnnotationsJSON 是夜莺告警规则中的自定义字段部分,如果告警事件中有恢复时的值,就会在这个字段中体现。

另一个要配置的,是告警规则,你想让哪个告警规则支持获取恢复时的值,就在告警规则的自定义字段中加上 recovery_promql 字段。比如我有一个告警规则用来侦测 HTTP 地址探测失败:

需要在告警规则最下面的自定义字段里,增加 recovery_promql 的配置,如下:

要理解这个工作逻辑,我们先来看看 http_response_result_code 这个指标的数据长什么样子:

从上图可以看出,这个指标包含两个 series,其中 agent_hostname 和 method 字段相同,target 字段可以区分开这俩 series。告警规则 http_response_result_code != 0 如果触发,告警事件中一定会带有 target 标签,所以,如果告警事件恢复的时候,我们用高警时的那个 target 标签去查询,一定就可以准确查到恢复时的值了。所以 recovery_promql 的配置中引用了 target 标签,其值是变量,这个变量就是告警事件中的 target 标签值。

效果

本文作者:秦晓辉,GitHub ID:UlricQin,开源监控产品 Open-Falcon、Nightingale 创始人,极客时间《运维监控系统实战笔记》作者,目前在监控/可观测性领域创业中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/347626.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

迅狐供应链云仓系统源码:一站式解决抖音云仓、门店管理与移动端商家管理问题

一、简介 迅狐供应链云仓系统源码是一个全面解决抖音云仓、门店管理和移动端商家管理问题的一站式解决方案。该系统提供了一系列专业的功能和工具&#xff0c;帮助商家实现高效的供应链管理、仓储管理以及店铺管理&#xff0c;同时提供了移动端的商家管理功能&#xff0c;使商…

APP单页分发源码下载安卓苹果自动识别apk描述文件免签自动安装

下载地址&#xff1a;APP单页分发源码下载安卓苹果自动识别apk描述文件免签自动安装

10.3 Go 同步与通信

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

Yapi代码执行 waf绕过实战记录

本文记录了2021年一次有趣的客户目标测试实战。这次经历颇为特别&#xff0c;因此我将其整理成笔记&#xff0c;并在此分享&#xff0c;希望对大家有所帮助。 事件起因 疫情在家办公&#xff0c;准备开始划水的一天&#xff0c;这时接到 boss 的电话说要做项目&#xff0c;老…

环艺转行AI产品经理,这一世我要选择朝阳赛道!

选建筑学初衷 在大一设计专业分流前&#xff0c;我的意向专业是产品与环艺&#xff0c;然后那个时候去学院各自试了一下课&#xff0c;感觉自己还是蛮喜欢“建房子”的&#xff0c;因为从零到一慢慢设计出自己喜欢的空间是一件很美好的事情&#xff0c;造物感与成就感非常强烈…

各类电机数学模型相关公式总结 —— 集成芯片驱动

0、背景技术概述 永磁直流电机&#xff08;PMDC&#xff09;、永磁同步电机&#xff08;PMSM&#xff09;、无刷直流电机&#xff08;BLDC&#xff09;以及混合式两相步进电机在小功率应用场景中多采用集成芯片驱动&#xff08;如二合一、三合一驱动芯片&#xff09;的原因主要…

FPGA - 全局时钟资源

全局时钟资源是指FPGA内部为实现系统时钟到达FPGA内部各 CLB、IOB&#xff0c;以及BSRAM&#xff08;Block Select RAM&#xff0c;选择性BRAM&#xff09;等基本逻辑单元的延时和抖动最小化&#xff0c;采用全铜层工艺设计和实现的专用缓冲与驱动结构。 由于全局时钟资源的布线…

水产养殖监测站的工作原理

TH-LSZ06水产养殖监测站是保障水产质量安全的重要设施&#xff0c;监测水产养殖环境&#xff1a;负责监测水产养殖基地的水质、底泥、养殖物质等&#xff0c;确保养殖环境的适宜性和安全性。通过对养殖环境的实时监测&#xff0c;可以及时发现和预警水产疾病和污染问题&#xf…

新书速览|Autodesk Inventor 2024入门与案例实战:视频教学版

《Autodesk Inventor 2024入门与案例实战&#xff1a;视频教学版》 本书内容 《Autodesk Inventor 2024入门与案例实战&#xff1a;视频教学版》以Autodesk Inventor 2024为平台&#xff0c;重点介绍Autodesk Inventor 2024中文版的各种操作方法及其在工程设计领域的应用。《Au…

pdf压缩文件怎么压缩最小,软件工具压缩清晰

PDF格式的文件&#xff0c;当其体积过于庞大时&#xff0c;确实在上传的过程中显得尤为不便。今天给大家分享一个压缩pdf的简单的方法&#xff0c;让大家可以轻松的压缩pdf。 浏览器打开 "轻云处理pdf官网" &#xff0c;上传pdf文件&#xff0c;文件上传完成后网站会…

Spring Boot整合Redis通过Zset数据类型+定时任务实现延迟队列

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

10倍加速!揭秘IDM下载器的惊人秘密!

在数字化时代的浪潮下&#xff0c;互联网下载工具的多样性使得用户在选择时往往感到迷茫。其中&#xff0c;Internet Download Manager&#xff08;IDM&#xff09;作为一款高效的下载管理工具&#xff0c;因其加速下载、支持多线程下载和恢复中断下载等功能而受到广泛关注。然…

中仕公考:博士考公务员能免笔试吗?

博士学历的考生&#xff0c;无论是选择报考公务员还是事业单位&#xff0c;都必须经过正规的选拔过程。根据当前规定&#xff0c;所有体制内职位均须通过相应的考试方可入职&#xff0c;除非考生在高考时已选定定向招聘岗位。 博士毕业生如果想成为公务员&#xff0c;必须参加…

【原创教程】三菱Q与MERLIN II LS激光打标机控制说明

一、控制流程说明 1.硬件连接→2.软件通讯连接→3.编写远程控制PLC程序→4.编写通讯命令。 二、硬件连接1.用RJ45口普通网线将PLC和打标机连接。 三、软件通讯连接 1.打标机侧工控机-更改操作权限-点击菜单栏Setup,在下拉菜单中,点击Level,在下一级菜单点击Supervisor(左下…

俄语演讲开场白,柯桥外贸俄语培训

1、&#xff08;Разрешите мне&#xff09;от имени... 请允许我代表... 例&#xff1a; Разрешите мне от имени нашей компании поприветствовать всех членов вашей делегации…

文献解读-农业系列-第八期|《有害突变在多倍体棉花中积累速度快于二倍体棉花,且在亚基因组间不平衡》

关键词&#xff1a;基因组变异检测&#xff1b;全基因组测序&#xff1b;基因组多倍体化&#xff1b; 文献简介 标题&#xff08;英文&#xff09;&#xff1a;Deleterious Mutations Accumulate Faster in Allopolyploid Than Diploid Cotton (Gossypium) and Unequally betw…

AI办公自动化:用Kimi批量在Excel文件名中加入日期

工作任务&#xff1a;在一个文件夹中所有的Excel文件后面加上一个日期 在Kimi中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;写一个Python脚本&#xff0c;具体步骤如下&#xff1a; 打开文件夹&#xff1a;F:\AI自媒体内容\AI行业数据分析\投融资 读取里面所…

Cartographer学习笔记

Cartographer 是一个跨多个平台和传感器配置提供 2D 和 3D 实时同步定位和地图绘制 (SLAM) 的系统。 1. 文件关系 2. 代码框架 common: 定义了基本数据结构和一些工具的使用接口。例如&#xff0c;四舍五入取整的函数、时间转化相关的一些函数、数值计算的函数、互斥锁工具等…

[next.js]移动端调试vconsole

一般最简单的调试方式当然是使用vconsole来输出想要的数据啦&#xff1b; next.js如果想使用的话需要在客户端环境里调用才行&#xff08;服务端直接看cmd控制台就够了&#xff09;&#xff1b; 先安装vconsole npm i -D vconsolenext.js不像react cli或者vue一样有一个main.…

webshell后门自查--河马webshel工具介绍

什么是web后门 Java Web 是很多大型厂商的选择&#xff0c;也正是因为如此&#xff0c;Java Web 的安全问题日益得到重视&#xff0c;JSP Webshell 就是其中之一。最著名的莫过于 PHP 的各种奇思妙想的后门&#xff0c;但与 PHP 不同的是&#xff0c;Java 是强类型语言&#x…