【监控系统】Promethus整合Alertmanager监控告警邮件通知

news2024/11/26 14:31:20

【监控系统】Promethus整合Alertmanager监控告警邮件通知

Alertmanager是一种开源软件,用于管理和报警监视警报。它与Prometheus紧密集成,后者是一种流行的开源监视和警报系统。Alertmanager从多个源接收警报和通知,并根据一组配置规则来决定如何处理和发送这些警报。

在这里插入图片描述

因此,Alertmanager的功能可以概括为:

  • 接收监控系统发送的警报
  • 根据配置规则对收到的警报进行处理和去重
  • 发送通知警报

Alertmanager支持各种通知方式,例如电子邮件、钉钉等。

在Prometheus中一条告警规则组成

  • 告警名称:用户需要为告警规则命名
  • 告警规则:主要由PromQL进行定义,表示当表达式(PromQL)查询结果持续多长时 间(During)后出发告警

关键特点:

  • 分组:将详细的告警信息合并成一个通知,某些情况下,如由于系统宕机导致大量的告警被同时触发
  • 抑制:当某一告警发出后,可以停止重复发送由此告警引发的其它告警的机制,避免告警轰炸
  • 静默:根据标签对告警进行静默处理,如果接收到的告警符合静默的配置, Alertmanager则不会发送告警通知

Alertmanager安装

1.下载Alertmanager
wget https://github.com/prometheus/alertmanager/releases/download/v0.24.0/alertmanager-0.24.0.linux-amd64.tar.gz

2.解压
tar -zxvf alertmanager-0.24.0.linux-amd64.tar.gz

在这里插入图片描述

#启动
./alertmanager --config.file=alertmanager.yml

#守护进程方式启动
nohup ./alertmanager --config.file=alertmanager.yml &
  • 访问 ip+port ,比如 http://ip:9093/#/alerts

在这里插入图片描述

关于Alertmanager的使用流程:

  • Prometheus的rules.yaml编写告警规则,配置Prometheus,定义在哪些情况下被告警。
  • 配置Alertmanager,添加Email、钉钉或者短信接收程序,为告警通知指定目标和通知媒介。
  • 建立告警路由,定义告警的路由方式,以便区分和分类告警级别,并为不同的告警目标设定不同的火灾通知方法。

Alert的三种状态:

pending:警报被激活,但是低于配置的持续时间。这里的持续时间即rule里的FOR字段设置的时间。改状态下不发送报警。
firing:警报已被激活,而且超出设置的持续时间。该状态下发送报警。
inactive:既不是pending也不是firing的时候状态变为inactive

prometheus触发一条告警的过程:

prometheus—>触发阈值—>超出持续时间—>alertmanager—>分组|抑制|静默—>媒体类型—>邮件|钉钉|微信等。

在这里插入图片描述

OK,现在我们部署了Alertmanager,那么我们的需求就是应用程序监控,如果应用程序挂了,触发邮件发送开发人员。

首先进到Promethus的根目录下:创建rule.yml文件。

在这里插入图片描述

我们先来简单介绍一下rule.yaml的配置属性。

groups: # 告警规则组
- name: server-alarm
  rules: #规则,可以配置多个alert告警
  
  - alert: # 告警名称
    expr:  # 告警表达式,基于PromQL表达式告警触发条件,用于计算是否有时间序列满足该条件。
    for:  # 评估等待时间,可选,用于表示只有当触发条件持续一段时间后才发送告警,在等待期间新产生告警 的状态为pending。
    labels: #自定义标签,允许用户指定要附加到告警上的一组附加标签。
      severity:  # 告警严重程度
    annotations: #用于指定一组附加信息,比如用于描述告警详细信息的文字等
      summary: # 告警摘要
      description: # 告警详细描述

其中severity有以下几种常用值。

  • critical(严重),用于描述影响系统主要功能甚至导致系统崩溃的情况。
  • warning(警告),用于描述存在异常但不会导致系统崩溃或停止服务的情况。
  • info(信息),用于描述与业务正常运行相对应的正常状态信息。
  • debug(调试),用于描述可以用于排除故障的调试信息。
#配置规则
groups:
- name: server-alarm
  rules:
  - alert: "InstanceDown"
    expr: up == 0
    for: 1m
    labels:
      severity: warning
    annotations:
      summary: "{{ $labels.instance }}"
      description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 1 minutes."

配置Prometheus关联Alertmanager地址和rule规则启用。

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
           - 192.168.140.133:9093
rule_files:
  - "rule.yml"

在这里插入图片描述

动态更新配置 curl -X POST http://localhost:9090/-/reload

