当前位置: 首页 > news >正文

Prometheus 告警组件 Alertmanager 的使用并接入 Grafana

前言

在现代监控体系中,告警是不可或缺的重要组成部分。Prometheus 虽然能够收集和存储监控数据,但告警功能主要由其姊妹项目 Alertmanager 负责。Alertmanager 处理由 Prometheus 服务器发送的警报,负责去重、分组、抑制和路由到正确的接收器,如电子邮件、Slack、PagerDuty 等。

本文将详细介绍如何在 CentOS 系统上部署和配置 Alertmanager,将其与 Prometheus 集成,并最终接入 Grafana 实现统一的告警管理和可视化。


Alertmanager 安装与配置

1. 下载并安装 Alertmanager

首先,我们需要从官方仓库下载 Alertmanager:

# 下载 Alertmanager
wget https://github.com/prometheus/alertmanager/releases/download/v0.28.1/alertmanager-0.28.1.linux-amd64.tar.gz# 解压下载的包
tar -zxvf alertmanager-0.28.1.linux-amd64.tar.gz# 移动到安装目录
sudo mv alertmanager-0.28.1.linux-amd64 /usr/local/alertmanager

2. 创建专用用户

为了安全考虑,我们创建一个专用用户来运行 Alertmanager 服务:

# 创建 Alertmanager 用户组
sudo groupadd alertmanager# 创建 Alertmanager 用户
sudo useradd -g alertmanager -m -d /var/lib/alertmanager -s /sbin/nologin alertmanager# 设置目录权限
sudo chown -R alertmanager:alertmanager /usr/local/alertmanager
sudo chown -R alertmanager:alertmanager /var/lib/alertmanager

3. 配置 Alertmanager

创建 Alertmanager 的主配置文件:

sudo vim /usr/local/alertmanager/alertmanager.yml

添加以下配置内容(根据实际情况修改邮箱配置):

global:smtp_smarthost: 'smtp.qq.com:587'  # QQ邮箱SMTP服务器smtp_from: 'your_email@qq.com'     # 发件人邮箱smtp_auth_username: 'your_email@qq.com'  # 邮箱账号smtp_auth_password: 'your_auth_code'     # 邮箱授权码(不是密码)smtp_require_tls: true             # 要求TLSroute:group_by: ['alertname']            # 按告警名称分组group_wait: 30s                    # 分组等待时间group_interval: 5m                 # 分组间隔时间repeat_interval: 1h                # 重复告警间隔receiver: 'email-alert'            # 默认接收器receivers:- name: 'email-alert'              # 邮件接收器email_configs:- to: 'target_email@example.com' # 收件人邮箱send_resolved: true            # 发送恢复通知- name: 'web.hook'                 # Webhook接收器webhook_configs:- url: 'http://127.0.0.1:5001/'  # Webhook地址inhibit_rules:- source_match:severity: 'critical'           # 源匹配:严重级别为criticaltarget_match:severity: 'warning'            # 目标匹配:严重级别为warningequal: ['alertname', 'instance'] # 在这些标签相等时抑制

配置说明:

  • global: 全局配置,包括SMTP服务器设置
  • route: 告警路由配置,定义如何分组和路由告警
  • receivers: 接收器配置,定义告警通知方式
  • inhibit_rules: 抑制规则,防止重复或相关告警

注意: 使用QQ邮箱需要获取授权码而非密码,可以在QQ邮箱设置中生成。

4. 创建 Systemd 服务

创建 Alertmanager 的 Systemd 服务文件:

sudo vim /etc/systemd/system/alertmanager.service

添加以下内容:

[Unit]
Description=Alertmanager
Wants=network-online.target
After=network-online.target[Service]
User=alertmanager
Group=alertmanager
Type=simple
ExecStart=/usr/local/alertmanager/alertmanager \--config.file=/usr/local/alertmanager/alertmanager.yml \--storage.path=/var/lib/alertmanager/
Restart=always[Install]
WantedBy=multi-user.target

5. 启动 Alertmanager 服务

# 重新加载 systemd 配置
sudo systemctl daemon-reload# 启动服务
sudo systemctl start alertmanager# 设置开机自启
sudo systemctl enable alertmanager# 检查服务状态
sudo systemctl status alertmanager

6. 防火墙配置

如果系统启用了防火墙,需要开放 Alertmanager 的默认端口(9093):

