news 2026/8/29 6:45:04

Prometheus告警处理详解:从Alertmanager部署到告警实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Prometheus告警处理详解:从Alertmanager部署到告警实战

一、Alertmanager介绍

Prometheus 内置了一个报警模块——Alertmanager,它负责接收来自 Prometheus 的告警信息,并支持对告警进行去重、降噪、分组、路由,同时具备丰富的通知渠道集成能力,是一款高效的告警通知系统。

告警流程架构

在 Prometheus 中,告警功能分为两部分:

  1. Prometheus:定义告警规则并周期性计算,触发告警后发送给 Alertmanager。

  2. Alertmanager:接收告警并按照配置进行后续处理与通知。

下图展示了告警流程架构:


二、部署Alertmanager

Alertmanager 使用 Go 编写,无第三方依赖,支持跨平台部署。

1. Linux安装步骤

(1)下载安装包

bash

wget https://github.com/prometheus/alertmanager/releases/download/v0.26.0/alertmanager-0.26.0.linux-amd64.tar.gz

(2)创建配置文件

解压后默认配置文件为alertmanager.yml,主要内容如下:

yaml

route: group_by: ['alertname'] group_wait: 30s group_interval: 5m repeat_interval: 1h receiver: 'web.hook' receivers: - name: 'web.hook' webhook_configs: - url: 'http://127.0.0.1:5001/' inhibit_rules: - source_match: severity: 'critical' target_match: severity: 'warning' equal: ['alertname', 'dev', 'instance']
(3)启动Alertmanager

bash

./alertmanager

支持启动参数:

  • --config.file:指定配置文件路径

  • --storage.path:指定数据存储路径

(4)查看运行状态

访问http://<IP>:9093可进入Alertmanager控制台。


2. Docker安装步骤

bash

mkdir -p /etc/alertmanager/ mkdir -p /etc/alertmanager/template vim /etc/alertmanager/alertmanager.yml # 内容同上 docker run -d -p 9093:9093 \ -v /etc/alertmanager:/etc/alertmanager \ -v /etc/localtime:/etc/localtime \ prom/alertmanager

三、配置Receiver接收告警信息

Alertmanager 支持多种通知方式,包括邮件、Slack、Webhook、PagerDuty 等。

集成QQ邮箱告警示例

1. 申请QQ邮箱授权码

参考:QQ邮箱授权码申请指南

2. 配置alertmanager.yml

yaml

global: resolve_timeout: 5m smtp_smarthost: 'smtp.qq.com:465' smtp_from: '276****211@qq.com' smtp_auth_username: '276****211@qq.com' smtp_auth_password: 'xxxxxxxxx' # 授权码,非QQ密码 smtp_require_tls: false templates: - '/etc/alertmanager/template/*.tmpl' route: group_by: ['service','alertname','cluster'] group_wait: 30s group_interval: 10s repeat_interval: 5m receiver: 'email' receivers: - name: 'email' email_configs: - to: '276****211@qq.com' send_resolved: true html: '{{ template "email.html" . }}' inhibit_rules: - source_match: severity: 'critical' target_match: severity: 'warning' equal: ['alertname', 'dev', 'instance']
3. 创建自定义邮件模板

bash

vim /etc/alertmanager/template/email.tmpl

模板内容如下(支持Go模板语法):

go

