菜单
文档面包屑箭头 Grafana Mimir面包屑箭头 配置面包屑箭头 TSDB 块上传
开源

配置 TSDB 块上传

Grafana Mimir 支持上传历史 TSDB 块,这些块源自 Prometheus、Cortex,甚至其他 Grafana Mimir 安装。目前不支持从 Thanos 上传;更多信息,请参阅TSDB 块上传的已知限制

为了简化块上传操作,我们已将此功能内置到 Mimir 的 CLI 工具 mimirtool 中。更多信息,请参阅mimirtool backfill

块上传目前仍处于实验阶段,因此默认禁用。您可以通过 -compactor.block-upload-enabled CLI 标志或相应的 limits.compactor_block_upload_enabled 配置参数启用此功能。

yaml
limits:
  # Enable TSDB block upload
  compactor_block_upload_enabled: true

块验证

在开始上传块数据之前,Grafana Mimir 会对 meta.json 文件执行以下检查:

  • 仅支持 TSDB "v1" 块。这是 Prometheus v2、Grafana Mimir 和 Thanos 使用的格式。
  • MinTime 或 MaxTime 无效的块将被拒绝(负值或 MaxTime < MinTime)。
  • MinTime 或 MaxTime 在未来的块将被拒绝。
  • 超出保留期范围的块将被拒绝。
  • 覆盖时间范围大于最大压缩范围(-compactor.block-ranges 选项,最大值默认为 24 小时)的块将被拒绝。
  • 跨越最大压缩范围边界的块将被拒绝。例如,如果最大压缩范围是 24 小时,则开始时间在午夜之前、结束时间在午夜之后的块将被拒绝。
  • 带有 Thanos 降采样配置的块将被拒绝。
  • 大于 compactor_block_upload_max_block_size_bytes(按租户覆盖)设置的块将被拒绝。
  • 带有“外部标签”(Thanos 功能)的块将被拒绝。允许一些 Mimir 特定的标签。

上传块索引和 chunks 后,Grafana Mimir 会执行额外的块验证,以验证块是否格式良好,以及它们不会导致 Mimir 运行出现问题。您可以通过 compactor_block_upload_validation_enabled 按租户覆盖来禁用这些“完整块”验证。要在保持索引验证的同时禁用 chunks 验证,请改用 compactor_block_upload_verify_chunks 按租户覆盖。

按租户启用 TSDB 块上传

如果您的 Grafana Mimir 启用了多租户,您仍然可以使用上述方法为所有租户启用 TSDB 块上传。如果您希望按租户启用此功能,则可以使用运行时配置设置按租户覆盖:

  1. 启用运行时配置
  2. 为应启用 TSDB 块上传的租户添加覆盖:
yaml
overrides:
  tenant1:
    compactor_block_upload_enabled: true

TSDB 块上传的已知限制

Thanos 块无法上传

由于 Thanos 块的元数据中包含不受支持的标签,因此无法上传。

有关从 Thanos 导入块相关的限制以及现有解决方法的信息,请参阅从 Thanos 或 Prometheus 迁移到 Grafana Mimir

结果缓存需要刷新

Grafana Mimir 会缓存早于 10 分钟(可通过 -query-frontend.max-cache-freshness 配置)的样本用于范围查询结果。但是,上传块后,查询可能会返回不同的结果,因为上传了新数据。这意味着缓存的结果可能不正确。要修复缓存结果,Mimir 操作员可以手动刷新结果缓存。一种可能的替代方法是,通过使用 -query-frontend.results-cache-ttl 命令行选项(或按租户),将缓存结果的生存时间 (TTL) 从默认的 7 天减少到更短的时间,例如 6 小时。这将保证查询结果最多在此时间段后使用回填数据。

太新的块在稍后才能查询

当 querier 接收到针对给定 [开始时间, 结束时间] 期间的查询时,它们会检查该时间段,以决定是从存储、ingester,还是两者读取数据。假设 -querier.query-store-after 设置为 12h。这意味着查询 [现在-13h, 现在] 将从存储读取数据。但查询 [现在-5h, 现在] 则**不会**。如果用户上传了“太新”的块,querier 可能不会查询它们,因为它配置为仅查询 ingester 获取“新鲜”时间范围的数据。