为什么选择 GreptimeDB
问题:三种信号,三套系统
大多数团队的可观测性栈长这样:Prometheus(或 Thanos/Mimir)跑 metrics,Grafana Loki(或 ELK)跑日志,Elasticsearch(或 Tempo)跑 traces。每套系统各有一套查询语言、存储方案、扩展方式,运维各管各的。
"三支柱"架构在这些关注点各自独立时是合理的。但实际跑起来就是:
- 3 倍运维量 — 三套系统要分别部署、监控、升级、排障
- 数据孤岛 — 错误率飙升和日志里的异常模式要手动在系统间切换才能关联
- 成本失控 — 每套系统存一份冗余元数据,各自独立扩展导致资源浪费
GreptimeDB 的思路不同:一个引擎处理三种信号,数据放对象存储,计算存储分离。
统一处理可观测数据
GreptimeDB 通过以下方式统一处理 metrics、logs 和 traces:
一套系统替代原来的多组件栈。
具体来说:用一个数据库替代 Prometheus + Loki + Elasticsearch,用 SQL 在一条查询里关联 metrics 异常、日志模式和 trace 延迟——不用在系统间来回切换。

对象存储,成本低一个数量级
GreptimeDB 以云对象存储(S3、Azure Blob Storage 等)为主存储层,配合列式压缩,存储成本最高可降低 50 倍。支持灵活扩展到各类云存储,管理简单,无厂商锁定。
生产环境实测:
- Logs:OceanBase Cloud 生产环境存储成本下降 60%+(从 Loki 迁移到 GreptimeDB,80+ 集群、300TB 多云日志和 SQL 审计数据)
- Traces:存储成本降低 45 倍,查询快 3 倍(替换 Elasticsearch 作为 Jaeger 后端,一周完成迁移)
- Metrics:用原生计算存储分离替代 Thanos,运维复杂度大幅下降
高性能
写入端,GreptimeDB 用 LSM Tree、数据分片、灵活的 WAL 配置(本地盘或 Kafka)等手段处理大规模可观测数据的写入负载。
查询端,GreptimeDB 用纯 Rust 编写,查询引擎基于 Apache DataFusion 做向量化执行和分布式并行处理,结合多种索引(倒排索引、跳数索引、全文索引)做智能裁剪和过滤。