You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS EKS中Loki-Stack日志存储优化与8天留存配置求助

Loki日志存储与留存管理问题排查及配置优化

问题场景与需求

  • 运行环境:AWS EKS 1.26
  • 部署组件:通过Helm Chart部署Promtail+Loki+Grafana栈
  • 核心需求:
    • 存储类型:Gp2
    • 最大存储配额:105 GiB
    • 日均日志产生量:10-15 GiB
    • 日志留存周期:8天(到期需彻底删除)
  • 当前问题:loki-0 Pod的/data目录存储空间被快速占满,无法自动释放过期日志占用的空间

当前Helm配置命令

helm upgrade --install loki grafana/loki-stack --namespace=loki --set grafana.enabled=true,\
prometheus.enabled=true,\
prometheus.alertmanager.persistentVolume.enabled=true,\
prometheus.server.persistentVolume.enabled=false,\
loki.persistence.enabled=true,\
loki.persistence.storageClassName=gp2,\
loki.persistence.size=105Gi,\
config.table_manager.retention_deletes_enabled=true,\
config.table_manager.retention_period=192h,\
loki.limits_config.max_entries_limit=15000,\
compactor.retention_enabled=true,\
compactor.retention_delete_delay=2h,\
compactor.compaction_interval=10m,\
compactor.retention_delete_worker_count=150

配置问题分析

你的配置存在几个关键问题,导致过期日志无法被正确清理:

  1. table_manager配置已过时:Loki 2.0+版本后,索引管理已由Compactor组件接管,table_manager相关配置不再生效,这会导致索引层面的过期数据无法被标记删除。
  2. 缺少日志块的留存配置:仅启用Compactor的retention功能,但未明确设置日志块的留存周期,导致实际日志数据不会被清理。
  3. 未配置存储大小限制触发的清理:当存储接近配额时,没有配置基于存储容量的自动清理策略,无法在空间不足时强制释放过期数据。

修正后的Helm配置命令

helm upgrade --install loki grafana/loki-stack --namespace=loki --set grafana.enabled=true,\
prometheus.enabled=true,\
prometheus.alertmanager.persistentVolume.enabled=true,\
prometheus.server.persistentVolume.enabled=false,\
loki.persistence.enabled=true,\
loki.persistence.storageClassName=gp2,\
loki.persistence.size=105Gi,\
# 启用Compactor核心清理能力
compactor.retention_enabled=true,\
compactor.retention_delete_delay=2h,\
compactor.compaction_interval=10m,\
compactor.retention_delete_worker_count=150,\
# 设置全局日志数据留存周期为8天(192h)
loki.limits_config.retention_period=192h,\
# 启用存储容量阈值触发的清理策略
loki.limits_config.enforce_metric_quota=true,\
loki.limits_config.max_global_bytes_per_user=94500000000,\
# 配置BoltDB索引的留存清理
loki.storage_config.boltdb_shipper.shared_store=filesystem,\
loki.storage_config.boltdb_shipper.compaction_interval=10m,\
loki.storage_config.boltdb_shipper.retention_enabled=true,\
loki.storage_config.boltdb_shipper.retention_period=192h

关键配置说明

  • loki.limits_config.retention_period=192h:全局定义日志数据的留存周期,超过8天的日志块会被标记为待删除。
  • loki.storage_config.boltdb_shipper.retention_enabled=true 和 retention_period=192h:针对BoltDB索引启用留存清理,确保过期索引数据被删除,释放索引占用的存储空间。
  • loki.limits_config.max_global_bytes_per_user=94500000000:设置存储容量阈值(总配额的90%),当存储使用量超过该值时,Loki会优先清理最旧的日志,防止存储空间被耗尽。
  • 移除table_manager相关配置:该组件已被Compactor取代,保留会导致配置冲突,无法正常触发索引清理。

内容的提问来源于stack exchange,提问作者Arani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 16:35:09