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

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
└── LICENSE4. 安装
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 的监听地址,默认:9093User:以无登录权限的专用用户运行,符合最小权限原则
# 开机自启并启动
sudo systemctl enable alertmanager
sudo systemctl start alertmanager
# 查看状态
sudo systemctl status alertmanager5. 使用
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 alertmanager5.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 客户端即可完成告警的查询、静默的增删改等操作,也便于接入自建的通知与运维自动化系统。