跳到主要内容
  1. 产品对比
  2. Prometheus + Alertmanager

夜莺 vs Prometheus + Alertmanager

Prometheus 不用换,exporter 不用换,Grafana 面板不用换。Alertmanager 是这组对比里唯一真正被替掉的组件:规则从 YAML 挪到页面上,路由树拍平成通知规则,静默变成带业务组边界的屏蔽规则。

30 秒结论

  • 继续用 Prometheus + Alertmanager,如果

    团队习惯 GitOps、规则数量能记在脑子里、告警通过 webhook 送进 PagerDuty 这类值班系统就够了。这套组合成熟、省组件,没有理由为换而换。

  • 换夜莺,如果

    规则要交给非 SRE 的业务团队在页面上维护,权限要按业务组划分,值班的人需要电话短信,或者数据已经不只在 Prometheus 里:日志在 ES、业务指标在 MySQL。

  • 两套并行,如果

    想先验证再决定。夜莺把 Prometheus 注册成数据源就能判定同一批规则,Alertmanager 继续发通知,按通知渠道逐个切换,任何一步都能在一分钟内回退。

它的路子

规则写在 YAML 里,靠 GitOps 管。

夜莺的路子

规则配在页面上,按业务组分权限。

它擅长什么

Prometheus 依然是最好的时序底座之一,Alertmanager 的分组与静默模型设计得很干净。规模不大、团队习惯 GitOps、告警规则数量可控时,这套组合完全够用,而且不用多引入组件。

什么时候换夜莺

当告警规则要交给非 SRE 的业务团队维护、需要按业务组分权限、需要电话短信这类媒介,或者数据不只在 Prometheus 里的时候,夜莺更省事——它就是把这几件事做厚的。

换的信号

  • 告警规则要交给非 SRE 的业务团队维护
  • 凌晨三点得有人接电话,webhook 叫不醒人
  • 数据已经不全在 Prometheus 里了

rules.yml + alertmanager.yml

- alert: MysqlReplicaLag  expr: mysql_slave_lag_seconds > 30  for: 5m  labels: { team: dba }route:  receiver: dba-webhook  group_by: [alertname]

夜莺 · 告警规则

名称
MySQL 副本延迟
条件
mysql_slave_lag_seconds > 30,持续 5m
业务组
DBA
通知
电话、短信、钉钉
谁能改
DBA 组
同一条规则,两种写法
你
一句话创建:mysql-prod 副本延迟超过 30 秒持续 5 分钟,电话通知 DBA 组
夜莺 AI
PromQL 和阈值已生成。业务组我不猜,请从下拉里选一个,选好就创建。

逐项对照

能力对比
能力对比夜莺 v9Prometheus + Alertmanager
数据源内置: 指标、日志、SQL,10+ 类型不支持: 只判定 Prometheus 自身的数据
规则在哪配内置: 页面配置,按业务组归属,可整份导入 rules.yml不支持: YAML 文件 + reload,没有页面编辑
规则语法内置: PromQL 不变,阈值写在表达式里内置: PromQL
通知聚合不支持: 一次通知一个事件,不按标签合并成一条消息内置: group_by / group_wait / group_interval
跨规则抑制部分支持或需扩展: 同一规则多档阈值内置抑制;跨规则要用事件 Pipeline 改写内置: inhibit_rules
静默 / 屏蔽内置: 固定时间与周期时间,可只屏蔽通知保留事件,带业务组边界部分支持或需扩展: 一次性 Silence;周期静默靠路由上的 mute_time_intervals
通知媒介内置: 20 种内置,含电话、短信、钉钉、飞书、企业微信部分支持或需扩展: 邮件、Slack、PagerDuty、Telegram、企业微信、webhook 等;电话、短信、钉钉、飞书要靠第三方
订阅与协同内置: 订阅规则、超时抄送、事件 Pipeline 处理器不支持: 无
权限内置: 用户、团队、业务组 RBAC不支持: 没有认证和权限模型
仪表盘部分支持或需扩展: 内置仪表盘,可按 URL 嵌入 Grafana 面板不支持: 只有表达式浏览器,通常配 Grafana
告警自愈内置: ibex 脚本执行不支持: 无
AI / MCP内置: 内置助手与 74 个 MCP 工具不支持: 无
许可证内置: Apache-2.0内置: Apache-2.0,CNCF 毕业项目
  • 内置
  • 部分支持或需扩展
  • 不支持

基于各项目 2026 年 8 月开源版本的公开能力,只作选型参考。我们尽量把对方的长处写清楚——选型建议不老实,社区口碑也就没了。

对象怎么对应

一份 rules.yml 加一份 alertmanager.yml,拆开后每一项落到哪里。完整的逐条对应、拍平路由树的方法和四个不对称之处,见迁移文档。

Prometheus / Alertmanager夜莺
rules.yml 里的告警规则告警规则,整份粘进「导入 Prometheus 告警规则」
记录规则不动,继续由 Prometheus 计算
receivers[]通知媒介 + 通知规则里的通知配置
route 路由树拍平:每条从根到叶的路径 AND 成一份通知配置
group_by / group_wait / group_interval没有对应物,一次通知只装一个事件
inhibit_rules没有声明式对应物,用事件 Pipeline 的丢弃处理器改写
Silence屏蔽规则,必须属于一个业务组
Alertmanager 集群多个告警引擎实例按规则分片,不需要 gossip

两个最容易踩的坑:夜莺通知配置的「适用级别」一个都不勾等于谁都不匹配;事件缺少某个标签时,!= 和 !~ 也判为不匹配,而 Alertmanager 把缺失标签当空串。

关于这组对比的常见问题

要替换 Prometheus 吗?

不用。夜莺不存时序数据,Prometheus 继续抓取和存储,夜莺把它注册成数据源,按周期发 instant query 做判定。Thanos、Mimir、VictoriaMetrics 同样直接接。

alertmanager.yml 能自动转换吗?

告警规则能:rules.yml 整份粘进「规则管理 → 导入 → 导入 Prometheus 告警规则」。路由、接收器和静默要按迁移文档逐条重建,因为夜莺是平铺的通知规则,不是路由树。

夜莺能接收 Alertmanager 发出的 webhook 吗?

不能。夜莺没有入站告警接口,只有指标写入口,所以不能把 Alertmanager 挂在前面当转发器过渡,规则只能在夜莺里重建。

Alertmanager 的告警分组在夜莺里怎么办?

夜莺一次通知只装一个事件,不按标签把多条告警合并成一条消息。降噪靠规则层面的合并(一条规则覆盖查询返回的所有序列)、屏蔽规则和订阅规则。如果值班流程强依赖分组消息,这是切换前要先认下的差异。

切换要停 Alertmanager 吗?

最后一步才停。前面所有步骤里 Prometheus 和 Alertmanager 都正常运行:夜莺的规则先禁用导入,挑一个业务组做金丝雀,并行比对,最后从 rule_files 里摘掉告警规则,再停 Alertmanager。

拿不准?两套一起跑。

夜莺读的是你现有的存储,装上不影响现在正在跑的告警。