配置Alertmanager的alertmanager.yml配置文件

alertmanager.yml主要包含两个部分:路由(route) + 接收器(receivers)

  • 告警信息会从配置中的顶级路由(route)进入路由树,根据路由规则将告警信息发送给相应的接收器。

编辑alertmanager.yml文件保存。

在这里插入图片描述

global:
  smtp_smarthost: 'smtp.163.com:25' # SMTP服务器地址和端口
  smtp_from: 'lx990218@163.com' # 显示在邮件“发件人”字段中的地址
  smtp_auth_username: 'lx990218@163.com' # STMP认证时使用的用户名
  smtp_auth_password: 'TCNTXJTZUXJHJJPX' # SMTP认证时使用的密码,不是密码
  smtp_require_tls: false # SMTP服务器是否需要TLS加密

route:
  receiver: 'email' # 发送告警通知的收件人,和下面的接受者名称匹配
  group_wait: 10s # 在发送前等待各个警报的时间
  group_interval: 30s # 相同警报名称的警报发送间隔
  repeat_interval: 10m # 重复发送警报的时间间隔
  group_by: ['alertname'] # 根据警报名分组告警接收者

# 告警接收者
receivers:
- name: 'email' # 接收者名称
  email_configs:
  - to: '2568682870@qq.com' # 接收告警邮件的收件人
  • 重启alertmanager
#守护进程方式启动
nohup ./alertmanager --config.file=alertmanager.yml &

查看Prometheus配置,以及rules是否生效

在这里插入图片描述

在这里插入图片描述

在看一下Alertmanager。

在这里插入图片描述

OK,接下来 就开始验证告警的功能。

首先,我们先停止springboot应用程序。

在这里插入图片描述

Prometheus中已经看到服务down了。

在这里插入图片描述

Alertmanager中发现了一处告警。

在这里插入图片描述

查看邮件:

在这里插入图片描述

OK,到这里就结束啦,记得支持下博主哦!
在这里插入图片描述

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

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

相关文章

Linux中的用户和用户组

su和exit命令 su命令就是用于账户切换的系统命令,其来源英文单词:Switch User 语法: su [-] [用户名] - 符号是可选的,表示是否在切换用户后加载环境变量 (建议带上)参数:用户名,表示要切换的用户,用户名也…

怎么提高自己当众讲话的能力?

当众讲话是一项重要的沟通技能,它可以帮助你在各种场合中表达自己的观点、影响他人,并建立自信。虽然对很多人来说,当众讲话可能是一项挑战,但通过一些实践和技巧,你可以提高自己的当众讲话能力。下面是一些方法&#…

Java开发之Redis核心内容【面试篇 完结版】

文章目录 前言一、redis使用场景1. 知识分布2. 缓存穿透① 问题引入② 举例说明③ 解决方案④ 实战面试 3. 缓存击穿① 问题引入② 举例说明③ 解决方案④ 实战面试 4. 缓存雪崩① 问题引入② 举例说明③ 解决方案④ 实战面试 5. 缓存-双写一致性① 问题引入② 举例说明③ 解决…

第3章_瑞萨MCU零基础入门系列教程之开发环境搭建与体验

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写,需要的同学可以在这里获取: https://item.taobao.com/item.htm?id728461040949 配套资料获取:https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总: ht…

滚珠螺杆螺母的加工方法

螺母就是螺帽,与螺栓或螺杆拧在一起用来起紧固作用的零件,螺母的用途十分广泛,那么它的加工方法,你了解吗?接下来,我们一起来看一下。 1、车削:最早使用的加工方法,加工螺母的工艺路…

Openlayers 教程 - feature(图形要素)点击和双击事件

