监控系统自身如何保证高可用?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。监控系统自己先稳,才能稳别人。