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

news/2024/11/14 12:46:25/文章来源:https://www.cnblogs.com/cheyunhua/p/18410015

本文详细介绍了如何在Prometheus中自定义告警规则,包括规则构成、Prometheus配置、告警流程以及告警解除的处理方法,特别关注了告警解除后的通知策略。
摘要由CSDN通过智能技术生成
目录

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分钟推送一次)
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/m0_58476313/article/details/135336755

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

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

相关文章

pytorch安装: cuda、cudatoolkit、torch版本对照

在 PyTorch 官网上有如下安装对照表,同时也有历史版本安装对照表从零开始配置python深度学习环境大概有如下配置步骤: 方案一: 电脑安装显卡驱动,然后安装CUDA、cuDNN,安装miniconda3。前面都是在电脑基础环境配置,后面的操作都是在conda环境中,安装torch、cudatoolkits…

AI实战 | 领克汽车线上营销助手:全面功能展示与效果分析

本篇文章的主要目的是为大家提供实现思路,以及如何更好地开发一个助手,而不仅仅是简单地进行拆解。如果采取拆解的方式,一篇文章可能会长达2万+字,还需要配以数十张图片,这将会非常繁琐。因此,针对拆解的详细内容,我计划单独制作一期视频,以帮助大家更清晰地理解。感谢…

ThreadLocal源码分析-

ThreadLocal源码分析 ThreadLocal是解决线程安全问题的一种方法,它通过为每个线程提供一个独立的变量副本避免了变量并发访问的冲突问题。一个ThreadLocal变量只与当前自身线程相关,对其他线程是隔离的。下面这段代码展示了ThreadLocal的使用。 public class test {private s…

Python打包完成后报错,如何解决?

大家好,我是Python进阶者。 一、前言 前几天在Python最强王者交流群【钟爱一生】问了一个Python打包处理数据的问题,问题如下: 打包完成后报错:发生错误:Missing optional dependency openpyxl.Use pip or conda to install openpyxl.哪位大佬帮我看一下错在哪了?二、实现…

408存储系统大题笔记

咸鱼25计组强化课P2的笔记,有点简陋。 课后需要把第三章的课后大题(真题做一下) Cache类题目做题要注意的点!!PA的位数=Cache地址总位数 Cache总行数 Cache块大小 第2和第3相乘得Cache数据区总大小(!=Cache总大小) 映射方式 一致性问题:写策略(直写/回写) 替换算法 CPU…

浅谈 C# 中的顶级语句

前言 在C# 9版本中引入了一项新特性:顶级语句,这一特性允许在不显式定义 Main 方法的情况下直接编写代码。 传统的写法namespace TestStatements{ internal class Program { static void Main(string[] args) { foreach (var arg in args) …

清理C盘缓存,清理C盘缓存的详细方法步骤

清理C盘缓存是优化Windows系统性能的重要步骤之一。以下是一些详细的方法来清理C盘缓存: 一、使用Windows内置工具磁盘清理 打开磁盘清理: 通过文件资源管理器右键点击C盘,选择“属性”,然后点击“磁盘清理”。 或者在“设置”中选择“系统” > “存储”,查看C盘的存储…

idea中的docker部署配置

注意:确认本地已安装docker环境 第一步:idea安装docker插件:设置-插件-docker第二步:配置Dockerfile文件FROM harbor.chint.com/wz-build-env-public/openjdk:17 AS base# 项目的端口,内部服务端口 EXPOSE 8808# 切换到容器内部的 /workdir目录 WORKDIR /workdir# 添加要运…

第十一章 图论 Part8

dijkstra(朴素版) 拓扑排序目录单源最短路径算法dijkstra(朴素版)适用范围(权值不能为负数的单源最短路径)思路算法正确性拓扑排序思路心得 单源最短路径算法 dijkstra(朴素版) 适用范围(权值不能为负数的单源最短路径) 思路 基本类似Prim算法,只是新加入(确定)点…

Dockerfile 实战指南:轻松掌握容器化部署!

Dockerfile 非常重要,在实际工作中,使用 Docker 绝不是敲敲一些常用命令即可。Dockerfile 几乎贯穿微服务的全部内容,务必掌握。Dockerfile 非常重要,在实际工作中,使用 Docker 绝不是敲敲一些常用命令即可。Dockerfile 几乎贯穿微服务的全部内容,务必掌握。 不要求能从头…

Hodgkin-Huxley Model 完全推导

Hodgkin-Huxley Model 膜电流计算的相关公式的完全推导,从物理、数学到公式推导。Ciallo~(∠・ω< )⌒★ 我是赤川鹤鸣。本文假设您已经初步了解了 Hodgkin-Huxley Model,这里只是针对其中的公式的一些推导。不会对其优缺点、特性、应用等进行详述。物理基础知识如果已学…

PbootCMS自定义前台404错误页面

PbootCMS已经内置支持自定义内容地址错误情况下错误页面的自定义功能,只需要在站点根目录下定义404.html文件即可扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascript等。承接:企业仿站、网站修改、网站改版、…