;操作;存储;保留

Grafana洛基存储保留

保留在Grafana洛基是通过实现的表管理器或者是压实机

默认情况下,当table_manager.retention_deletes_enabledcompactor.retention_enabled国旗没有设置,那么日志发送到洛基永生。

保留通过表管理器是通过依赖于对象存储TTL特性,并将工作对吗boltdb-shipper存储和块/索引存储。然而保留通过压实机只有支持吗boltdb-shipper商店。

压实机保留将成为默认的和长期的支持。它支持更细粒度的保留每个租户的政策和流程的用例。

压实机

压实机可以删除处理索引条目。它还可以应用细粒度的保留。当与压实机应用保留表管理器是不必要的。

运行压缩机作为一个单例(单个实例)。

压实和保留是等幂的。如果压缩机重新启动时,它将继续从那里离开。

压缩机循环应用压实和保留在每一个compaction_interval如果落后于,或者尽快。

压实机的算法来更新索引:

  • 为每个表内每一天:
    • 紧凑的表到一个索引文件。
    • 遍历整个指数。使用租户配置识别和标记块需要被删除。
    • 从索引中删除标记块并保存在磁盘上的文件参考。
    • 上传新修改的索引文件。

保留算法应用于索引。块并不会被删除,同时应用保留算法。块将被删除的压实机异步横扫。

标记块只会被删除retention_delete_delay配置是过期的,因为:

  • boltdb-shipper从共享存储索引刷新组件使用它(查询器和统治者)在一个特定的时间间隔。这意味着立即删除块可能导致组件还有参考旧块和未能执行查询。有一个延迟允许组件优雅地刷新他们的存储和删除它们引用的块。

  • 它提供了一个短的时间窗口中取消块删除的配置错误。

标记文件(包含块删除)应该存储在一个持久的磁盘,因为磁盘将是唯一的参考。

保存配置

这个压缩机配置示例激活保留。

压缩机:working_directory: /数据/保留shared_store: gcs compaction_interval: 10 m retention_enabled:真正的retention_delete_delay: 2 h retention_delete_worker_count: 150 schema_config:配置:——从:“2020-07-31”指数:时间:24小时前缀:loki_index_ object_store: gcs模式:v11商店:boltdb-shipper storage_config: boltdb_shipper: active_index_directory: /数据/索引cache_location: /数据/ boltdb-cache shared_store: gcs gcs: bucket_name:洛基

注意保留仅针对指数周期是24小时。

retention_enabled为true。没有它,压实机只会紧凑的表。

定义schema_configstorage_config访问存储。

该指数期必须24小时。

working_directory是块和临时表的目录将被保存。

compaction_interval规定压实和/或保留多久。如果压缩机落后,压实和/或保留尽快发生。

retention_delete_delay压实机的延迟后将删除标记块。

retention_delete_worker_count指定的最大数量goroutine工人删除块实例化。

配置保存期

停留时间内配置limits_config配置部分。

有两种方式设置保留政策:

  • retention_period这是全球应用。
  • retention_stream它只适用于块匹配选择器吗

的最小停留时间是24小时。

这个示例配置全球保留:

…limits_config: retention_period: 744 h retention_stream:选择器:“=“开发”}{名称空间”优先级:1时间:24小时per_tenant_override_config: /etc/overrides.yaml……

可以定义每个租户保留使用/etc/overrides.yaml文件。例如:

覆盖:“29”:retention_period: 168 h retention_stream: -选择器:“=“刺激”}{名称空间”优先级:2期:336 h -选择器:“=“洛基”}{容器”优先级:1期:72 h“30”: retention_stream: -选择器:“{容器=“nginx”}”优先级:1时间:24小时

选择一个规则应用通过选择列表中的第一个匹配:

  1. 如果一个基本配置retention_stream当前的流匹配,选择优先级最高。
  2. 如果一个全球retention_stream当前的流匹配,选择优先级最高。
  3. 如果一个基本配置retention_period指定,它将被应用。
  4. 全球retention_period如果没有其他选择匹配。
  5. 如果没有全球retention_period指定,默认值吗744 h(30天)保留使用。

流匹配使用相同的语法普罗米修斯标签匹配:

  • =:选择标签提供相等的字符串。
  • ! =:选择标签不等于所提供的字符串。
  • = ~:选择标签regex-match提供的字符串。
  • ! ~:选择标签不regex-match提供的字符串。

示例配置将这些规则:

  • 所有租户除外29日30.dev名称空间的保存期24小时个小时。
  • 所有租户除外29日30.中所没有的dev名称空间的停留时间744 h
  • 为租户29日:
    • 所有流除容器洛基或名称空间刺激会停留时间的168 h(1周)。
    • 所有的流刺激名称空间的保存期336 h(2周),即使容器标签洛基,因为的优先级刺激规则是更高。
    • 流容器的标签洛基但不是在名称空间中刺激将会有一个72 h保存期。
  • 为租户30.:
    • 所有流除容器标签nginx将全球的停留时间744 h,由于没有覆盖指定。
    • 流的标签nginx将有一个停留时间的24小时

表管理器

为了启用保留支持,表管理器需要配置为启用删除和保存期。请参考table_manager洛基的配置参考所有可用的选项。或者,table-manager.retention-periodtable-manager.retention-deletes-enabled可以使用命令行标志。提供的保存期需要时间表示为一个字符串,该字符串可以使用普罗米修斯常见的解析模型ParseDuration。例子:7 d,1 w,168 h

警告的停留时间必须是多个指标和块表,配置period_config块。看到表管理器文档的更多信息。

请注意:为了避免查询的数据超出了停留时间,max_look_back_period配置在chunk_store_config必须设置为一个值小于或等于设定是什么table_manager.retention_period

当使用S3或者GCS,桶存储块到期需要正确策略集。更多细节请S3的文档gc的文档

目前,全球只能保留策略设置。每个租户与摄取一个API来删除日志保留政策仍在发展。

因为洛基的设计目标是使存储日志便宜,一个基于卷删除API是剩余。直到这一特性被释放,如果你突然摄入必须删除日志,您可以删除旧的对象存储块。但是请注意,这只删除日志内容并保持标签索引完好无损;你仍然可以看到相关的标签但无法检索日志内容删除。

为进一步的细节表管理器内部,请参考表管理器文档。

示例配置

示例配置与GCS 28天保留:

schema_config:配置:——从:2018-04-15商店:bigtable object_store: gcs模式:v11指数:前缀:loki_index_时期:168 h storage_config: bigtable:实例:BIGTABLE_INSTANCE项目:BIGTABLE_PROJECT gcs: bucket_name: GCS_BUCKET_NAME chunk_store_config: max_look_back_period: 672 h table_manager: retention_deletes_enabled:真正的retention_period: 672 h