Prometheus长期存储为何成为运维痛点
Prometheus单机存储默认保留15天数据,适合短期监控和告警场景。一旦需要历史趋势分析、容量规划或合规审计,15天远远不够。Prometheus本地TSDB不适合长期存储——写入放大严重、压缩开销大、单节点无法水平扩展。远程写入(Remote Write)机制把指标数据实时推送到远端存储,Prometheus本身只保留短期热数据,长期数据由专用存储引擎承接。这是解决Prometheus长期存储的标准路径。
远程写入配置与性能调优
远程写入在Prometheus配置文件中声明remote_write段,指定远端接收端点。核心参数:
# prometheus.yml
remote_write:
- url: "http://thanos-receive:19291/api/v1/receive"
queue_config:
max_samples_per_send: 5000
max_shards: 100
batch_send_deadline: 5s
min_backoff: 30ms
max_backoff: 100ms
metadata_config:
send: true
send_interval: 1m
max_shards控制并发分片数,默认100在高吞吐场景可能不够。每个分片缓存batch_send_deadline时间内的样本再批量发送,减少网络开销。远端不可达时自动降速,min_backoff/max_backoff控制退避策略。监控remote_write自身的指标(prometheus_remote_write_queue_length、prometheus_remote_write_sent_samples_total)判断写入是否跟得上采集速度。
Thanos架构:全局查询与对象存储长期保留
Thanos是Prometheus长期存储方案中部署量最大的项目。核心架构由四个组件构成:
Thanos Receive:接收远程写入数据,写入本地TSDB后上传到对象存储。支持多副本部署和去重,解决Prometheus单点问题。
Thanos Store Gateway:从对象存储读取历史数据,响应查询请求。支持按时间分区,单个Store Gateway只加载特定时间范围的数据块。
Thanos Query:统一查询入口,同时查询Sidecar(短期热数据)和Store Gateway(长期冷数据),对上层暴露标准PromQL接口。
Thanos Compactor:对对象存储中的数据块执行压缩和降采样,降低长期存储开销。
对象存储是Thanos长期存储的基础设施。S3兼容存储(MinIO、Ceph RGW)或GCS、Azure Blob均可。数据块按2小时一个单位上传,Compactor将高精度数据降采样为5分钟和1小时粒度,查询时按时间范围自动选择合适精度。
# Thanos Receive部署示例
thanos receive \
--tsdb.path=/data/thanos-receive \
--remote-write.address=0.0.0.0:19291 \
--label="receive_replica=\"receive-a\"" \
--objstore.config-file=objstore.yml
Mimir架构:Grafana Labs的水平扩展方案
Grafana Mimir从Cortex项目演进而来,定位为Prometheus兼容的水平可扩展长期存储。与Thanos的关键架构差异在于:
Mimir采用写路径和读路径分离设计。Distributor接收写入请求,哈希分片到Ingester节点。Ingester将数据写入内存和WAL,定期刷盘并上传对象存储。Querier和Store Gateway分别处理热数据和冷数据查询。
Mimir引入Tenant概念,天然支持多租户隔离。每个租户独立的指标命名空间和资源配额。Thanos虽然可以通过外部认证实现多租户,但不是原生设计。
数据去重方面,Mimir在Ingester层通过哈希去重,写入路径即去重,查询路径无额外开销。Thanos Receive的去重在查询路径完成,高基数场景查询性能受影响。
选型决策:场景驱动而非功能堆砌
两个方案没有绝对优劣,选型依据实际场景:
已有Thanos Sidecar部署、以单集群监控为主、不需要多租户:Thanos更简单,组件可按需逐步引入,运维复杂度低。适合10-50个Prometheus实例的中等规模。
大规模SaaS平台、需要多租户隔离、写入量超千万样本/秒:Mimir原生水平扩展和多租户能力更匹配。写入路径去重对高基数场景性能优势明显。
混合方案也常见:短期使用Thanos Quickstart快速验证,规模增长后迁移到Mimir。两者共享相同的对象存储格式,迁移成本可控。
无论选哪个方案,对象存储的稳定性和成本是长期运行的关键。MinIO集群至少3节点保证冗余,配合生命周期策略将冷数据转移到低成本存储层。长期监控数据的价值随着时间衰减,存储成本却线性增长,合理设置数据保留策略才能让投入产出可持续。
原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/prometheus-yuan-cheng-xie-ru-yu-chang-qi-cun-chu-fang-an/