prometheus 告警

news2024/11/25 9:37:14

prometheus 告警

1, prometheus 告警简介

告警能力在Prometheus的架构中被划分成两个独立的部分。如下所示,通过在Prometheus中定义AlertRule(告警规则),Prometheus会周期性的对告警规则进行计算,如果满足告警触发条件就会向Alertmanager发送告警信息。

在这里插入图片描述
在这里插入图片描述
在Prometheus中一条告警规则主要由以下几部分组成:

告警名称:用户需要为告警规则命名,当然对于命名而言,需要能够直接表达出该告警的主要内容
告警规则:告警规则实际上主要由PromQL进行定义,其实际意义是当表达式(PromQL)查询结果持续多长时间(During)后出发告警

在Prometheus中,还可以通过Group(告警组)对一组相关的告警进行统一定义。当然这些定义都是通过YAML文件来统一管理的。

1,1 自定义 prometheus 告警规则

Prometheus中的告警规则允许你基于PromQL表达式定义告警触发条件,Prometheus后端对这些触发规则进行周期性计算,当满足触发条件后则会触发告警通知。默认情况下,用户可以通过Prometheus的Web界面查看这些告警规则以及告警的触发状态。当Promthues与Alertmanager关联之后,可以将告警发送到外部服务如Alertmanager中并通过Alertmanager可以对这些告警进行进一步的处理。

1.2 定义告警规则

一条典型的告警规则如下

groups:
- name: example
  rules:
  - alert: HighErrorRate
    expr: job:request_latency_seconds:mean5m{job="myjob"} > 0.5
    for: 10m
    labels:
      severity: page
    annotations:
      summary: High request latency
      description: description info

在告警规则文件中,我们可以将一组相关的规则设置定义在一个 group 下.每个 group 中我们可以定义多个告警规则(rule).一条告警规则主要由以下几部分组成:

alert: 告警规则的名称
expr:  基于 PromQL 表达式告警触发条件,用于计算是否有时间序列满足该条件
for:   评估等待时间,可选参数.用于表示只有当触发条件持续一段时间后才发送告警,在等待期间新产生告警的状态为 pending
labels: 自定义标签,允许用户指定要附加到告警上的一组附加标签
annotations: 用于指定一组附加信息,比如用于描述告警详细信息的文字等,annotations 的内容在告警产生时会一同作为参数发送到 alertmanager.

为了能够让Prometheus能够启用定义的告警规则,我们需要在Prometheus全局配置文件中通过rule_files指定一组告警规则文件的访问路径,Prometheus启动后会自动扫描这些路径下规则文件中定义的内容,并且根据这些规则计算是否向外部发送通知:

rule_files:
 [ - <filepath_glob> ... ]

默认情况下Prometheus会每分钟对这些告警规则进行计算,如果用户想定义自己的告警计算周期,则可以通过evaluation_interval来覆盖默认的计算周期:

global:
  [ evaluation_interval: <duration> | default = 1m ]

1.3, 警报触发

prometheus 以一个固定时间间隔来评估所有规则,这个时间由evaluate_interval定义,我们将其设置为 15 秒.在每个评估周期,prometheus 运行每个警报规则中定义的表达式并更新警报状态:

警报的 3 种状态:

Inactive: 警报未激活;
Pending: 警报已满足测试表达式条件,但仍在等待 for 子句中指定的持续时间;
Firing: 警报以满足测试表达式条件,并且 Pending 的时间已经超过 for 子句中指定的持续时间.

Pending到Firing的转换可以确保警报更有效,且不会来回浮动。没有for子句的警报会自动从Inactive转换为Firing,只需要一个评估周期即可触发。带有for子句的警报将首先转换为Pending,然后转换为Firing,因此至少需要两个评估周期才能触发。

2, 报警组件 AlertManager

2.1 什么是 AlertManager?

我们在前面刚开始的时候也讲了,prometheus 是组件化的工具,从他的官方架构图上我们可以看得出来,prometheus server 只是 负责产生警告,他并不会处理警告,我们这个时候就需要 AlertManager组件来处理和消费告警.

Alertmanager接受到Prometheus的重置后,需要删除重复,分组,相互之间通过路由发送到正确的接收器,电子邮件,Slack,钉钉等。Alertmanager还支持沉默和警报抑制的机制。

