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

Alertmanager的安装和详细使用步骤总结

一、安装步骤

1. 二进制安装
  1. 下载与解压

    • 从GitHub下载最新版本(如v0.23.0):
      wget https://github.com/prometheus/alertmanager/releases/download/v0.23.0/alertmanager-0.23.0.linux-amd64.tar.gz
      tar -xzf alertmanager-0.23.0.linux-amd64.tar.gz -C /usr/local/
      ln -s /usr/local/alertmanager-0.23.0.linux-amd64/ /usr/local/alertmanager
      
    • 创建数据存储目录:mkdir -p /data/alertmanager/data
  2. 配置Systemd服务

    • 创建服务文件/usr/lib/systemd/system/alertmanager.service
      [Unit]
      Description=Alertmanager
      After=network.target[Service]
      Type=simple
      User=root
      ExecStart=/usr/local/alertmanager/alertmanager \--config.file=/usr/local/alertmanager/alertmanager.yml \--storage.path=/data/alertmanager/data
      Restart=on-failure[Install]
      WantedBy=multi-user.target
      
    • 启动服务:
      systemctl enable alertmanager
      systemctl start alertmanager
      
2. Docker安装
docker run -d --name alertmanager \-p 9093:9093 \-v /path/to/alertmanager.yml:/etc/alertmanager/alertmanager.yml \-v /data/alertmanager/data:/alertmanager/data \prom/alertmanager:latest

需确保配置文件alertmanager.yml和存储目录已正确挂载。


二、配置邮件告警

  1. 全局配置(SMTP设置)
    修改alertmanager.yml文件:

    global:resolve_timeout: 5msmtp_smarthost: 'smtp.qq.com:465'  # QQ邮箱SMTP服务smtp_from: 'sender@qq.com'smtp_auth_username: 'sender@qq.com'smtp_auth_password: 'your_auth_code'  # 邮箱授权码,非登录密码smtp_require_tls: false  # 必须设为false
    
  2. 路由与接收者配置

    route:group_by: ['alertname']  # 按告警名称分组group_wait: 10s          # 初始等待时间group_interval: 10s      # 组内新告警间隔repeat_interval: 1h      # 重复发送间隔receiver: 'mail'         # 默认接收者receivers:
    - name: 'mail'email_configs:- to: 'receiver@example.com'  # 收件人地址send_resolved: true         # 发送恢复通知
    
  3. 自定义邮件模板

    • 创建模板文件/data/alertmanager/template/email.tmpl
      {{ define "email.to.html" }}
      {{ range .Alerts }}
      告警名称: {{ .Labels.alertname }}<br>
      级别: {{ .Labels.severity }}<br>
      实例: {{ .Labels.instance }}<br>
      摘要: {{ .Annotations.summary }}<br>
      {{ end }}
      {{ end }}
      
    • 在配置中引用模板:
      templates:- '/data/alertmanager/template/*.tmpl'
      

三、核心功能配置

1. 告警分组
  • 通过group_by字段定义分组标签(如alertnameinstance),减少重复通知。
2. 抑制规则
inhibit_rules:- source_match:      # 匹配源告警severity: 'critical'target_match:      # 抑制目标告警severity: 'warning'equal: ['alertname']  # 需匹配的标签
3. 静默配置
  • 通过Alertmanager Web界面(默认端口9093)设置静默规则,临时屏蔽特定告警。
4. 路由策略
  • 按标签匹配不同接收者:
    routes:- receiver: 'slack-team'match:team: 'slack'- receiver: 'email-dba'match:team: 'dba'
    

四、与Prometheus集成

  1. 修改Prometheus配置
    prometheus.yml中添加Alertmanager地址:

    alerting:alertmanagers:- static_configs:- targets: ['alertmanager:9093']
    
  2. 创建告警规则
    在Prometheus规则文件(如rules.yml)中定义触发条件:

    groups:
    - name: examplerules:- alert: HighCPUexpr: (1 - avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100 > 80for: 5mlabels:severity: criticalannotations:summary: "CPU使用率超过80%"
    

五、高可用性(HA)配置

  1. 集群部署
    启动多个Alertmanager实例,通过--cluster.peer参数指定对等节点:

    # 节点1
    ./alertmanager --cluster.listen-address=IP1:9094
    # 节点2
    ./alertmanager --cluster.listen-address=IP2:9094 --cluster.peer=IP1:9094
    
  2. Prometheus多目标配置
    在Prometheus中指定所有Alertmanager实例:

    alertmanagers:- static_configs:- targets:- 'alertmanager1:9093'- 'alertmanager2:9093'
    

六、验证与测试

  1. 检查配置文件

    amtool check-config alertmanager.yml
    
  2. 发送测试告警
    使用curl模拟告警:

    curl -XPOST http://localhost:9093/api/v1/alerts -d '[{"labels": {"alertname": "TestAlert", "instance": "example"},"annotations": {"summary": "This is a test"}}
    ]'
    

注意事项

  • 权限问题:确保数据目录(如/data/alertmanager)有写入权限。
  • 防火墙:开放Alertmanager的端口(默认9093)和集群通信端口。
  • 模板调试:使用amtool验证模板语法。

更多配置细节可参考官方文档或相关技术博客(如网页1、网页5、网页6)。

http://www.xdnf.cn/news/1444.html

相关文章:

  • 【锂电池剩余寿命预测】CNN卷积神经网络锂电池剩余寿命预测(Pytorch完整源码和数据)
  • 大模型RAG的召回模式
  • Vite vs Webpack 优势对比
  • 抱佛脚之学SSM六
  • 4.多表查询
  • AI与智能金融服务:如何利用AI分析大数据预测金融市场波动?
  • 获取发起DNS请求的真实进程及请求域名,不是取服务进程svchost.exe,做网络过滤或网络加速用得上。
  • Android 回显
  • 实验二 多线程编程实验
  • 云原生--CNCF-2-五层生态结构(成熟度3层分类,云原生生态5层结构)
  • 前端加密介绍与实战
  • 3dmax模型怎么导入酷家乐插件,材质贴图在,可优化不卡,可批量处理,无需打开一个个max,可批量转FBX/GLB/GLTF/OBJ/SU
  • Git简介与入门
  • 使用分布式ID作为MybatisID生成器
  • 【NVIDIA】Isaac Sim 4.5.0 Franka 机械臂参数解析
  • QT软件安装(12)
  • Sentinel源码—9.限流算法的实现对比一
  • 黑马点评redis改 part 5
  • 面向 C# 初学者的完整教程
  • 千问2.5-VL-7B的推理、微调、部署_笔记2
  • MyBatis中的@Param注解-如何传入多个不同类型的参数
  • .NET 6 + Dapper + User-Defined Table Type
  • 缓存与数据库一致性方案
  • 数据分析:用Excel做周报
  • Android开发常用外部组件及使用指南(上)
  • maple实现移位算法
  • 智驭未来:NVIDIA自动驾驶安全白皮书与实验室创新实践深度解析
  • Dart Flutter数据类型详解 int double String bool list Map
  • 亚远景-基于ASPICE标准的汽车软件过程优化路径
  • 电路中的DGND、GROUND、GROUND_REF的区别,VREF、VCC、VDD、VEE和VSS的区别?