一文看懂Prometheus告警原理及过程

目录

1. 自定义告警规则

2. 告警规则编写

3. prometheus配置

4. 告警过程

5. 告警解除

5.1 对startsAt和endsAt的处理

5.2 Prometheus告警解除后持续多久重复推送告警解除通知??


1. 自定义告警规则

基于规则告警是指利用已经采集的监控数据,匹配用户自定义的多维度告警规则,如果满足,则触发相应规则的告警。例如,性能告警规则一般是设定某个阈值、触发次数和告警行为,对于 CPU利用率、内存使用量、QPS等性能指标,如果在某个时间段内多次触发该阈值,则将其视为满足告警条件。

2. 告警规则编写

一条报警规则主要由以下几部分组成:

alert:告警规则的名称

expr:是用于进行报警规则 PromQL 查询语句

for:评估等待时间(Pending Duration),用于表示只有当触发条件持续一段时间后才发送告警,在等待期间新产生的告警状态为pending

labels:自定义标签,允许用户指定额外的标签列表,把它们附加在告警上

annotations:指定了另一组标签,它们不被当做告警实例的身份标识,它们经常用于存储一些额外的信息,用于报警信息的展示之类的。

告警规则示例:

3. prometheus配置

global:
  # How frequently to scrape targets by default.
  scrape_interval: 30s
  # How long until a scrape request times out.
  scrape_timeout: 10s
  # How frequently to evaluate rules.
  evaluation_interval: 1m
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - 172.0.20.1:8088

