Linux 下载、安装 Alertmanager,Prometheus 官方告警管理与通知路由工具(附安装包alertmanager-0.33.1.linux-amd64.tar.gz)

发布于 2026/8/13 · 1 阅读
Alertmanager告警管理告警通知去重分组静默抑制Prometheus云原生开源软件
Alertmanager 是 Prometheus 生态中的告警管理器,负责对告警通知进行去重、分组与路由,支持邮件、PagerDuty、Slack、Webhook 等接收器,并提供静默与抑制机制,是云原生告警链路的核心组件。

封面.png

1. Alertmanager 简介

Alertmanager 是 Prometheus 生态中的告警管理与通知路由组件,负责接收来自 Prometheus 服务器等客户端发送的告警,并完成去重、分组与通知投递。它诞生于 Prometheus 项目——Prometheus 2012 年起源于 SoundCloud,用 Go 语言编写,2016 年加入云原生计算基金会(CNCF),是 Kubernetes 之外最核心的云原生可观测性组件之一,而 Alertmanager 正是这套体系里处理"告警"这一环的官方组件。如今 Alertmanager 在 GitHub 上拥有约 8.5 千颗星标2400 余个分支(fork),累计 360 余位贡献者,采用 Apache 2.0 开源许可。

Alertmanager 要解决的,是"告警风暴"与"通知错乱"的问题:当监控系统发现大量问题时,如果每条告警都直接推送,运维会被刷屏、重复打扰。Alertmanager 在中间做一层缓冲与编排——对相同告警去重,把相关告警按标签分组后合并成一次通知,再按路由规则投递到正确的接收方,并支持按需静默与抑制,从而把原始告警变成"可操作、有上下文"的通知。

Alertmanager 的核心特点:

  • 告警去重:同一告警在成功发送后,按时间间隔抑制重复通知
  • 分组:按标签把相关告警合并成一次通知,避免刷屏
  • 灵活路由:基于标签匹配的多级路由树,可按服务、严重级别等维度分发
  • 多接收器集成:邮件、PagerDuty、OpsGenie、Slack、微信、Webhook 等
  • 静默:临时屏蔽特定告警(如维护窗口期间)
  • 抑制:更高优先级告警触发时,抑制低优先级告警
  • 高可用:多实例 gossip 集群,生产环境默认可用
  • amtool:配套的命令行管理工具

2. v0.33.1 版本亮点

该版本汇集了 2 位贡献者3 条 贡献。

v0.33.1 发布于 2026 年 7 月 4 日,是一个缺陷修复补丁版本,共修复 3 处问题:

2.1 缺陷修复

  • 文档:补充 webhook 文档中缺失的 notification_reason 字段说明
  • 静默快照兼容性:修复静默快照缺少旧版 matchers(匹配器)字段的问题,该缺陷曾导致旧版 Alertmanager 无法读取新版快照
  • API 响应:无 matchers 的静默在 API 响应中现在返回空数组,而非 null

3. 获取安装包

如果访问 GitHub 不便,安装包及中文文档:https://hanshuixin.org/go/225Q(内含 alertmanager-0.33.1.linux-amd64.tar.gz、README 中英对照、发布说明中英对照和 LICENSE)。

适用于 Linux x86_64(amd64)。

Alertmanager 其他版本https://hanshuixin.org/resource/software_integrated_package/Linux/Alertmanager

Linux安装alertmanager-v0.33.1(alertmanager-0.33.1.linux-amd64).zip
├── alertmanager-0.33.1.linux-amd64.tar.gz   ← 解压后运行
├── Linux安装alertmanager-v0.33.1(alertmanager-0.33.1.linux-amd64).pdf
├── README/
│   ├── README.md
│   └── README-中文版.md
├── 发布说明/
│   ├── RELEASE-NOTES.md
│   └── RELEASE-NOTES-中文版.md
└── LICENSE

4. 安装

alertmanager-0.33.1.linux-amd64.tar.gz 是 Alertmanager 官方发布的 Linux x86_64 预编译二进制包,不绑定特定发行版,解压即可运行:

# 解压二进制包
tar -xzf alertmanager-0.33.1.linux-amd64.tar.gz

# 进入解压目录(内含 alertmanager 与 amtool 两个可执行文件)
cd alertmanager-0.33.1.linux-amd64

# 启动 Alertmanager(使用自带的默认配置)
./alertmanager --config.file=alertmanager.yml

启动后访问 http://localhost:9093 即可打开 Alertmanager 的 Web 界面。

4.1 生产环境配置(systemd 服务化)

实际生产部署中,建议将二进制部署到统一目录,创建无登录权限的专用运行用户,并以 systemd 服务托管,便于开机自启、崩溃自动拉起与统一管理:

# 将二进制部署到统一目录
sudo mkdir -p /opt/alertmanager
sudo cp alertmanager amtool /opt/alertmanager/

# 创建专用用户(无登录权限)并授权
sudo useradd --system --no-create-home --shell /sbin/nologin alertmanager
sudo chown -R alertmanager:alertmanager /opt/alertmanager

创建服务文件 /etc/systemd/system/alertmanager.service

[Unit]
Description=Alertmanager
Documentation=https://prometheus.io/docs/alerting/latest/alertmanager/
After=network.target