2.1.1 分组

分组是指当出现问题时,Altermanager 会收到一个单一的通知,而当系统停机时,可能会成百上千的报警同时生成,这个时候就需要将这些告警信息分组了.

比如,一个机房内运行着 100 台物理机,当这个机房的网络出现问题,很有可能全部机器都不能正常监控了,那么如果每个机器网络不可达都发送消息,那么我们可能 会同时收到 100 条短信,那这个时候就不是报警短信了,他就会变成短信轰炸,那我们如果能把这种同类型\找出同一种影响的短信合并成一条来发送,那这不就美滋滋.

2.1.2 抑制

抑制是指当警报发出后,停止重复发送初始化警报引发其他错误的警报的机制。

例如当警报被触发࿰

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Java建筑装修图纸管理平台设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

(高阶)Redis 7 第13讲 数据双写一致性 canal篇

面试题 问题答案如何保证mysql改动后,立即同步到Rediscanal 简介 https://github.com/alibaba/canal/wikihttps://github.com/alibaba/canal/wiki 基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 业务 数据库镜像数据库实时备份多级索引 (卖家和买家各自分库索引…

【springMvc】自定义注解的使用方式

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《Spring与Mybatis集成整合》 ⛺️ 生活的理想&#xff0c;为了不断更新自己 ! 1.前言 1.1.什么是注解 Annontation是Java5开始引入的新特征&#xff0c;中文名称叫注解。 它提供了一种安全…

【Java并发】聊聊死锁

什么是死锁 死锁出现的条件主要是资源互斥、占有并等待、非抢占、循环等待。 当出现两个线程对不同的资源进行获取的时候&#xff0c;A持有资源1&#xff0c;去获取资源2&#xff0c;B持有资源2&#xff0c;去获取资源1&#xff0c;就回出现死锁。 如何排查死锁 public cla…

计算机视觉与深度学习-经典网络解析-ResNet-[北邮鲁鹏]

这里写目录标题 ResNet参考产生背景贡献残差模块残差结构 批归一化ReLU激活函数的初始化方法 网络结构为什么残差网络性能好&#xff1f; ResNet ResNet&#xff08;Residual Neural Network&#xff09;是一种深度卷积神经网络模型&#xff0c;由Kaiming He等人在2015年提出。…

【1++的C++进阶】之智能指针

&#x1f44d;作者主页&#xff1a;进击的1 &#x1f929; 专栏链接&#xff1a;【1的C进阶】 文章目录 一&#xff0c;什么是智能指针二&#xff0c;为什么需要智能指针三&#xff0c;智能指针的发展 一&#xff0c;什么是智能指针 要了解智能指针&#xff0c;我们先要了解RA…

Linux上运行Redis服务出现报错及解决方法

近期&#xff0c;有用户反馈在Linux上运行Redis服务时遇到了一个报错&#xff1a;“Sorry, target machine refused connection”。下面我们来分析这个报错的解决方法。 一、报错分析 该报错通常是由于Redis服务无法与目标机器建立连接导致的。可能的原因包括以下几个方面&…

IP模块组装网络包及转发网络包链路

引言 之前协议栈系列的文章讲解了 连接&#xff0c;收发网络包&#xff0c;断开连接这些操作协议栈模块的处理&#xff0c;但是协议栈是上层 接下来会 委托ip模块进行真正的处理。 网络包 网络包的组成 网络包由头部的控制信息和头部后面的传输数据组成。 控制信息代表了包要…

TikTok矩阵玩法:如何最大程度地利用平台资源

在数字时代&#xff0c;TikTok已经成为全球范围内数亿用户的创意天堂&#xff0c;不仅仅是一个娱乐平台&#xff0c;还是一个创收的宝地。 TikTok矩阵玩法的崛起正在引领创作者们探索全新的变现方案&#xff0c;他们通过巧妙地利用平台资源&#xff0c;实现了前所未有的创收机…

为何网站一定要使用SSL证书

