Prometheus Federation 与 Remote Write:如何选择跨集群汇聚

比较联邦查询与远程写入的数据流、可靠性和成本,设计多集群监控的分层架构。

文章目录 · 4 节

Federation 由上层 Prometheus 主动抓取下层已聚合指标;Remote Write 则由采集端把样本推送到长期存储。两者解决的问题不同,也可以组合使用。

先明确目标

需要少量全局健康指标和分层自治时,Federation 更简单:

- job_name: federate
  metrics_path: /federate
  params:
    match[]:
      - '{__name__=~"job:.*"}'
  static_configs:
    - targets: ['prometheus-region-a:9090']

需要统一长期保留、全局查询或高可用去重时,Remote Write 更合适,但必须管理队列、带宽和接收端容量。

观察传输健康

rate(prometheus_remote_storage_samples_failed_total[5m])
prometheus_remote_storage_samples_pending
rate(prometheus_remote_storage_samples_dropped_total[5m])

Remote Write 暂时中断会依赖 WAL 重放,长时间中断仍可能造成积压和磁盘压力。外部标签必须稳定标识 cluster、region 和 replica。

决策要点

  • Federation 只选择必要的预聚合序列
  • Remote Write 评估压缩后带宽与长期基数
  • HA 副本要由后端去重,不能误做 sum
  • 保留本地 Prometheus 以支持故障时独立排查

收尾清单

演练中心端不可用和网络分区,验证本地告警、队列恢复与数据缺口。架构图中明确每层的保留周期和查询责任。