# 开放9093端口
sudo firewall-cmd --permanent --add-port=9093/tcp# 重新加载防火墙配置
sudo firewall-cmd --reload

配置 Prometheus 与 Alertmanager 集成

现在我们需要配置 Prometheus,使其能够将告警发送到 Alertmanager。

修改 Prometheus 配置文件

编辑 Prometheus 的配置文件:

sudo vim /usr/local/prometheus/prometheus.yml

在配置文件中添加 Alertmanager 配置:

# Alertmanager 配置
alerting:alertmanagers:- static_configs:- targets: ['localhost:9093']  # Alertmanager地址# 告警规则文件
rule_files:- "alert_rules.yml"  # 告警规则文件路径

创建告警规则文件

创建告警规则文件:

sudo vim /usr/local/prometheus/alert_rules.yml

添加示例告警规则:

groups:
- name: node-alertsrules:- alert: InstanceDownexpr: up == 0for: 1mlabels:severity: criticalannotations:summary: "Instance {{ $labels.instance }} down"description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 1 minute."- alert: HighCPUUsageexpr: |(sum by(instance) (rate(node_cpu_seconds_total{mode=~"user|system"}[1m])) / on(instance) sum by(instance) (rate(node_cpu_seconds_total[1m]))) * 100 > 80for: 1mlabels:severity: warningannotations:summary: "Active CPU usage above 80% on {{ $labels.instance }}"description: "User+System CPU usage is {{ $value }}% for 1 minute"- alert: HighMemoryUsageexpr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 85for: 5mlabels:severity: warningannotations:summary: "High memory usage on {{ $labels.instance }}"description: "Memory usage is above 85% for 5 minutes. Current value is {{ $value }}%"

重启 Prometheus 服务

# 检查配置文件语法
sudo -u prometheus /usr/local/prometheus/promtool check config /usr/local/prometheus/prometheus.yml# 重启 Prometheus
sudo systemctl restart prometheus# 检查服务状态
sudo systemctl status prometheus

接入 Grafana

1. 添加 Alertmanager 数据源