rule_files:
  - ./rules/*.yml

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

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

4. 告警过程

1、告警流程图

流程描述:

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

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

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

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

5.下个计算周期,表达式仍为真,且符合for持续10s,持续发送告警给alert-manager。

5. 告警解除

5.1 对startsAt和endsAt的处理

1、两者都存在:不做处理

2、两者都未指定:startsAt指定为当前时间,endsAt为当前时间加上告警持续时间,默认为5分钟

3、只指定startsAt:endsAt指定为当前时间加上默认的告警持续时间

4、只指定endsAt:将startsAt设置为endsAt

即:如果 endsAt 没有提供,则自动等于 startsAt + resolve_timeout(默认 5m)

AlertManager一般以当前时间和告警实例的endsAt字段进行比较用以判断告警的状态:

* 若当前时间位于endsAt之前,则表示告警仍然处于触发状态(firing)

* 若当前时间位于endsAt之后,则表示告警已经消除(resolved)

Prometheus 需要 持续 地将 Firing 告警发送给 Alertmanager,遇到以下一种情况,Alertmanager 会认为告警已经解决,发送一个 resolved:

* Prometheus 发送了 Inactive 的消息给 Alertmanager,即 endsAt=当前时间

* Prometheus 在上一次消息的 endsAt 之前,一直没有发送任何消息给 Alertmanager

当告警没有再此触发时,多久后发送恢复的时间由什么因素决定:告警的endAt来决定。

告警的endAt默认情况下prometheus会设置为以下值来决定:

ts + max([check_interval], [resend_delay]) * 4

resendDelay,是程序启动参数 --rules.alert.resend-delay 规定的,默认 1m

interval,是我们配置的采集间隔

如果收到的告警里没有设置endAt,那么alertmanager设置endAt为以下值来决定:

now + resolve_timeout

即:对活跃告警的默认恢复时间决定为:如果发送方(prometheus等)指定了endAt,则以发送方为准,否则alertmanger统一设置为now + resolve_timeout,即一条告警等待了resolve_timeout还没收到新的告警内容,则视为恢复

5.2 Prometheus告警解除后持续多久重复推送告警解除通知??

模拟告警解除过程,配置10分钟评估等待时长,

prometheus实际告警解除时间:2023-12-26 16:44:23.995

告警记录的告警解除时间:2023-12-26 16:54:49

prometheus停止推送告警解除通知:2023-12-26 16:58:23.995

结论:Prometheus告警解除后持续12分钟重复推送告警解除通知(间隔2分钟推送一次)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【小沐学NLP】Python实现K-Means聚类算法(nltk、sklearn)

文章目录 1、简介1.1 机器学习1.2 K 均值聚类1.2.1 聚类定义1.2.2 K-Means定义1.2.3 K-Means优缺点1.2.4 K-Means算法步骤 2、测试2.1 K-Means(Python)2.2 K-Means(Sklearn)2.2.1 例子1:数组分类2.2.2 例子2&#xff1…

考研用什么光源比较好?五款好用台灯推荐

人眼对光是非常敏感的,特别是儿童青少年眼睛还在发育的状态来说,光线是至关重要的,于是这次测评就不能马虎,必须要本着专业严谨的态度进行测评,这次测评呢就花了不少钱买下了现在市面上热度很高、或是较有名气的专业款…

我的CSDN 512天创作者纪念日总结:高效、高现

文章目录 512天创作者纪念日:2023年的12月31日CSDN的512天消息提醒第一篇文章,最后一篇文章总计847篇文章,每月发文分布512天,各专栏文章统计512天,互动总成绩 512天创作者纪念日:2023年的12月31日 2023年…

一、医学影像云平台(AI赋能基层的最佳实践)

医学影像云平台,是一个目前影像业务中,各省市级领导比较重视的业务板块。因为,影像平台不但可以直接给原来没有PACS系统的1,2级医院提供PACS服务,还可以提供院间之间的业务,例如发送远程诊断,远程会诊业务&…

【Vue2+3入门到实战】(9)Vue基础之组件的三大组成部分(结构/样式/逻辑) 详细示例

目录 一、学习目标1.组件的三大组成部分(结构/样式/逻辑) 二、scoped解决样式冲突**1.默认情况**:2.代码演示3.scoped原理4.总结 三、data必须是一个函数1、data为什么要写成函数2.代码演示3.总结 一、学习目标 1.组件的三大组成部分&#x…

KBDPL.DLL文件丢失,软件游戏无法启动,修复方法

不少小伙伴,求助说遇到Windows弹窗提示“KBDPL.DLL文件丢失,应用无法启动的问题”,不知道应该怎么修复? 首先,先来了解“KBDPL.DLL文件”是什么? kbdpl.dll是Windows操作系统的一部分,是一个动…

Windows安装MySQL及网络配置

目录 安装MySQL 解压配置my.ini文件 注册mysql服务 初始化 启动MySQL 登入MySQL 修改默认密码 更改自身用户访问权限 安装MySQL 8.0 向日葵的简介 简介 向日葵的作用 优点与缺点 优点 缺点 思维导图 安装MySQL 解压配置my.ini文件 注册mysql服务 命令&#xff1…

WebGL开发模拟器和培训应用

WebGL可以用于开发模拟器和培训应用,提供实时、交互式的图形渲染和模拟环境。以下是在WebGL中开发模拟器和培训应用时的一些建议和常见场景,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。…

《动手学深度学习》学习笔记 第5章 深度学习计算

本系列为《动手学深度学习》学习笔记 书籍链接:动手学深度学习 笔记是从第四章开始,前面三章为基础知道,有需要的可以自己去看看 关于本系列笔记: 书里为了让读者更好的理解,有大篇幅的描述性的文字,内容很…

vue3项目创建

安装node.js vue --version (4.5.0以上) npm install -g vue/cli vue create 项目名称 npm run dev 启动 npm run build 打包 ———————— vite 创建工程 npm create vuelatest npm i npm run dev 启动 npm run build 打包 项目结构…

2024史上最全的 iOS 各种测试工具集锦!

引言: 随着移动互联网的兴起,APP 测试的越来越被重视!Android 系统因为自己的开源性,测试工具和测试方法比较广为流传,但是 iOS 系统的私密性,导致很多测试的执行都有点麻烦。 为了帮助大家更好的执行 iO…

炫酷鼠标悬停随机渐变文本动画效果

如图所示,这是一个很炫酷的鼠标悬停动画效果,卡片的文字随着鼠标的移动不断变化着,且文字的颜色伴随着渐变色跟随鼠标移动,中心部分是突出的LOGO效果,整个交互效果十分引人注目。原效果来源于 evervault.com/customers…

OpenCV | 背景建模

背景建模 逐差法: 由于场景中的目标在运动,目标的影像在不同图像帧中的位置不同。该类算法对时间上连续的两帧图像进行差分运算,不同帧对应的像素点相减, 判断灰度差的绝对值,当绝对值超过一定阈值时,即可…

golang学习专栏

GOLANG专栏 Golang基础教程 Golang基础教程 Golang练手算法 Golang练手算法 Golang设计模式 Golang设计模式 Golang数据结构和算法 Golang数据结构和算法 Golang并发编程 Golang并发编程 ORM框架Gorm Golang ORM框架gorm Golang源码分析 Golang源码分析 MySQL教程 MySQ…

JavaScript 基础一part1.介绍、书写位置、注释、结束符、输入输出语法、字面量

JavaScript 基础一 1.1 介绍1.2 JavaScript 书写位置① 内部 JavaScript② 外部 JavaScript③ 内联 JavaScript 1.3 JavaScript 注释单行注释多行注释 1.4 JavaScript 结束符1.5 JavaScript 输入输出语法(1)输出(2)输入JavaScript…

wps将姓名处理格式为:姓**

1.打开wps,在要处理数据右侧一个单元格 输入公式:LEFT(A1,1)&"**",然后回车 2.按住ctrl和处理好的数据的右下角小方框,往下拖动即可生成格式为:姓** 格式的数据 3.复制生成的数据,右键选择 “…

安装MYsql5.7和8.0以及区别

MySQL5.7的安装步骤 解压 将my.ini文件拷贝到解压的目录下 更改my.ini文件,将安装目录替换,并将\改成\\ 在bin目录下进入cmd 执行安装: mysqld install 失败可能是应为没有用管理员身份执行cmd,要在开始菜单进入cmd &#xff…

2024全网讲解最细的portraiture人像修图磨皮教程

不管磨皮方式怎么变,核心还是均匀像素之间的对比;只要把核心逻辑理解了,就可以以不变应万变。portraiture是一个处理皮肤很强的滤镜,只要把设置理解透彻,就能做出比较好的皮肤。 先讲原理,后面附带一个操作…

强大的隐藏应用 Hides 5中文 for mac

Hides 5是一款Mac上的应用程序,旨在帮助用户隐藏其他应用程序并专注于当前任务,从而提高工作效率。其主要功能包括对焦模式、隐藏所有打开的应用程序、隐藏除当前活动应用之外的所有打开的应用程序、支持全局热键、可定制性、支持多种显示方式等。 Hide…

Django 学习教程- Django模板(Template)

系列 Django 学习教程-介绍与安装-CSDN博客 Django 学习教程- Hello world入门案例-CSDN博客 前言 在上一章节中我们使用django.http.HttpResponse() 来输出 "Hello World!"。该方式将数据与视图混合在一起,不符合 Django 的 MTV 思想。 本…