{{ define "email.html" }} {{ range $i, $alert :=.Alerts }} ========监控报警==========<br> 告警状态:{{ .Status }}<br> 告警级别:{{ $alert.Labels.severity }}<br> 告警类型:{{ $alert.Labels.alertname }}<br> 告警应用:{{ $alert.Annotations.summary }}<br> 告警主机:{{ $alert.Labels.instance }}<br> 告警详情:{{ $alert.Annotations.description }}<br> 触发阀值:{{ $alert.Annotations.value }}<br> 告警时间:{{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05"}}<br> ========end=============<br> {{ end }} {{ end }}

注意:

  • StartsAt为UTC时间,需加28800e9转换为北京时间

  • 2006-01-02 15:04:05为Go语言固定时间格式


四、启用Alertmanager模块与Rules告警规则

1. 配置Prometheus连接Alertmanager

编辑prometheus.yml,添加以下内容:

yaml

global: scrape_interval: 5s evaluation_interval: 5s alerting: alertmanagers: - static_configs: - targets: - 192.168.3.100:9093 rule_files: - "/etc/prometheus/rules/*.rules"

重启Prometheus后,访问http://<IP>:9090/config确认配置生效。

2. 创建告警规则文件

示例规则:CPU与内存使用率告警

bash

mkdir -p /etc/prometheus/rules vim /etc/prometheus/rules/alerts.rules

内容如下:

yaml

groups: - name: hostStatsAlert rules: - alert: hostCpuUsageAlert expr: (1 - avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance))*100 > 85 for: 1m labels: severity: critical annotations: summary: "Instance {{ $labels.instance }} CPU usage high" description: "{{ $labels.instance }} CPU usage above 85% (current value: {{ $value }})" - alert: hostMemUsageAlert expr: (1 - (node_memory_MemAvailable_bytes{} / (node_memory_MemTotal_bytes{})))* 100 > 70 for: 1m labels: severity: critical annotations: summary: "Instance {{ $labels.instance }} MEM usage high" description: "{{ $labels.instance }} MEM usage above 70% (current value: {{ $value }})"

重启Prometheus后,可通过以下地址查看规则与告警状态:

  • 规则列表:http://127.0.0.1:9090/rules

  • 告警状态:http://127.0.0.1:9090/alerts

3. 模拟告警触发测试

创建CPU负载脚本:

bash

vim load_cpu.sh #!/bin/bash while true; do : done chmod +x load_cpu.sh ./load_cpu.sh

运行后观察:

  1. Prometheus 检测到CPU使用率 >85%

  2. 告警状态先变为PENDING(持续1分钟后)

  3. 触发FIRING状态并发送至Alertmanager

  4. Alertmanager 根据路由发送邮件通知


总结

本文完整介绍了从 Alertmanager 部署、配置邮件接收、编写Prometheus告警规则到模拟告警测试的全过程。通过合理配置路由、抑制规则与通知模板,可构建一套稳定、易用的监控告警系统。

后续可继续扩展:

  • 集成企业微信、钉钉、Slack等通知

  • 配置告警分级与静默规则

  • 使用Webhook对接自愈系统

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 14:56:16

春节放假通知模板设计技巧:排版配色与文案撰写要点

春节放假通知模板&#xff1a;我的6年设计实战与工具推荐 作为一名在平面设计行业摸爬滚打了6年的内容创作者&#xff0c;我深刻体会到春节前夕那份特有的忙碌与期待。每年这个时候&#xff0c;无论是企业HR、行政人员&#xff0c;还是自媒体运营者&#xff0c;都会面临一个共…

作者头像 李华
网站建设 2026/8/22 3:31:02

改进粒子群算法的RSSI定位附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和…

作者头像 李华
网站建设 2026/8/22 4:37:00

【YOLOv13多模态创新改进】联合Mamba创新首发| SCI 一区2025| 引入CMFM 跨模态特征融合Mamba模块,实现 RGB与红外等多模态特征的高效融合,含多种创新改进,顶会顶刊发文热点

一、本文介绍 🔥本文给大家介绍使用 CMFM 跨模态特征融合Mamba模块改进 YOLOv13 多模态融合目标检测框架,可在保持实时性的前提下实现高效稳定的跨模态特征融合,充分利用可见光与红外信息的互补优势,显著提升复杂环境下的检测鲁棒性。该模块基于 Mamba 状态空间模型进行…

作者头像 李华
网站建设 2026/8/21 18:33:03

sql语言之分组语句group by

在sql语言中&#xff0c;group by 是分组语言语法是select 表达式 from 表名 group by 分组字段比如说上图的数据表&#xff0c;这是部分截图&#xff0c;表名叫table_tom&#xff0c;假如要按city字段进行分组&#xff0c;计算score各字段总和select sum("score") a…

作者头像 李华
网站建设 2026/8/21 18:32:48

jsp蛋糕甜品店管理系统4fx6j--(程序+源码+数据库+调试部署+开发环境)

本系统&#xff08;程序源码数据库调试部署开发环境&#xff09;带论文文档1万字以上&#xff0c;文末可获取&#xff0c;系统界面在最后面。 系统程序文件列表 用户,商品分类,商品尺寸,商品信息 开题报告内容 一、研究背景及意义 随着互联网的普及和消费者购物习惯的改变&…

作者头像 李华
网站建设 2026/8/22 21:33:10

PADS 多层板设计时怎么设置满足3W间距 或 不在某参考层布线

如何设置满足3W间距 在router中 右键选择网络 双击你要设置的网络 弹出 选择安全间距给这个网络添加一个特殊安全间距 比如其3w需10mil 我就 这样其与其他导线的安全距离就为10mil了 你布线时drc打开一不满足就会报错提示你 设置在参考层内不布线 如果你想要在哪个网络不…

作者头像 李华