Loki v2.4.2搭配S3存储:日志保留配置最优方案咨询
Loki v2.4.2 90天日志保留配置方案(无需Compactor)
核心结论
- 绝对禁止直接在S3根前缀设置TTL:会误删Loki的活跃元数据、索引文件,导致数据损坏或查询异常
- 必须通过table_manager配置+S3前缀级生命周期规则组合实现安全的日志保留,无需运行Compactor
具体配置修改
基于你提供的Loki配置,需修改以下部分:
1. 更新table_manager配置
将原table_manager块替换为:
table_manager: retention_deletes_enabled: true retention_period: 2160h # 对应90天,单位小时 poll_interval: 24h # 每天检查一次过期数据,减少S3请求次数(可选,默认1h)
retention_deletes_enabled: true:开启过期索引的标记删除功能retention_period: 2160h:设置索引数据的保留周期为90天
2. 禁用Compactor
由于你不想运行Compactor,需明确禁用该组件:
compactor: enabled: false working_directory: /data/loki/boltdb-shipper-compactor shared_store: filesystem
3. 可选调整:接收端日志年龄限制
当前limits_config中reject_old_samples_max_age: 168h(7天)是限制接收超过7天的日志,若你需要接收最近90天的日志,可修改为:
limits_config: # 其他配置不变 reject_old_samples_max_age: 2160h
S3生命周期规则(TTL)设置
需为S3桶内两个特定前缀分别创建生命周期规则,不能在根前缀设置:
1. 索引文件前缀规则(对应schema_config中的index.prefix: index_)
- 规则名称:
loki-index-retention - 前缀:
index_ - 操作:永久删除对象,设置为对象创建后95天(比90天多5天缓冲,确保table_manager完成过期标记)
- 若开启S3版本控制,需勾选"删除所有版本"
2. 块文件前缀规则(Loki默认块存储前缀chunks_)
- 规则名称:
loki-chunks-retention - 前缀:
chunks_ - 操作:永久删除对象,设置为对象创建后95天
- 若开启S3版本控制,需勾选"删除所有版本"
关键注意事项
- 缓冲期的必要性:额外5天的缓冲是为了给table_manager足够时间扫描并标记过期索引为删除状态,避免S3提前清理仍被Loki引用的数据
- 配置验证:重启Loki后,查看日志确认
table_manager模块无报错,可通过/metrics端点查看loki_table_manager_deleted_tables_total指标验证删除逻辑是否正常运行 - 数据备份:修改配置前建议备份S3桶内的
index_和chunks_前缀数据,避免配置失误导致数据丢失
内容的提问来源于stack exchange,提问作者manu4543
相关产品推荐
相关产品推荐