当您在浏览器中输入网址并按下回车键时&#xff0c;您是否曾想过您的个人信息和隐私是否会被窃取&#xff1f;在当今数字化的时代&#xff0c;网络安全问题越来越受到人们的关注。而SSL证书正是保护您的网站和用户信息安全的重要工具。 SSL证书是一种数字证书&#xff0c;它使用…

Unity之NetCode多人网络游戏联机对战教程(1)

文章目录 1.什么是NetCode2.安装NGO 1.什么是NetCode 官网链接&#xff1a;https://docs-multiplayer.unity3d.com/netcode/current/about/ Netcode for GameObjects&#xff08;NGO&#xff09;是专为Unity构建的高级网络库。它能够在网络会话中将GameObject和世界数据同时发…

unity打包后无法读取Excel解决方法

一、前言 最近几乎遇到了所有能遇到的unity读取Excel 的问题。 因为使用的是unity5.4&#xff0c;而且还是32位。所以出现各种问题在所难免。 废话不多说&#xff0c;现有的现象是&#xff1a;在unity的编辑器里可以完美运行&#xff0c;读取Excel不成问题&#xff0c;但是打包…

(JavaEE) 多线程基础3——多线程的代码案例 (单例模式, 阻塞队列,定时器)详解!!!

​​​​​​​ 目录 单例模式 什么是单例模式&#xff1f; —— “饿汉模式” —— “懒汉模式” ——懒汉模式-多线程版 ——懒汉模式-多线程版&#xff08;改进版&#xff09; 总结“懒汉模式”—— 多线程&#xff08;线程安全版&#xff09; 的要点 阻塞队列 什么…

[JAVAee]Spring项目的创建与基本使用

目录 Spring项目的创建 Spring中Bean对象的存储与获取 存储Bean对象 获取并使用Bean对象 getBean方法的重载 本文章介绍了Spring项目创建与使用的过程与一定的注意事项. Spring项目的创建 首先在IDEA中,新建一个Maven 第二步,在pom.xml中写入spring的依赖. pom.xml是mav…

l8-d21 域名解析与http服务器实现原理

一、域名解析gethostbyname函数 主机结构在 <netdb.h> 中定义如下&#xff1a; struct hostent { char *h_name; /* 官方域名 */ char **h_aliases; /* 别名*/ int h_addrtype; /* 地址族&#xff08;地址类型&#xff09; */ int h_l…

[JAVAee]SpringBoot配置文件

配置文件的介绍 配置文件当中记录了许多重要的配置信息,例如: 数据库的连接信息(用户的账户与密码)项目的启动端口第三方系统的调用密匙用于记录问题产生的日志 在spring框架中一些特定的框架会自动调用配置文件中的配置信息来运用. 配置文件中的属性也起到了类似全局变量的…

基于ROS环境的相机标定教程

一、参考资料 ROS学习——利用电脑相机标定 二、安装usb_cam驱动包 usb_cam - ROS Wiki GitHub - ros-drivers/usb_cam: A ROS Driver for V4L USB Cameras usb_cam包用于读取图像。 1. 源码安装usb_cam usb_cam用于实时SLAM&#xff0c;配合ROS平台使用。 1.1 下载usb_…

【Linux初阶】信号入门 | 信号基本概念+信号产生+核心转储

&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f; &#x1f36d;&#x1f36d;系列专栏&#xff1a;【Linux初阶】 ✒️✒️本篇内容&#xff1a;Linux信号的基本概念&#xff08;生活信号、技术信号、信号生命周期、信号的保存位置和发送本质&#xff09;&…

Pytorch-MLP-CIFAR10

文章目录 model.pymain.py参数设置注意事项运行图 model.py import torch.nn as nn import torch.nn.functional as F import torch.nn.init as initclass MLP_cls(nn.Module):def __init__(self,in_dim3*32*32):super(MLP_cls,self).__init__()self.lin1 nn.Linear(in_dim,1…

RFID自动识别技术在数控工具系统的应用

RFID是一种自动识别技术&#xff0c;最早是应用在二战中进行敌我侦察机的识别&#xff0c;但是随着民用通信技术的放开&#xff0c;近年来网络通信技术以及信息安全技术都取得了重大的发展&#xff0c;RFID技术也逐渐在民用领域应用。 RFID自动识别技术在数控工具系统的应用 1、…