Prometheus远程写入与Thanos长期存储架构实战部署

监控数据长期存储的痛点与Thanos架构选型

Kubernetes集群的监控告警体系中,Prometheus是事实标准,但单机Prometheus的存储能力受限于本地磁盘,数据保留期通常仅15-30天。当故障排查需要回溯数周甚至数月的指标数据时,本地存储的局限性暴露无遗。Thanos作为Prometheus长期存储方案,通过Sidecar组件将数据上传至对象存储,Query组件实现跨实例全局查询,解决了监控数据的持久化和全局视图两大核心问题。

Thanos架构有三种部署模式:Sidecar模式(与Prometheus同 Pod 部署)、Receive模式(远程写入接收端)、Rule模式(分布式告警评估)。对于已有Prometheus集群的环境,Sidecar模式改造成本最低;新部署环境建议采用Receive模式,省去Sidecar依赖,支持Prometheus远程写入协议直接推送数据。

Thanos Receive模式部署与远程写入配置

Receive模式下,Thanos Receive作为独立组件接收Prometheus的remote_write数据,写入本地TSDB并异步上传至对象存储。部署示例如下:

# Prometheus远程写入配置
remote_write:
  - url: http://thanos-receive:19291/api/v1/receive
    queue_config:
      max_samples_per_send: 500
      max_shards: 10
      batch_send_deadline: 5s
      min_backoff: 30ms
      max_backoff: 5s
    send_exemplars: true
    metadata:
      send: true
      max_cells_per_send: 500

Thanos Receive使用Hashring实现数据分片,确保同一series的数据始终路由到同一接收节点:

# thanos-receive-hashring.json
[
  {
    "endpoints": ["thanos-receive-0:10901"],
    "tenants": ["default"]
  },
  {
    "endpoints": ["thanos-receive-1:10901"],
    "tenants": ["default"]
  },
  {
    "endpoints": ["thanos-receive-2:10901"],
    "tenants": ["default"]
  }
]

Receive节点数量建议为3的倍数以保证高可用,每个节点配置持久化存储卷。数据上传到对象存储的间隔由--tsdb.retention参数控制,默认2小时执行一次压缩上传。

对象存储选型与Compactor压缩策略

Thanos支持的对象存储后端包括S3、GCS、Azure Blob和阿里云OSS。国内环境常用MinIO作为兼容S3的私有存储:

# Thanos S3存储配置
type: S3
config:
  bucket: thanos-metrics
  endpoint: minio.monitoring:9000
  access_key: minioadmin
  secret_key: minioadmin
  insecure: true
  trace: false

Compactor组件负责对象存储中数据的降采样和合并压缩。长期监控数据的查询频率随时间递减,降采样可显著降低存储成本和查询延迟。默认策略将原始数据保留40天,5分钟粒度数据保留180天,1小时粒度数据永久保留:

# Compactor启动参数
thanos compact \
  --data-dir /data/thanos-compact \
  --objstore.config-file=/etc/thanos/storage.yml \
  --retention.resolution-raw=40d \
  --retention.resolution-5m=180d \
  --retention.resolution-1h=0d \
  --wait-interval=5m \
  --downsample-concurrency=4 \
  --compact.concurrency=4

全局查询与告警规则迁移

Thanos Query组件提供全局查询入口,可同时查询多个Prometheus实例和对象存储中的历史数据。配置Query指向所有Receive节点的gRPC端点:

thanos query \
  --endpoint=thanos-receive-0:10901 \
  --endpoint=thanos-receive-1:10901 \
  --endpoint=thanos-receive-2:10901 \
  --query.timeout=2m \
  --query.max-samples=50000000

告警规则从各Prometheus实例迁移到Thanos Rule组件,避免重复告警。Rule组件定期评估全局告警规则,通过Alertmanager发送通知。关键调优项是--eval-interval,建议设为30s平衡告警时效性和评估开销。

存储成本方面,一个1000节点Kubernetes集群的指标数据量约为2TB/月(15s采集间隔),经Compactor降采样后对象存储用量可压缩至每月约200GB,按MinIO部署成本计算,年存储费用约在万元级别,远低于扩展Prometheus本地磁盘的方案。

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/prometheus-yuan-cheng-xie-ru-yu-thanos-chang-qi-cun-chu-jia/

(0)
小编小编
上一篇 8小时前
下一篇 8小时前

相关推荐