搜索你想找的开源项目

输入名称、用途或关键词,也可粘贴 GitHub 仓库链接

分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

prometheus/alertmanager

运维与部署

接收 Prometheus 等客户端发来的告警,去重、分组并按路由发送到邮件、PagerDuty、Webhook 等接收端,同时支持静默和抑制。

8,698
2,505
Go
Apache-2.0
创建于 13 年前

项目介绍

Alertmanager 是 Prometheus 体系中的告警处理组件。Prometheus 等客户端把告警发给它,它负责去重、分组,再按 YAML 配置的路由树把通知投递到邮件、PagerDuty、OpsGenie、通用 Webhook 等接收端 L5-L7。它还提供静默和抑制规则,例如同一条告警已有 critical 级别时,可以抑制对应的 warning 通知。

它适合运行 Prometheus 的运维和平台团队,用来集中决定哪类告警通知谁、以什么频率通知。随附的命令行工具 amtool 通过 API 查看告警、管理静默、渲染模板和测试路由。

快速使用

最快的试用方式是官方容器镜像 L23-L27:

docker run --name alertmanager -d -p 127.0.0.1:9093:9093 quay.io/prometheus/alertmanager

启动后访问 http://localhost:9093/。默认配置没有有用的接收端,正式使用需要编写 YAML 配置,并以 --config.file=<你的配置文件> 启动二进制。

最小配置需要 global(若用邮件通知则含 SMTP 设置)、带 receiver 的根 route,以及 receivers 列表。根路由不能带 matchers,且必须指定接收端,未匹配到任何子路由的告警会落到这里。路由、分组和抑制通过嵌套的 routes、group_by、group_wait、group_interval、repeat_interval 和 inhibit_rules 配置 L52-L177,README 中有一份覆盖常见场景的完整示例 L48-L178。

从源码构建需要 Go 和带 npm 的 Node.js L31-L41:

git clone https://github.com/prometheus/alertmanager.git
cd alertmanager
make build
./alertmanager --config.file=<你的配置文件>

amtool 随发布包提供,也可以用 go install github.com/prometheus/alertmanager/cmd/amtool@latest 安装。在配置文件中设置 alertmanager.url: "http://localhost:9093" 后,可用 amtool alert 列出告警、amtool silence add alertname=Test_Alert 创建静默 L204-L257。

配置与 API

配置使用 YAML,完整参考在 Prometheus 文档中 L48-L51。HTTP API 为 v2,挂载在 /api/v2 下,OpenAPI 规范在仓库中,可用于为各主流语言生成客户端 L179-L199。APIv1 在 0.16.0 弃用,0.27.0 起移除。若设置 --web.route-prefix,API 路由也带该前缀。实验性的 ConnectRPC API 在 /api/ 下提供 Connect 和 gRPC-Web,并在服务器根路径提供原生 gRPC、health 和 reflection。

amtool 还能渲染通知模板和测试路由:amtool config routes test --config.file=doc/examples/simple.yml --tree --verify.receivers=team-X-pager service=database owner=team-X 会打印匹配的接收端,不匹配时返回非零退出码 L326-L340。

高可用

Alertmanager 默认启用集群模式。集群需要在聚类端口(默认 9094)上同时放通 UDP 和 TCP;使用防火墙或容器时两种协议都要处理。成员通过 --cluster.peer 配置,监听地址由 --cluster.listen-address 指定,设为空字符串即关闭 HA L342-L399。

启用 HA 时,应让 Prometheus 直接指向所有 Alertmanager 实例,而不是在中间做负载均衡,因为实现要求每条告警发送到所有实例。本地起三节点集群可用仓库内 Procfile 配合 goreman。设置 --cluster.listen-address= 可关闭 HA L400-L403。

使用约束

  • 从源码构建需要 Go 和 Node.js/npm;使用预编译二进制或容器镜像不需要这些依赖。
  • HA 集群需要聚类端口同时开放 UDP 和 TCP,只放通 TCP 会导致 gossip 无法工作。
  • 实验性 ConnectRPC 的明文 h2c 监听既无加密也无对端认证,只应放在可信网络或 TLS 终止代理之后 L179-L199。
  • 实例没有带默认路由的 RFC 6890 地址时,必须设置 cluster.advertise-address L342-L399。
  • 许可证为 Apache-2.0 L419-L425。

HotRepo 点评

这是一个始于 2013 年的老牌基础设施项目,现有 8,698 Star、2,505 Fork。HotRepo 在 2026-11-12 的 Go 语言周榜快照中记录到新增 19 Star、当日该 Go 语言榜最好名次第 12;没有全语言日榜记录,因此这个周榜名次不宜解读为跨语言的整体热度。它的价值更偏结构性:大多数 Prometheus 部署最终都需要这一层告警路由,README 也体现了成熟度——有 HA 集群参数、OpenAPI 规范和随附的 amtool。

本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。

相关推荐

  1. prometheus/prometheus用单机拉取式监控服务器采集、查询服务指标并按条件触发告警。Go66,858
  2. TwiN/gatus面向开发者的自托管健康状态页,主动探测服务并按条件告警。Go12,604
  3. novuhq/novu开源通知与智能体通信基础设施,用一套 API 把消息发到收件箱、邮件、短信、推送、聊天以及 Slack、Teams 等渠道。TypeScript40,294