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

正文顶部截图

Loki 在 GitHub 上有 28,451 个 Star。

Grafana 团队做的开源日志聚合系统,设计思路跟 Prometheus 一脉相承。不搞全文索引,只索引标签,压缩存储原始日志。做出来的结果是:运维简单,存储成本低。

1、 它解决了什么问题

搭过 ELK 的人都知道那套东西有多重。Elasticsearch 吃内存,Logstash 配置复杂,Kibana 学习曲线陡。一套下来,光是维护集群就占掉不少人力。

Loki 走了另一条路。它不建全文索引,只对每条日志流打上标签(和 Prometheus 用的一样),然后把原始日志压缩存放。查询的时候先通过标签定位到日志流,再在流里做 grep。

代价是全文搜索慢一些,换来的是存储开销大幅下降、架构大幅简化。

README区域截图

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 例外可选。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