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

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

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

  • critical(严重),用于描述影响系统主要功能甚至导致系统崩溃的情况。
  • warning(警告),用于描述存在异常但不会导致系统崩溃或停止服务的情况。
  • info(信息),用于描述与业务正常运行相对应的正常状态信息。
  • debug(调试),用于描述可以用于排除故障的调试信息。
#配置规则
groups:
- name: server-alarmrules:- alert: "InstanceDown"expr: up == 0for: 1mlabels:severity: warningannotations: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.hqwc.cn/news/103948.html

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

相关文章

Docker网络功能

基本网络功能 Docker 允许通过外部访问容器或容器互联的方式来提供网络服务。使用docker network子命令来管理Docker网络。 外部访问容器可通过端口映射实现,启动容器时使用-p参数指定映射关系。-p可多次使用来绑定多个端口。使用docker port命令查看当前映射的端…

vue3:16、Pinia的基本语法

选项式APi 组合式API src/store/counter.js import { defineStore } from "pinia"; import { computed, ref } from "vue";export const userCounterStore defineStore("counter",()>{//声明数据 state - countconst count ref(100)//声…

《TCP/IP网络编程》阅读笔记--基于TCP的服务器端/客户端

目录 1--TCP/IP协议栈 2--TCP服务器端默认函数调用顺序 3--TCP客户端的默认函数调用顺序 4--Linux实现迭代回声服务器端/客户端 5--Windows实现迭代回声服务器端/客户端 6--TCP原理 7--Windows实现计算器服务器端/客户端 1--TCP/IP协议栈 TCP/IP协议栈共分 4 层&#xf…

CUDA说明和安装[window]

文章目录 1、查看版本信息查看GPU查看cuda版本其他方法 2区分 了解cudaCUDA ToolkitNVCCcuDNN 3/ 安装过程4/版本的问题CUDA Toolkit和 显卡驱动 的版本对应CUDA / CUDA Toolkit和cuDNN的版本对应 5/关于CUDA和Cudnn**5.1 CUDA的命名规则****5.2 如何查看自己所安装的CUDA的版本…

对可再生能源和微电网集成研究的新控制技术和保护算法进行基线和测试及静态、时域和频率分析研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

RabbitMQ 知识点解读

1、AMQP 协议 1.1、AMQP 生产者的流转过程 当客户端与Broker 建立连接的时候,会调用factory .newConnection 方法,这个方法会进一步封装成Protocol Header 0-9-1 的报文头发送给Broker ,以此通知Broker 本次交互采用的是AMQPO-9-1 协议&…

华为认证系统学习大纲及课程

前言 任何学习过程都需要一个科学合理的学习路线,才能够有条不紊的完成我们的学习目标。华为认证网络工程师所需学习的内容纷繁复杂,难度较大,所以今天特别为大家整理了一个全面的华为认证网络工程师学习大纲及课程,帮大家理清思…

【动手学深度学习】--文本预处理

文章目录 文本预处理1.读取数据集2.词元化3.词表4.整合所有功能 文本预处理 学习视频:文本预处理【动手学深度学习v2】 官方笔记:文本预处理 对于序列数据处理问题,在【序列模型】中评估了所需的统计工具和预测时面临的挑战,这…

机器学习入门教学——过拟合、欠拟合、模型验证、样本拆分

1、过拟合 定义 过拟合指的是模型对训练数据拟合的太好,以至于无法很好地泛化到新数据。原因 训练数据不足模型太复杂(如深层神经网络)训练时间太长后果 模型在训练数据上表现良好,但在测试数据上表现较差。解决方法 增加训练数据…

HJ48 从单向链表中删除指定值的节点

Powered by:NEFU AB-IN Link 文章目录 HJ48 从单向链表中删除指定值的节点题意思路代码 HJ48 从单向链表中删除指定值的节点 题意 输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。 思路 单向链表…

OpenRoads地形模型添加(增补)地形点

创建三维点,将创建的点对象添加到现有地形模型。 在ORD建模工作流: 地形、分析、点、分析点,在需要添加点的位置读出地模的高程(图1); 图1 几何、平面、点添加高程点,特征设为地形随机点、高…

解决本地jar包导入maven

1、确定是否安装maven 2、输入导入命令 命令说明 <path-to-file>为你jar包所在的路径&#xff08;尽量简单并且不要含中文&#xff09; <group-id>为grouId号&#xff0c;与<artifact-id>组成唯一识别你jar包的坐标&#xff0c;当不在公共资源jar包中&#…