首页 > 其他分享 >一文看懂Prometheus告警原理及过程

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

时间:2024-09-12 13:54:50浏览次数:9  
标签:interval 一文 endsAt 解除 Prometheus 规则 告警

本文详细介绍了如何在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

标签:interval,一文,endsAt,解除,Prometheus,规则,告警
From: https://www.cnblogs.com/cheyunhua/p/18410015

相关文章

  • Prometheus(普罗米修斯)监控系统 - 4、服务器硬件信息监控(ipmi-exporter)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、下载ipmi_exporter二、dockerimage制作三、测试四、加入监控四、监控进阶总结前言IPMI监控基于IPMI协议,允许对物理服务器的硬件进行低级别管理。IPMIExporter通过与BMC(BaseboardM......
  • 一文快速上手-create-vue脚手架
    初识create-vuecreate-vue类似于VueCLI脚手架,可以快速创建vuejs3项目,create-vue基于Vite。Vite支持VueCLI中的大多数配置,并且Vite以极速启动服务、快如闪电的热重载,提供了更好的开发体验。与VueCLI不同的是,create-vue脚手架会根据你选择的功能创建一个预配置的项目,然后将......
  • 一文快速上手-Vue CLI脚手架
    安装VueCLI(1)全局安装VueCLI方式一(推荐方式):在终端安装指定版本npmi@vue/[email protected]注:目前5.0.8应该是最新的版本了。方式二:在终端通过命令安装最新版本npmi@vue/cli-g(2)升级VueCLI到最新版本(可选)npmupdate@vue/cli-g(3)使用vue命令创建项目vuec......
  • 一文看懂什么是架构
    对程序员来说,架构是一个常见词汇。如果想成为一名架构师,对架构概念的理解必须清晰。否则,在制定架构方案时,肯定会漏洞百出,问题频发,这将对你的面试、晋升和团队领导产生负面影响。我们看下维基百科关于架构的定义:软件架构是抽象描述系统的一组结构,以及构建这些结构的规则。这些结......
  • prometheus学习笔记之基于三方exporter实现监控
    一、redis_exporter通过redis_exporter监控redis服务状态git地址:https://github.com/oliver006/redis_exporterdocker地址:https://hub.docker.com/r/oliver006/redis_exporter实验环境:redisk8部署prometheus二进制部署1.redis_exporter使用简解二进制部署prometheus......
  • 一文详解多功能智慧交通标志杆的优势
    交通标志杆是常见的城市基础设施,它们沿街而立,引导着行人和车辆,默默维护着城市交通的流畅与和谐。然而随着时代发展,传统的交通标志杆也逐渐体现出诸多不足之处。得益于物联网技术的广泛应用,新型智慧多功能交通标志杆应运而生,它们不仅仅有道路交通指示导引作用,还集成了监控、环境感......
  • Prometheus(普罗米修斯)监控系统 - 3、操作系统信息监控(node-exporter)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、部署node-exporter二、测试三、加入监控四、监控进阶1、Daemonset2、Prometheus.rules3、测试其他前言下面就以Ubuntu系统为例子,部署node-exporter并进行监控。一、部署nod......
  • Nginx节点健康检查与自动上下线管理脚本,推送告警到企业微信
    文章目录案例:Linux定时任务调取脚本执行场景说明告警脚本(text)check_nginx_tcp_up.shcheck_nginx_tcp_up.logcheck_nginx_tcp_up_run.shcheck_nginx_tcp_up_run.log告警效果案例:Linux定时任务调取脚本执行由于需求是每2秒执行一次,但Linux......
  • 一文理解协程----还不明白请来砍我
    说在前头:本文话糙理不糙,用大白话说明协程的核心思想,协程,指的是单个线程里执行多个并发任务,一个协程对应一个任务,重点来了,!!!协程是用户空间的概念,也就是说不管你一个线程里有多少个协程,在操作系统看来,你就是一个单线程,只要你有一处代码阻塞了,那么os就会挂起整个线程,所以说这多......
  • Java小白一文讲清Java中集合相关的知识点(八)
    HashMap底层机制及源码剖析HashMap底层维护了Node类型的数组table,默认为null当创建对象时,将加载因子初始化为0.75;当添加key-value时,通过key的哈希值得到在table的索引,然后判断该索引处是否有元素,如果没有元素直接添加,如果该索引处有元素,继续判断该元素的key是否和......