简介
Grafana Loki 是一个开源日志聚合系统,其存储设计不同于其他日志系统:Loki 仅对日志的元数据(标签,类似于 Prometheus 标签)建立索引,日志数据本身经过压缩后以 chunks 形式存储在对象存储(如 S3、GCS)或本地文件系统中。这种“小索引 + 高压缩 chunk”的架构简化了运维并显著降低了成本。
本页面为 Grafana Loki 官方文档中的 Storage(存储) 配置章节,介绍了 Loki 的存储架构演进、单存储(Single Store)模式、支持的块存储与索引存储后端,以及已弃用的多存储后端。
主要功能
存储架构演进
- Loki 2.8+:引入 TSDB 作为 Single Store 的新模式,并成为推荐的数据持久化方式。
- Loki 2.0:引入
boltdb-shipper(即 Single Store),仅需一个对象存储即可同时保存索引和 chunks。
- Loki 2.0 之前:chunks 与索引数据分开存储(对象存储/文件系统 + NoSQL/KV 数据库),这类“multistore”后端现已弃用。
Single Store(单存储)
指使用对象存储同时保存 Loki 索引与数据(chunks),支持两种模式:
- TSDB(推荐):从 Loki 2.8 开始提供,提升查询性能、降低总拥有成本(TCO),功能与
boltdb-shipper 对等。
- BoltDB(已弃用):开发期间称
boltdb-shipper,是 v2.0.0–v2.7.x 的推荐索引存储;利用 chunk 存储同时存索引与 chunks,部署更便宜简单。
使用 Single Store 无需额外的 Chunk 存储与 Index 存储。
支持的存储后端
Chunk 存储
- 文件系统:最简单,但无复制易丢数据,适合单机部署或本地开发。
- 对象存储:
- Google Cloud Storage (GCS):生产可用,适合 GCP 环境。
- Amazon S3:生产可用,适合 AWS 环境。
- Azure Blob Storage:生产可用,支持存储账户密钥或 Service Principal 认证。
- IBM Cloud Object Storage (COS):生产可用。
- Baidu Object Storage (BOS):百度云对象存储。
- Alibaba OSS:阿里云对象存储。
- 其他兼容 S3 API 的服务(如 MinIO)。
- Cassandra(已弃用):可用于 chunk 存储,生产安全,但未来可能移除。
Index 存储(以下均己弃用)
- Cassandra:可水平扩展、可配置复制,适合本地或已有 Cassandra 场景。
- BigTable:Google 云数据库,适合 GCP 或已有用户。
- DynamoDB:AWS 云数据库,需注意 provisioned capacity 导致的限流。
- BoltDB:嵌入式磁盘数据库,无复制,不适用于高可用集群。
适用场景
- 云上托管环境:在 AWS、GCP、Azure、IBM Cloud、百度云、阿里云等平台运行时,直接使用对应的生产级对象存储作为 Single Store 后端。
- 本地或开发测试:使用文件系统 + BoltDB 快速体验 Loki,或进行概念验证与本地开发。
- 低成本日志方案:通过 Single Store 减少组件数量,降低运维复杂度和费用。
- 自建兼容 S3 存储:通过 MinIO 等实现私有化对象存储支撑 Loki。
更多存储选项细节可查阅 Loki 文档的“manage(管理)”章节。