Prometheus一条告警是怎么触发的

Prometheus 和 Grafana:功能、部署搭建、使用全解析 Prometheus 是一款开源的系统监控和告警工具包,由 SoundCloud 开发,后成为独立开源项目并加入 CNCF。它以其强大的多维数据模型、灵活的查询语言等特性,广泛应用于云原生环境、微服务架构以及传统应用监控等场景。Grafana 是一个开源的可视化和分析平台,支持与多种数据源集成,能将数据以直观的图表、仪表盘等形式展示出来,帮助用户更好地理解和分析数据。 阅读详情

文章来源:爱可生云数据库

作者:张沈波

 

大纲

 

第一节:监控采集、计算和告警

第二节:告警分组、抑制、静默

告警分组

告警抑制

告警静默

收敛小结

第三节:告警延时

延时的三个参数

延时小结

总结

 

 

Prometheus+Grafana是监控告警解决方案里的后起之秀,比如大家熟悉的PMM,就是使用了这个方案;前不久罗老师在3306pi公众号上就写过完整的使用教程《构建狂拽炫酷屌的MySQL 监控平台》,所以我们在这里就不再赘述具体如何搭建使用。

 

今天我们聊一些Prometheus几个有意思的特性,这些特性能帮助大家更深入的了解Prometheus的一条告警是怎么触发的;本文提纲如下:

 

  • 监控采集,计算和告警

  • 告警分组,抑制和静默

  • 告警延时

 

第一节 监控采集、计算和告警

 

Prometheus以scrape_interval(默认为1m)规则周期,从监控目标上收集信息。其中scrape_interval可以基于全局或基于单个metric定义;然后将监控信息持久存储在其本地存储上。

 

Prometheus以evaluation_interval(默认为1m)另一个独立的规则周期,对告警规则做定期计算。其中evaluation_interval只有全局值;然后更新告警状态。

 

其中包含三种告警状态:

  • inactive:没有触发阈值

  • pending:已触发阈值但未满足告警持续时间

  • firing:已触发阈值且满足告警持续时间

 

举一个例子,阈值告警的配置如下:

 

  • 收集到的mysql_uptime>=30,告警状态为inactive

  • 收集到的mysql_uptime<30,且持续时间小于10s,告警状态为pending

  • 收集到的mysql_uptime<30,且持续时间大于10s,告警状态为firing

 

⚠ 注意:配置中的for语法就是用来设置告警持续时间的;如果配置中不设置for或者设置为0,那么pending状态会被直接跳过。

 

那么怎么来计算告警阈值持续时间呢,需要回到上文的scrape_interval和evaluation_interval,假设scrape_interval为5s采集一次信息;evaluation_interval为10s;mysql_uptime告警阈值需要满足10s持续时间。

 

 

如上图所示:

  1. Prometheus以5s(scrape_interval)一个采集周期采集状态;

  2. 然后根据采集到状态按照10s(evaluation_interval)一个计算周期,计算表达式;

  3. 表达式为真,告警状态切换到pending;

  4. 下个计算周期,表达式仍为真,且符合for持续10s,告警状态变更为active,并将告警从Prometheus发送给Altermanger;

  5. 下个计算周期,表达式仍为真,且符合for持续10s,持续告警给Altermanger;

  6. 直到某个计算周期,表达式为假,告警状态变更为inactive,发送一个resolve给Altermanger,说明此告警已解决。

 

第二节 告警分组、抑制、静默

 

第一节我们成功的把一条mysql_uptime的告警发送给了Altermanger;但是Altermanger并不是把一条从Prometheus接收到的告警简简单单的直接发送出去;直接发送出去会导致告警信息过多,运维人员会被告警淹没;所以Altermanger需要对告警做合理的收敛。

 

 

如上图,蓝色框标柱的分别为告警的接收端和发送端;这张Altermanger的架构图里,可以清晰的看到,中间还会有一系列复杂且重要的流程,等待着我们的mysql_uptime告警。

 

下面我们来讲Altermanger非常重要的告警收敛手段。

 

  • 分组:group

  • 抑制:inhibitor

  • 静默:silencer

 

 

告警分组

告警分组的作用

  • 同类告警的聚合帮助运维排查问题

  • 通过告警邮件的合并,减少告警数量