Openlayers 教程 - feature(图形要素)点击和双击事件 核心代码完整代码:在线示例 地图中图形要素(Feature)的点击事件非常常用,曾经通过给整个地图绑定点击事件,然后判断图形要素(Fe…

@Autowired自动装配对象为null,但是通过ApplicationContext注入的时候,却成功的注入了

错误:运行test1的时候,报bookController空指针异常 但是当我通过ApplicationContext注入的时候,却成功的注入了 原因是因为被注入的属性不能为静态属性!! 扩展: 1.一般而言,标注有(Component|…

RK3568-mpp(Media Process Platform)媒体处理软件平台

第一章 MPP 介绍 1.1 概述 瑞芯微提供的媒体处理软件平台(Media Process Platform,简称 MPP)是适用于瑞芯微芯片系列的通用媒体处理软件平台。 该平台对应用软件屏蔽了芯片相关的复杂底层处理,其目的是为了屏蔽不同芯片的差异,为使用者提供统一的视频媒体处理接口(Medi…

树,二叉树的概念与结构

👉树,二叉树的概念与结构 1️⃣ .树的概念及结构1.1树的概念1.2树的相关概念1.3树的实现方式1.4树的实际用途 2️⃣.二叉树的概念及结构2.1二叉树的概念2.2特殊二叉树2.3二叉树的概念2.4二叉树的存储结构 所属专栏:初始数据结构❤️ &#x1…

【STL】模拟实现map和set {带头结点的红黑树;红黑树的核心结构;红黑树的迭代器;红黑树的插入和查找;map和set的封装}

模拟实现map和set map和set是红黑树的两种不同封装形式,底层使用同一颗泛型结构的红黑树。set是红黑树的K模型;map是红黑树的KV模型。 下面的代码和讲解着重体现红黑树的底层实现和map\set上层封装的衔接。关于二叉搜索树性质,map和set的介…

PowerDesigner 逆向工程

1、MySQL数据库连接(JDBC方式) 1.1 新建一个pdm,dbms选择mysql 1.2 Database - Connect 选择数据库连接 1.3 配置连接信息 数据库连接这里是通过一个配置文件来获取连接信息的,首次的话因为没有,所以我们需要选择…

采用BeautifulSouppqQueryxpath三种方法爬取电影详情页

采用三个框架BeautifulSoup&&pqQuery&&xpath,爬取知名的电影网页 主要是想体验这三种框架爬同一个网页的不同。 当然具体的不同我也说不清道不明 只能是体验了一把 以下代码都是本人亲自撸 如图所示,四个位置。分别爬取 电影名字 -&g…

docker 安装 Node-RED

Node-RED 是构建物联网应用程序的一个强大工具,使用可视化编程方法,连接起来执行任务。而homeassistant是家居智慧中枢,本文介绍如何安装Node-RED及HASS的插件 1、拉取镜像 docker pull nodered/node-red # 2、部署镜像 创建目录 mkidr -…

微调文本到图像扩散模型新方法DreamBooth,实现主题驱动生成(CVPR 2023)

来源:投稿 作者:橡皮 编辑:学姐 论文链接: https://arxiv.org/pdf/2208.12242 项目主页:https://dreambooth.github.io/ 图1. 只需要拍摄某个主题(左)的几张图像(通常为 3-5 张&…

Java守护线程的理解及应用

在Java中有两类线程,分别是User Thread(用户线程)和Daemon Thread(守护线程) 。 用户线程很好理解,我们日常开发中编写的业务逻辑代码,运行起来都是一个个用户线程。而守护线程相对来说则要特别…

Java发送(QQ)邮箱、验证码发送

前言 使用Java应用程序发送 E-mail 十分简单,但是首先需要在项目中导入 JavaMail API 和Java Activation Framework (JAF) 的jar包。 菜鸟教程提供的下载链接: JavaMail mail.jar 1.4.5JAF(版本 1.1.1) activation.jar 1、准备…

C语言“牵手”拼多多商品详情数据方法,拼多多商品详情API接口,拼多多API申请指南

拼多多是中国最大的自营式电商企业,在线销售计算机、手机及其它数码产品、家电、汽车配件、服装与鞋类、奢侈品、家居与家庭用品、化妆品与其它个人护理用品、食品与营养品、书籍与其它媒体产品、母婴用品与玩具、体育与健身器材以及虚拟商品等。 拼多多平台的商品…

容器编排学习(十)控制器介绍与使用

一 控制器 控制器是 k8s内置的管理工具。可以帮助用户实现 Pod的自动部署、自维护、扩容、滚动更新等功能的自动化程序。 为什么要使用控制器? 有大量的 Pod需要维护管理需要维护 Pod的健康状态控制器可以像机器人一样可以替用户完成维护管理的工作 二 Deployment 1 概…

ROS学习笔记(四)---使用 VScode 启动launch文件运行多个节点

ROS学习笔记文章目录 01. ROS学习笔记(一)—Linux安装VScode 02. ROS学习笔记(二)—使用 VScode 开发 ROS 的Python程序(简例) 03. ROS学习笔记(三)—好用的终端Terminator 一、什么是launch文件 虽然说Terminator终端是能够比较方便直观的看运行的节点…

Spring-MVC的文件上传,下载的技术攻克

目录 一.前言 二.文件上传 文件上传的步骤: 三.文件下载 四.多文件上传 一.前言 SpringMVC的文件上传下载的主要作用是让用户能够将文件上传到服务器或从服…