在 Grafana 中添加 Alertmanager 作为数据源:

  1. 登录 Grafana(http://IP:3000)

  2. 点击左侧菜单的 “Configuration”(齿轮图标)

  3. 选择 “Data Sources”

  4. 点击 “Add data source”

  5. 选择 “Alertmanager”

  6. 配置以下参数:

    • Name: Alertmanager(可自定义)
    • Type: Alertmanager
    • URL: http://localhost:9093(Alertmanager地址)
    • Alertmanager type: Prometheus
  7. 点击 “Save & Test” 测试连接

2. 查看告警规则

在 Grafana 中查看和管理告警规则:

  1. 点击左侧菜单的 “Alerting”(警铃图标)
  2. 选择 “Alert rules”
  3. 这里将显示从 Prometheus 同步的告警规则

3. 查看告警实例

  1. 在 “Alerting” 菜单中,选择 “Alert instances”
  2. 这里将显示当前活跃的告警实例

4. 配置通知策略

在 Grafana 8.0+ 版本中,可以配置统一的通知策略:

  1. 在 “Alerting” 菜单中,选择 “Notification policies”
  2. 创建新的通知策略,指定匹配条件和通知渠道

测试告警功能

1. 手动触发告警

为了测试告警功能,可以手动创建一个高负载场景:

# 创建一个高CPU负载(谨慎使用)
stress --cpu 2 --timeout 300s

等待几分钟后,检查是否触发 HighCpuUsage 告警。

2. 查看告警状态

可以通过以下方式查看告警状态:

  1. Prometheus Web界面: http://IP:9090/alerts
  2. Alertmanager Web界面: http://IP:9093
  3. Grafana Alerting页面: http://IP:3000/alerting

3. 验证邮件通知

如果配置正确,当告警触发时,应该会收到邮件通知。邮件内容将包含告警的详细信息和恢复链接。


高级配置

1. 多接收器配置

可以配置多个接收器,根据告警严重级别路由到不同的接收器:

route:group_by: ['alertname']group_wait: 30sgroup_interval: 5mrepeat_interval: 1hreceiver: 'default-receiver'routes:- match:severity: criticalreceiver: 'critical-alerts'- match:severity: warningreceiver: 'warning-alerts'receivers:- name: 'default-receiver'email_configs:- to: 'team@example.com'- name: 'critical-alerts'email_configs:- to: 'oncall@example.com'pagerduty_configs:- service_key: 'your-pagerduty-key'- name: 'warning-alerts'email_configs:- to: 'devs@example.com'

2. 静默配置

可以通过 Alertmanager 的 Web 界面配置静默规则,暂时屏蔽特定告警:

  1. 访问 http://IP:9093
  2. 点击 “Silences” 标签页
  3. 点击 “New Silence” 创建新的静默规则
  4. 设置匹配条件和持续时间

3. Webhook 集成

Alertmanager 支持 Webhook 集成,可以将告警发送到自定义系统:

receivers:
- name: 'webhook-receiver'webhook_configs:- url: 'http://your-webhook-url/alert'send_resolved: true

故障排除

常见问题

  1. 告警未触发

    • 检查 Prometheus 规则配置是否正确
    • 验证 PromQL 表达式是否返回数据
  2. 邮件未发送

    • 检查 SMTP 配置是否正确
    • 验证邮箱授权码是否正确
  3. Grafana 无法连接 Alertmanager

    • 检查 Alertmanager 服务是否运行
    • 验证网络连通性

查看日志

如果遇到问题,可以查看相关服务日志:

# 查看 Alertmanager 日志
journalctl -u alertmanager -f# 查看 Prometheus 日志
journalctl -u prometheus -f# 查看 Grafana 日志
journalctl -u grafana -f

总结

通过本文,我们学习了:

  1. Alertmanager 的安装与配置:下载、解压、设置专用用户和权限
  2. 告警路由配置:定义如何分组和路由告警
  3. 通知接收器配置:配置邮件和其他通知方式
  4. Prometheus 集成:配置 Prometheus 将告警发送到 Alertmanager
  5. 告警规则定义:创建基于 PromQL 的告警规则
  6. Grafana 集成:将 Alertmanager 添加为数据源,统一管理告警

Alertmanager 是 Prometheus 监控体系中的重要组件,它提供了强大的告警管理功能。通过与 Grafana 集成,我们可以实现告警的统一管理和可视化,构建完整的监控告警体系。

下一步建议:

  1. 探索更多告警通知方式(Slack、PagerDuty等)
  2. 配置告警模板,自定义告警内容格式
  3. 实现告警分级和升级策略
  4. 集成自动化处理流程

相关资源:

  • Alertmanager 官方文档
  • Prometheus 告警规则指南
  • Grafana Alerting 文档

希望本文对您配置和使用 Alertmanager 有所帮助!如有任何问题,欢迎在评论区留言讨论。

http://www.dtcms.com/a/351753.html

相关文章:

  • docker 安装nacos(vL2.5.0)
  • Android之讯飞语音合成和语音识别
  • React 代码规范
  • 算法练习-合并两个有序数组
  • 表格比对的实现
  • 如何确定哪些层应添加适配器(Adapter)?(58)
  • 餐中服务:藏在菜香里的 “情感传递术”
  • Java继承与虚方法详解
  • 掌握常用CSS样式:从基础到实战的全面指南
  • 从0开始学习Java+AI知识点总结-26.web实战(Springboot原理)
  • 产品经理成长手册(2)——产品文档能力
  • 14、RocketMQ生产环境如何优化
  • Linux查看服务器内存、磁盘、cpu、网络占用、端口占用情况
  • THM El Bandito
  • 设计模式学习笔记-----抽象责任链模式
  • 常见的设计模式
  • 深度学习篇---1*1卷积核的升维/降维
  • Unity笔记(七)——四元数、延迟函数、协同程序
  • 【Linux】Keepalived + Nginx高可用方案
  • [pilot智驾系统] 驾驶员监控守护进程(dmonitoringd)
  • 从代码学习深度强化学习 - 多智能体强化学习 IPPO PyTorch版
  • pytorch_grad_cam 库学习笔记——基类ActivationsAndGradient
  • vue2 和 vue3 生命周期的区别
  • 【Android】不同系统API版本_如何进行兼容性配置
  • 2014-2024高教社杯全国大学生数学建模竞赛赛题汇总预览分析
  • VMDK 文件
  • 软考-系统架构设计师 计算机系统基础知识详细讲解二
  • springcloud篇5-微服务保护(Sentinel)
  • Spring Boot mybatis-plus 多数据源配置
  • 【CVE-2025-5419】(内附EXP) Google Chrome 越界读写漏洞【内附EXP】