举例来说:我们按照mysql的实例id对告警分组;如下图所示,告警信息会被拆分成两组。

 

  • mysql-A

  •      mysql_cpu_high

  • mysql-B

  •      mysql_uptime

  •      mysql_slave_sql_thread_down

  •      mysql_slave_io_thread_down

 

实例A分组下的告警会合并成一个告警邮件发送;

实例B分组下的告警会合并成一个告警邮件发送;

 

通过分组合并,能帮助运维降低告警数量,同时能有效聚合告警信息,帮助问题分析。

 

 

告警抑制

告警抑制的作用

 

  • 消除冗余的告警

 

举例来说:同一台server-A的告警,如果有如下两条告警,并且配置了抑制规则。

 

  • mysql_uptime

  • server_uptime

 

最后只会收到一条server_uptime的告警。

 

A机器挂了,势必导致A服务器上的mysql也挂了;如配置了抑制规则,通过服务器down来抑制这台服务器上的其他告警;这样就能消除冗余的告警,帮助运维第一时间掌握最核心的告警信息。

 

 

告警静默

告警静默的作用

 

  • 阻止发送可预期的告警

 

举例来说:夜间跑批时间,批量任务会导致实例A压力升高;我们配置了对实例A的静默规则。

 

  • mysql-A

  •       qps_more_than_3000

  •       tps_more_than_2000

  •       thread_running_over_200

  • mysql-B

  •       thread_running_over_200

 

最后我们只会收到一条实例B的告警。

 

A压力高是可预期的,周期性的告警会影响运维判断;这种场景下,运维需要聚焦处理实例B的问题即可。

 

 

收敛小结

这一节,我们mysql_uptime同学从Prometheus被出发后,进入了Altermanger的内部流程,并没有如预期的被顺利告出警来;它会先被分组,被抑制掉,被静默掉;之所以这么做,是因为我们的运维同学很忙很忙,精力非常有限;只有mysql_uptime同学证明自己是非常重要的,我们才安排它和运维同学会面。

 

第三节 告警延时

 

第二节我们提到了分组的概念,分组势必会带来延时;合理的配置延时,才能避免告警不及时的问题,同时帮助我们避免告警轰炸的问题。

 

我们先来看告警延时的几个重要参数:

 

group_by:分组参数,第二节已经介绍,比如按照[mysql-id]分组

group_wait:分组等待时间,比如:5s

group_interval:分组尝试再次发送告警的时间间隔,比如:5m

Repeat_interval: 分组内发送相同告警的时间间隔,比如:60m

 

延时参数主要作用在Altermanger的Dedup阶段,如图:

 

 

延时的三个参数

我们还是举例来说,假设如下:

  • 配置了延时参数:

  •           group_wait:5s

  •           group_interval:5m

  • repeat_interval: 60m

  • 有同组告警集A,如下:

  •           a1

  •           a2

  •           a3

  • 有同组告警集B,如下:

  •           b1

  •           b2

 

场景一:

 

  1. a1先到达告警系统,此时在group_wait:5s的作用下,a1不会立刻告出来,a1等待5s,下一刻a2在5s内也触发,a1,a2会在5s后合并为一个分组,通过一个告警消息发出来;

  2. a1,a2持续未解决,它们会在repeat_interval: 60m的作用下,每隔一小时发送告警消息。

 

 

场景二:

  1. a1,a2持续未解决,中间又有新的同组告警a3出现,此时在group_interval:5m的作用下,由于同组的状态发生变化,a1,a2,a3会在5min中内快速的告知运维,不会被收敛60min(repeat_interval)的时间;

  2. a1,a2,a3如持续无变化,它们会在repeat_interval: 60m的作用下,再次每隔一小时发送告警消息。

 

 

场景三:

  1. a1,a2发生的过程中,发生了b1的告警,由于b1分组规则不在集合A中,所以b1遵循集合B的时间线;

  2. b1发生后发生了b2,b1,b2按照类似集合A的延时规则收敛,但是时间线独立。

 

 

延时小结

通过三个延时参数,告警实现了分组等待的合并发送(group_wait),未解决告警的重复提醒(repeat_interval),分组变化后快速提醒(group_interval)。

 

总结

 

本文通过监控信息的周期性采集、告警公式的周期性计算、合并同类告警的分组、减少冗余告警的抑制、降低可预期告警的静默、同时配合三个延时参数,讲解了Prometheus的一条告警是怎么触发的;当然对于Prometheus,还有很多特性可以实践;如您有兴趣,欢迎联系我们,我们是爱可生。

 

