基于版本: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 :用于存储与数据保留策略相关的临时文件。

参数详解

  1. working_directory

    1. 作用:存放压缩和保留操作中间文件的目录

    2. 要求:需要持久化存储,确保目录有足够空间(建议 SSD)

    3. 典型值:/data/loki/compactor 或专用存储路径

  2. compaction_interval

    1. 作用:控制压缩任务执行频率

    2. 建议:生产环境建议保持默认 1h,过高频率可能影响查询性能

    3. 注意:缩短间隔会增加资源消耗,但能更快释放空间

  3. retention_enabled

    1. 关键开关:必须设置为 true 才会执行保留策略

    2. 依赖:需要同时配置 table_manager 的保留策略才生效

  4. retention_delete_delay

    1. 作用:标记为删除的数据实际删除前的等待时间

    2. 用途:防止误删后恢复数据的缓冲期

    3. 生产建议:可适当缩短到 1-4 小时(根据数据重要性)

  5. retention_delete_worker_count

    1. 作用:控制并行删除的协程数量

    2. 调整建议:

      1. 机械硬盘:建议降低到 50-100

      2. SSD/NVMe:可保持 150 或适当增加

      3. 需要监控 IO 使用率调整

  6. delete_request_store

    1. 作用:存储删除请求记录的存储后端

    2. 可选值:local(本地文件系统)、s3gcs、filesystem

    3. 生产建议:重要环境建议使用对象存储(需配置相应存储参数)