基于版本:Loki >= v3.0.x
文章概要:说明配置保留策略的原因和方法。
参考文档:https://grafana.org.cn/docs/loki/latest/operations/storage/
Grafana Loki通过压缩器实现日志保留。默认情况下,compactor.retention-enabled标志未设置,因此发送到Loki的日志将永远保留。
变更配置config.yaml
...
compactor:
working_directory: /var/loki/compactor # 临时工作目录路径(必须可写)
compaction_interval: 60m # 压缩操作执行频率(默认 1h)
retention_enabled: true # 是否启用自动保留策略
retention_delete_delay: 4h # 删除操作延迟时间(默认 12h)
retention_delete_worker_count: 100 # 并行删除线程数(默认 150)
delete_request_store: filesystem # 删除请求存储方式
limits_config:
retention_period: 744h # 删除请求存储方式
...
重启loki
根据不同部署方式重启loki,略。程序启动后进行数据压缩,然后删除过期数据。
在工作目录下会生成deletion和retention两个目录
deletion
:用于存储待删除的日志数据块(chunks)的标记文件。retention
:用于存储与数据保留策略相关的临时文件。
参数详解
working_directory
作用:存放压缩和保留操作中间文件的目录
要求:需要持久化存储,确保目录有足够空间(建议 SSD)
典型值:
/data/loki/compactor
或专用存储路径
compaction_interval
作用:控制压缩任务执行频率
建议:生产环境建议保持默认 1h,过高频率可能影响查询性能
注意:缩短间隔会增加资源消耗,但能更快释放空间
retention_enabled
关键开关:必须设置为 true 才会执行保留策略
依赖:需要同时配置
table_manager
的保留策略才生效
retention_delete_delay
作用:标记为删除的数据实际删除前的等待时间
用途:防止误删后恢复数据的缓冲期
生产建议:可适当缩短到 1-4 小时(根据数据重要性)
retention_delete_worker_count
作用:控制并行删除的协程数量
调整建议:
机械硬盘:建议降低到 50-100
SSD/NVMe:可保持 150 或适当增加
需要监控 IO 使用率调整
delete_request_store
作用:存储删除请求记录的存储后端
可选值:
local
(本地文件系统)、s3
、gcs、filesystem
等生产建议:重要环境建议使用对象存储(需配置相应存储参数)