PS:云树Umon,针对大集群监控告警做了大量的易用性的改造;一键图形化部署安装、图形化配置Prometheus,告别羞涩的yaml配置、同时提供完善的告警统计分析视图等特性,也同样欢迎大家体验~

 

Prometheus 专栏 —— Prometheus安装、配置 alerting: 非必须,配置与告警相关的设置,可以指定多个 Alertmanager 实例 alert_relabel_configs: 用于在发送告警之前重新标记告警的标签 alertmanagers: 定义Prometheus将告警发送给哪些Alertmanager实例 scrape_configs: 定义了Prometheus如何抓取目标的数据,每个 scrape_config 块代表一组抓取目标及其相关的配置 metrics_path: 目标抓取数据时使用的路径,一般默认路径为 阅读详情

相关推荐

Prometheus监控实战系列十二:配置告警规则

在Prometheus的架构中,告警功能由Prometheus Server和Alertmanager 协同完成,Prometheus Server负责收集目标实例的指标,定义告警规则以及产生警报,并将相关的警报信息发送到Alertmanager。Alertmanager则负责对告警信息进行管理 ,根据配置的接收人信息,将告警发送到对应的接收人与介质。

青梅煮酒 4325

总结:Promethus配置文件

一、介绍 Prometheus 启动的时候,可以加载运行参数-config.file指定配置文件,默认为prometheus.yml。在配置文件中我们可以指定 global, alerting, rule_files, scrape_configs, remote_write, remote_read 等属性。 Prometheus的配置文件是YAML格式。Prometheus的解压包里自带了一个默认的配置文件prometheus.yml。让我们来看一下: global: scrape_....

w2009211777的专栏 2万+

技术干货|Prometheus告警及告警规则

本文介绍了Prometheus的告警处理机制,主要分为告警规则定义和Alertmanager告警处理两部分。详细讲解了告警规则的组成要素(名称、PromQL表达式、持续时间等)以及如何通过YAML文件定义告警规则。重点阐述了Alertmanager的三个核心特性:分组(合并相关告警)、抑制(避免重复告警)和静默(临时屏蔽告警)。文章还提供了具体的告警规则配置示例,包括CPU和内存监控告警的实现方法,并演示了从告警触发到状态变化(Pending到Firing)的全过程。最后指出后续将介绍如何通过Alertma

m0_60889254的博客 1267

Prometheus 一条告警的触发流程、等待时间

Prometheus 一条告警的触发流程、等待时间 报警处理流程如下:1. Prometheus Server监控目标主机上暴露的http接口(这里假设接口A),通过上述Promethes配置的'scrape_interval'定义的时间间隔,定期采集目标主机上监控数据。2. 当接口A不可用的时候,Server端会持续的尝试从接口中取数据,直到"scrape_timeout"时间后停止...

weixin_30876945的博客 1670

prometheus的告警处理机制

Prometheus 的告警功能基于PromQL查询语言,并通过配置告警规则来指定何时触发告警。告警规则(Alerting Rules):用于定义何时触发告警。:用于处理告警并将其发送到指定的通知渠道(如 Slack、邮件、PagerDuty 等)。告警规则:使用expr定义触发告警的 PromQL 查询,并使用alert定义告警的名称和条件。:处理和分发告警,支持通过多种渠道(如 Slack、邮件等)通知。:查看和管理活动告警。

weixin_46689397的博客 1743

Prometheus监控平台Alertmanager配置告警

1. 前言 接上一篇Prometheus+Grafana监控部署,环境已经安装完成,本篇进行学习使用Alertmanager告警配置。 2. 告警概述 官方文档 Alertmanager是一个独立的告警模块,接收Prometheus等客户端发来的警报,之后通过分组、删除重复等处理,并将它们通过路由发送给正确的接收器。 Prometheus的警报分为两个部分。Prometheus服务器中的警报规则将警报发送到Alertmanager。该Alertmanager 然后管理这些警报,包括沉默,抑制,聚集

Map的博客 1万+

张沈波 mysql_Prometheus一条告警是怎么触发的

文章来源:爱可生云数据库作者:张沈波大纲第一节:监控采集、计算和告警第二节:告警分组、抑制、静默告警分组告警抑制告警静默收敛小结第三节:告警延时延时的三个参数延时小结总结Prometheus+Grafana是监控告警解决方案里的后起之秀,比如大家熟悉的PMM,就是使用了这个方案;前不久罗老师在3306pi公众号上就写过完整的使用教程《构建狂拽炫酷屌的MySQL 监控平台》,所以我们在这里就不再赘述...

