Loki | 数据过期自动删除策略设计

时间:2022-07-22
本文章向大家介绍Loki | 数据过期自动删除策略设计,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

最近使用Loki碰到一个比较蛋疼问题,配置日志过期时间,配置这种事情,自然是要参照官方文档了,当时就找到了这个文档,地址:

https://github.com/grafana/loki/blob/v1.5.0/docs/operations/storage/retention.md

。当我配置完成之后,启动Loki的时候直接提示:

Retention period should now be a multiple of periodic table duration

大概中文意思是说保留时间段必须是周期表的倍数,脑海里不禁打了一个大大问号,我是按照你的demo来的。于是,跑到issue里面进行了一番搜索,后来就发现了这个,如下是作者的回复 大概意思是说呢,默认情况下168小时一张表,日志保留时间应该是168的倍数,比如:168x4

于是有人认为Loki官方给出的实例具有一定的迷惑性,当然我就是这样被绊倒了。(能不能职业一点,这样的错误对于初级用户,不知道要浪费多少时间,所以啊,出了问题,强烈建议到官方issue去查找原因)

❝那么Loki数据保留策略是如何设计的呢? ❞

Loki支持在基于表的数据存储中存储索引和块。使用这种存储类型时,会在一段时间内创建多个表:每个表(也称为周期表)都包含特定时间范围内的数据。这样做可以带来两个明显的好处:

  • 每个表都绑定一个配置模式和版本,随着时间的推移修改了Loki的配置和版本信息,这样就可以做到多个模式和版本数据共存。在schema_config可以存在一个或者多个config,每个config中都存在一个from字段,这样的话,就可以在不同from时间段内使用不同模式配置信息,出现版本升级或者Loki架构修改的时候,这个功能显得尤为重要。
  • 通过这种配置当需要删除某个时间段之间的数据,就可以快速删除。数据存储系统中通常存在过期策略,而对于Loki是保留策略,可以在Loki中配置保留多少天的数据,那么之前数据会被清除,Loki中默认保留所有数据,如果想要开启保留策略,必须在loki.yaml配置文件中添加如下配置:
table_manager:
  retention_deletes_enabled: true
  retention_period: 336h

超出这个保留时间的表数据将被自动清理,具体保留数据策略如下图所示:

那么保留的表数量公式为:number_of_tables_to_keep = floor(retention_period / table_period) + 1注意:Loki的保留数据时间最小单位是24小时,所以这个保留参数的配置应该为24小时的倍数。另外一点需要注意的是Loki虽然在设计中声明自己是多租户的,而且每个租户之间数据隔离,但在过期策略这部分却不支持按照租户设置过期策略,所以就目前来说Loki的多租户并不是特别完善,如下图所示:

选择使用Loki做日志存储和查询工具的原因其一节省资源、其二能够跟Grafana监控平台无缝集成、社区非常活跃、发展速度非常快。就目前而说,它是一个轻量级的日志存储和查询工具(支持简单的日志统计),如果需要使用复杂数据分析和统计,那么建议使用EFK。以上就是本人在使用Loki的过程碰到一些问题,希望能够帮助到大家,谢谢!如有问题,关注公众号、加我微信,拉你进讨论群。