[Service]
Type=simple
User=alertmanager
Group=alertmanager
WorkingDirectory=/opt/alertmanager
ExecStart=/opt/alertmanager/alertmanager \
  --config.file=/opt/alertmanager/alertmanager.yml \
  --storage.path=/opt/alertmanager/data \
  --web.listen-address=0.0.0.0:9093
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

配置要点说明:

  • --config.file:配置文件路径,默认读取 /etc/alertmanager/alertmanager.yml
  • --storage.path:告警与静默数据的存储路径,默认 data/ 目录
  • --web.listen-address:Web 界面与 API 的监听地址,默认 :9093
  • User:以无登录权限的专用用户运行,符合最小权限原则
# 开机自启并启动
sudo systemctl enable alertmanager
sudo systemctl start alertmanager
# 查看状态
sudo systemctl status alertmanager

5. 使用

5.1 配置邮件告警(alertmanager.yml)

Alertmanager 的行为全部由 alertmanager.yml 配置文件驱动,最常用的场景是"故障时发邮件通知"。一个完整的邮件告警配置由三部分组成:global 配置 SMTP 发信参数,route 定义分组与发送节奏,receivers 定义收件人:

global:
  # SMTP 邮件服务器地址,格式:主机:端口
  smtp_smarthost: 'smtp.example.com:465'
  # 发件人邮箱(收件人看到的发件人)
  smtp_from: 'alert@example.com'
  # SMTP 认证用户名,一般就是邮箱账号
  smtp_auth_username: 'alert@example.com'
  # SMTP 认证密码
  # 注意:这里通常不是邮箱登录密码,而是邮箱后台生成的"客户端授权码"
  smtp_auth_password: 'your_auth_code'
  # 是否要求 TLS 加密(465 端口 = SSL/TLS 直连,无需 STARTTLS 命令)
  smtp_require_tls: false

route:
  # 默认接收器,所有告警最终都会发到它
  receiver: email
  # 告警分组维度:相同 alertname + instance 的告警合并为一个告警组
  group_by: ['alertname', 'instance']
  # 首次发现告警后等待多久再发送,用于聚合同一时段出现的多个告警
  group_wait: 5m
  # 同一告警组新增告警后,多久再次发送
  group_interval: 15m
  # 告警持续存在时的重复提醒间隔
  repeat_interval: 1h

receivers:
  # 接收器名称,route.receiver=email 即引用这里
  - name: email
    email_configs:
      # 收件人邮箱
      - to: 'ops@example.com'
        # 告警恢复时是否发送邮件:true 额外发恢复通知,false 只发故障邮件
        send_resolved: true

配置要点说明:

  • SMTP 授权码smtp_auth_password 通常是邮箱服务商(126、QQ、163 等)后台生成的「客户端授权码」,而非登录密码,用登录密码会认证失败
  • 端口与加密465 端口是 SSL/TLS 直连,配合 smtp_require_tls: false;若用 587 端口则需 STARTTLS,应改为 smtp_require_tls: true
  • 分组节奏group_wait 聚合首波告警、group_interval 控制同组增量发送、repeat_interval 控制重复提醒,三者配合避免刷屏
  • 恢复通知send_resolved: true 时,故障恢复后还会补发一封"已恢复"邮件

如需按严重级别分派到不同渠道,可在 route 下加子路由(routes),按标签匹配后投递到对应接收器(如值班邮箱、PagerDuty、Webhook 等)。

修改配置后先用 amtool 校验语法,再热加载:

# 校验配置语法
amtool check-config alertmanager.yml

# 重新加载配置
systemctl reload alertmanager

5.2 静默与抑制

  • 静默(silencing):在维护窗口或已知故障期间临时屏蔽告警,可在 Web 界面"静默"页或通过 amtool 创建,指定匹配标签与生效时间段。
  • 抑制(inhibition):通过 inhibit_rules 配置,当更高优先级的告警触发时抑制低优先级告警,避免同一故障引发一屏冗余通知:
inhibit_rules:
- source_matchers:
    - severity="critical"
  target_matchers:
    - severity="warning"
  equal: ['alertname']

5.3 amtool 常用命令

amtool 是随包提供的命令行工具,用于查询告警、管理静默:

# 查看当前正在触发的告警
amtool alert

# 查看当前静默
amtool silence query

# 添加一个静默(静默 alertname=Test_Alert 的告警)
amtool silence add alertname=Test_Alert

# 使某个静默失效
amtool silence expire <静默ID>

5.4 与 Prometheus 对接

Alertmanager 本身不产生告警,需要 Prometheus 把告警推送过来。在 Prometheus 的 prometheus.yml 中配置:

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

注意:不要在 Prometheus 与其 Alertmanager 之间做负载均衡,而应让 Prometheus 指向所有 Alertmanager 的列表——Alertmanager 期望所有告警都发送到所有实例,以确保高可用。

若需多实例高可用,可配合 --cluster.* 标志(--cluster.listen-address--cluster.peer 等)组建 gossip 集群,各实例自动同步告警状态。

5.5 Web 界面与 REST API

启动后访问 http://localhost:9093,Web 界面提供告警列表、静默管理、状态查看等功能。同时提供版本 2 的 REST API,以 /api/v2 为前缀,例如查询所有告警:

GET /api/v2/alerts
GET /api/v2/silences
GET /api/v2/status

配合 amtool 或任意 HTTP 客户端即可完成告警的查询、静默的增删改等操作,也便于接入自建的通知与运维自动化系统。