监控系统自身如何保证高可用?Prometheus 本身是单点怎么办?
2026-08-11 01:06:54 # 监控

一个容易被忽视的悖论:监控系统的可用性,本身也是生产环境的一部分。如果 Prometheus / Grafana 自己挂了,整个集群就“失明”了。所以监控系统也要考虑容错。

Prometheus 的高可用

最常用的是**“双写”模式**:

  • 部署两个完全一样的 Prometheus 实例,各自独立抓取同一批目标;
  • Alertmanager 端,通过 --cluster.listen-address 参数让多个 Alertmanager 组成集群、对告警去重,避免同一个告警被发送两次。

这样即便其中一个 Prometheus 挂掉,另一个仍在采集;即便一条告警被两个实例同时发出,Alertmanager 也会去重。

Grafana 的高可用

Grafana 本身是无状态的,高可用相对简单:

  • 部署多个 Grafana 副本
  • 让它们共享同一个数据库(如 MySQL / PostgreSQL)来存储仪表盘配置和用户信息。

小结

Prometheus 靠“双写 + Alertmanager 去重”实现 HA,Grafana 靠“无状态多副本 + 共享数据库”实现 HA。监控系统自己先稳,才能稳别人。