Grafana Loki:日志聚合,换个思路做
Grafana Loki:日志聚合,换个思路做

Loki 在 GitHub 上有 28,451 个 Star。
Grafana 团队做的开源日志聚合系统,设计思路跟 Prometheus 一脉相承。不搞全文索引,只索引标签,压缩存储原始日志。做出来的结果是:运维简单,存储成本低。
1、 它解决了什么问题
搭过 ELK 的人都知道那套东西有多重。Elasticsearch 吃内存,Logstash 配置复杂,Kibana 学习曲线陡。一套下来,光是维护集群就占掉不少人力。
Loki 走了另一条路。它不建全文索引,只对每条日志流打上标签(和 Prometheus 用的一样),然后把原始日志压缩存放。查询的时候先通过标签定位到日志流,再在流里做 grep。
代价是全文搜索慢一些,换来的是存储开销大幅下降、架构大幅简化。

2、 架构长什么样
整套系统分三个组件:
- Alloy,负责采集日志,推送到 Loki。原来叫 Promtail,现在已经由 Alloy 接替。
- Loki 本体,负责存储和查询。
- Grafana,负责展示和检索。
没有 Kafka、没有 ZooKeeper、没有独立的搜索引擎。单机模式下甚至能编译成一个二进制直接跑,零外部依赖。
对 Kubernetes 环境尤其友好。Pod 的标签会被自动抓取并建索引,不需要额外配置。
3、 跟 Prometheus 配合
Loki 和 Prometheus 共用同一套标签体系。这意味着你在 Prometheus 里用的 label selector,可以直接拿去 Loki 里查日志。
排查问题的时候,先在 Prometheus 的指标面板看到某个服务异常,点进去就能切到对应时间范围的日志,标签自动对齐。不需要来回切换查询语句,也不用手动对时间戳。
4、 怎么用
源码编译:
git clone https://github.com/grafana/loki
cd loki
go build ./cmd/loki
./loki -config.file=./cmd/loki/loki-local-config.yaml
如果想跑多租户模式,编译的时候用 make loki,启动时指定多租户配置文件和 overrides 文件就行。
官方也提供了 Docker Driver,可以直接从 Docker 容器往 Loki 推日志,不需要单独跑采集器。
5、 适合什么场景
- 已经在用 Prometheus + Grafana 做监控,想把日志也接进来的团队。标签体系统一,查询体验连贯。
- Kubernetes 环境下需要轻量日志方案的场景。Pod 标签自动索引,部署简单。
- 日志量大但预算有限。不建全文索引,存储成本比 ELK 低一个量级。
Loki 采用 AGPL-3.0 协议开源,商业场景有 Apache-2.0 例外可选。
ELK 低一个量级。
Loki 采用 AGPL-3.0 协议开源,商业场景有 Apache-2.0 例外可选。
更多推荐




所有评论(0)