菜单
开源 RSS

存储架构

为了支持存储层内容的迭代,Loki 具有可配置的存储架构。该架构被定义为适用于一段时间。一个 from 值标记了该架构的起始点。该架构一直有效,直到另一个条目定义了一个新的架构,并带有新的 from 日期。

schema_example

Loki 使用定义的架构来确定存储和查询数据时使用的格式。

使用架构使得 Loki 可以在存储层上进行迭代,而无需迁移现有数据。

新的 Loki 安装

对于没有历史数据的新 Loki 安装,这里是一个包含推荐值的架构配置示例

schema_config:
  configs:
    - from: 2024-04-01
      object_store: s3
      store: tsdb
      schema: v13
      index:
        prefix: index_
        period: 24h
属性描述
from对于新安装,这必须是过去的日期,使用最近的日期。格式为 YYYY-MM-DD。
object_stores3, azure, gcs, alibabacloud, bos, cos, swift, filesystem,或一个 named_store (参阅 StorageConfig)。
storetsdb 是当前唯一推荐的存储值。
schemav13 是最新的推荐架构值。
prefix任何不包含空格的值都可以接受。
period必须是 24h

更改架构

更改架构时需要考虑以下事项;如果架构更改未正确执行,可能会导致数据无法读取。

  • 在新架构中,务必将 from 日期设置为将来的日期。

    from 日期被 Loki 解释为从 UTC 时间 00:00:00 开始。因此,Loki 必须有一个将来的日期,以便在该日期和时间到达时能够过渡到新架构。

    使用当前日期时,请注意您与 UTC 的关系。确保您的当前日期在 UTC 00:00:00 之后。

    举个例子,假设当前日期是 2022-04-10,你想更新到 v13 架构,所以你重启 Loki,并将新架构的 from 日期设置为 2022-04-11。如果你忘记考虑你的时区是 UTC -5:00,并且你当地时间当前是 20:00,那实际上是 2022-04-11T01:00:00 UTC。当 Loki 启动时,它将看到新架构并开始按照新架构写入和存储对象。如果你然后尝试查询在 00:00:00 和 01:00:00 UTC 之间写入的数据,Loki 将使用新架构,数据将无法读取,因为它是在之前的架构下创建的。

  • 你无法撤销或回滚架构更改。

    使用某个活动架构写入的任何数据只能由该架构读取。如果你想返回到之前的架构;你可以添加另一个新条目,并使用之前的架构设置。

架构配置示例

schema_config:
  configs:
    - from: "2020-07-31"
      index:
        period: 24h
        prefix: loki_ops_index_
      object_store: gcs
      schema: v11
      store: tsdb
    - from: "2022-01-20"
      index:
        period: 24h
        prefix: loki_ops_index_
      object_store: gcs
      schema: v13
      store: tsdb