remote write 是什么
远程写让 Prometheus 边采集边把样本推送到远端:长期存储、联邦中心或云端服务。本地保留期照常工作,因此既保住了本地查询的便利,又能把数据留存更久。它常用于多集群聚合与跨机房统一存储,配置的关键在于远端端点与队列参数。
基本信息
| 配置键 | remote_write |
|---|---|
| 推送目标 | 长期存储 / 联邦中心 / 云服务 |
| 队列参数 | max_samples_per_send、max_shards 等 |
| 过滤手段 | write_relabel_configs |
| 本地保留 | 不受影响,照常按 retention 清理 |
| 关键监控 | 远端写入失败、队列长度与内存占用 |
典型使用场景
- 把本地 Prometheus 数据汇总到统一长期存储做跨集群查询
- 多集群数据汇聚到中心,支持跨集群聚合看板
- 使用托管监控服务时通过 remote write 上报
- 按需过滤掉 go_* 等低价值指标,降低带宽与远端成本
- 异地容灾:本地一份、远端一份,避免单点数据丢失
- 迁移期间双写,平滑切换数据源
配置示例
配置示例
remote_write:
- url: http://thanos-receive:19291/api/v1/receive
queue_config:
max_samples_per_send: 5000
max_shards: 30 # 分片数决定并发上传能力
write_relabel_configs:
- source_labels: [__name__]
regex: 'go_.*' # 过滤低价值指标
action: drop关键参数
| 参数 | 作用 | 调整方向 |
|---|---|---|
| url | 远端接收端点 | 支持多个 remote_write |
| max_shards | 并发上传分片数 | 远端慢时适当增大 |
| max_samples_per_send | 单批样本数 | 大端点可调大 |
| write_relabel_configs | 发送前过滤 | 丢弃低价值指标 |
| queue 相关 | 重试与背压 | 按远端稳定性调整 |
远端不可用时队列会持续重试,长时间失败会推高内存占用与磁盘 WAL;要监控远端存储相关指标,避免影响本地采集与写入。
write_relabel_configs 误删关键序列会在远端形成数据缺口,且本地看不出异常,需定期核对远端序列是否齐全。
多个 remote_write 目标会各自维护队列:同时写两处时内存与带宽开销都会上升,按需评估。
远端与本地的时间采样间隔保持一致可以减少对齐问题;查询远端长期数据时注意其降采样策略与保留期。