Loki 如何配置 S3 作为存储后端?

Loki 3.x 使用 TSDB v13 与 S3 存储日志块和索引;配置 bucket、region 与凭据来源,保留本地 WAL 和活动索引,说明 MinIO 兼容端与版本边界。

最佳实践
Loki 如何配置 S3 作为存储后端?封面

以下按 Loki 3.x 配置:在 schema_config 中设 object_store: s3,并配置 storage_config.aws。tsdb_shipper.shared_store 已在 Loki 3.0 移除;日志块与索引上传对象存储后,本地仍需 WAL、活动索引与缓存,并非只留缓存。

完整配置示例

auth_enabled: false

server:
  http_listen_port: 3100

common:
  path_prefix: /loki
  instance_addr: 127.0.0.1
  replication_factor: 1
  ring:
    kvstore:
      store: inmemory

ingester:
  chunk_idle_period: 5m
  max_chunk_age: 1h
  wal:
    enabled: true
    dir: /loki/wal

schema_config:
  configs:
    - from: 2024-01-01
      store: tsdb
      object_store: s3
      schema: v13
      index:
        prefix: index_
        period: 24h

storage_config:
  tsdb_shipper:
    active_index_directory: /loki/index
    cache_location: /loki/cache
  aws:
    bucketnames: my-loki-logs
    region: us-east-1

这是单进程、单副本示例,不是生产高可用拓扑。先创建 bucket、填写实际 region、授予工作负载权限,并为 /loki 配置可写存储,WAL 应持久化。auth_enabled: false 不提供 HTTP 身份认证,应配置入口访问控制。新部署的 schema 日期需早于写入数据;已有部署按迁移流程追加配置,保留历史条目。

要点说明

  • WAL 应持久化:用于崩溃恢复,但磁盘丢失、损坏或空间耗尽等情况下不能保证零丢失;
  • MinIO/对象存储兼容端:按实际地址设置 endpoint,常用 s3forcepathstyle: true,是否必需取决于 DNS/寻址配置;仅 HTTP 端点使用 insecure: true。若配置 ${AWS_ACCESS_KEY_ID} 等环境变量占位符,启动必须加 -config.expand-env=true;
  • 生产用 IAM 角色:EKS 用 IRSA 给 Pod 授权,密钥不落配置。

常见问题(FAQ)

Q:报 403 SignatureDoesNotMatch? 密钥错或时钟漂移;MinIO 场景先确认 s3forcepathstyle。

Q:旧索引格式 boltdb-shipper 还能用吗? 能用但官方推荐 tsdb,新部署直接上 v13 schema。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台