weixin_34293588的博客 262

从专利库到Zemax:一个6mm定焦镜头从零到交付的完整设计流程(含CodeV转换技巧)

本文详细介绍了6mm定焦镜头从专利库检索到最终交付的全流程设计,重点解析了CodeV与Zemax工具链的无缝衔接技巧。通过实际案例展示规格定义、专利筛选、结构适配、非球面优化等关键步骤,帮助光学设计工程师提升设计效率和制造良率。特别包含CodeV转换Zemax的实用技巧,适用于机器视觉和安防镜头开发。

weixin_42561040的博客 160

42.1 从一条告警的触发分析prometheus alert告警源码

源码解读prometheus把record记录当做和alert一样处理进行instant_query查询当前点,如果是alert则走报警的流程通过本地缓存和这次查询对比更新alert的状态pending代表触发了但是还没到配置的for时间firing代表触发了inactive代表恢复或者策略已删除最终调用alertmanager的 api发送过去。

福大大架构师每日一题 966

c语言播放背景音乐

相信很多童鞋都在为大学课设而伤透头脑,而背景音乐的使用无疑会成为其中的一个亮点(总比没有好吧(╯▽╰)),故接下来我将介绍一下如何用C播放音乐。我用的编译器是CodeBlocks16.01接下来新建一个C文件建立完后是这样滴然后添加其中mciSendString()函数是由&lt;mmsystem.h&gt;库提供的供播放音乐(MP3)的函数第一个参数是歌曲所在的绝对路径 打开音乐所在位置 复制这...

qq_41443987的博客 3万+

Java 网络编程(超级详细)

1. 网络编程 1.1 网络编程概述 计算机网络 是指将地理位置相同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及通信协议的管理和协调下,实现资源共享和信息传递的计算机系统 1.2 网络编程三要素 1、IP地址 要想让网络中的计算机能够互相通信,必须为计算机指定一个标识号,通过这个标识号来指定要接受数据的计算机和识别发送的计算机,而IP地址就是这个标识号,也就是设备的标识。 2、端口 网络的通信,本质上是两个应用程序的通信。每台计算机都有很多的应用程

imByte的博客 3万+

【博客623】Prometheus一条告警的触发流程与等待时间

即:group_wait决定每一个新告警组需要等待多久才发送出去,group_interval决定同一个告警组的告警间隔。因此一条告警到了alertmanager如果是一个新组那么等待group_wait的时间,如果是加入了已经有的组,那么这个组是新组则等待group_wait的时间,否则等待group_interval的时间。

qq_43684922的博客 2215

如何通过Davinci Configurator来新增一个BswM仲裁规则

详细介绍如何通过Davinci Configurator来新增一个BswM仲裁规则。

initiallizer的博客 770

mysql 分组取最新一条_Prometheus一条告警是怎么触发的-爱可生

大纲第一节:监控采集、计算和告警第二节:告警分组、抑制、静默告警分组告警抑制告警静默收敛小结第三节:告警延时延时的三个参数延时小结总结Prometheus+Grafana是监控告警解决方案里的后起之秀,比如大家熟悉的PMM,就是使用了这个方案;前不久罗老师在3306pi公众号上就写过完整的使用教程《构建狂拽炫酷屌的MySQL 监控平台》,所以我们在这里就不再赘述具体如何搭建使用。今天我们聊一些Pr...

weixin_39628594的博客 199

YOLO26 终极蒸馏指南:从入门到 SOTA (The Ultimate Distillation Guide)

《YOLO26 蒸馏技术指南》深入解析了知识蒸馏在目标检测中的应用,提出五大蒸馏范式:响应蒸馏(学习最终输出)、特征蒸馏(模仿中间特征)、关系蒸馏(捕捉通道关联)、CWD(通道语义对齐)和FGD(前景背景分离)。实验表明,"Response KD + CWD + FGD"组合效果最佳,使YOLO26n在0.5ms推理速度下达到0.956 mAP50,甚至超越教师模型。指南提供模块化代码实现和超参数调优建议,强调蒸馏能平衡模型精度与效率,是轻量化部署的有效方案。

weixin_51988935的博客 717

uniapp(微信小程序):实现PDF在线预览+在线预览pdf文件完整示例源码,支持文件来源:服务器pdf外链URL预览、调用后端API接口获取PDF文件流二进制下载及解析打开、上传本地PDF文件预览

uni-app实现PDF预览功能,uniapp微信小程序预览PDF,uniapp开发微信小程序在线预览pdf等文件,uniApp微信小程序实现PDF在线预览,Uniapp app在线预览pdf文件流,微信小程序实现pdf预览(苹果安卓兼容),uniapp-微信小程序 实现pdf外链在线预览,uniapp小程序如何做在线预览pdf功能,uniapp小程序端 实现pdf文件预览,微信小程序(uniapp)PDF预览完整实现方案示例demo源码,uni-app预览PDF,小程序pdf预览插件插件,Uniapp微信

✅ 精选推荐文章 4703

Prometheus 监控系统部署指南:从零到第一条告警的完整流程

线上出问题时,"五分钟前系统是什么状态"往往答不上来。监控缺失、历史数据拿不到,是大多数线上故障复盘时最卡的环节。Prometheus 就是为这个痛点设计的开源监控系统与时间序列数据库:它周期性拉取各服务暴露的指标接口,把数据按"时间序列"(一条指标名加一组标签随时间变化的曲线)存下来,再让你用 PromQL 语言回溯查询。 ## Prometheus 能解决什么问题 它不只是"存曲线",一套

gitblog_00199的博客 945

卫朋:IPD流程落地——产品计划阶段拆解

IPD计划阶段拆解

产品线负责人 954

Prometheus告警从触发到收到通知延迟在哪?

Prometheus 的告警从触发到收到通知的过程中,延迟可能会出现在多个环节。以下是告警延迟可能发生的几个主要步骤和原因:1.数据采集延迟 (Scraping Delay)描述:Prometheus 定期从被监控的目标中拉取 (scrape) 数据,默认间隔通常是 15 秒。这个间隔时间决定了 Prometheus 更新监控数据的频率。可能的延迟:如果目标在 Prometheus 上次拉取数据后才发生状态变化,则在下一次拉取前,这些变化不会被发现,因此可能会有一个间隔时间的延迟。2.

运维老生常谈 1216

美军利用MANET技术实现无人作战单元协同作战

本文首先介绍了移动自组织网络 (MANET)以及Wave Relay®波形中继技术,并探讨了波形中继MANET平台在美空军ABMS项目等军事方面的运用情况。

guanyifu9的博客 849

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Prometheus告警处理

告警能力在Prometheus的架构中被划分成两个独立的部分。如下所示,通过在Prometheus中定义AlertRule(告警规则),Prometheus会周期性的对告警规则进行计算,如果满足告警触发条件就会向Alertmanager发送告警信息。Prometheus告警处理告警名称:用户需要为告警规则命名,当然对于命名而言,需要能够直接表达出该告警的主要内容告警规则:告警规则实际上主要由PromQL进行定义,其实际意义是当表达式(PromQL)查询结果持续多长时间(During)后出发告警。

GGB_GG的博客 4107

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【Prometheus监控 运维必备】四、Prometheus 告警管理

仅仅收集和展示监控数据是不够的,当系统出现异常或潜在问题时,需要及时通知相关人员进行处理。Prometheus 的告警管理功能就是为了解决这个问题,它能够根据预设的规则自动检测监控数据中的异常情况,并触发相应的告警通知;Prometheus 的告警管理主要涉及两个核心组件:Prometheus Server 和 Alertmanager。

qq_58611691的博客 1544

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

prometheus告警处理

文章目录一.告警简介1.工作流程2.告警生命周期3.告警等级4.通知方式二. AlertManager组件1.特性1.1 分组1.2. 抑制1.3.沉默2.AlertManager安装2.1 下载安装2.2 创建service脚本2.3 检查配置文件2.4 启动程序3.自定义告警规则4. 自定义通知模板三.配置告警信息1. Prometheus配置告警规则1. 1 配置alertmanager地址1.2 添加告警规则2.Alertmanager配置告警机制wechat 告警通知 一.告警简介 1.工作流程

wq1205750492的博客 8239
上一篇: MySQL性能诊断实践之系统观测工具
下一篇: JDBC与MySQL临时表空间的分析
爱可生开源社区
博客等级 码龄8年 1936粉丝 1004原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值