Loki:像 Prometheus,但用于日志

Loki 是一个水平可扩展、高可用的多租户日志聚合系统,灵感来源于 Prometheus
它的设计目标是具有较高的性价比且易于操作。
它不对日志内容进行索引,而是对每个日志流的标签集合进行索引。

与其他日志聚合系统相比,Loki:

  • 不对日志进行全文索引。通过存储压缩的、非结构化的日志并仅索引元数据,Loki 更容易操作,运行成本也较低。
  • 使用与 Prometheus 中相同的标签来索引和分组日志流,使您能够无缝地在指标和日志之间切换,且无需更改已经在 Prometheus 中使用的标签。
  • 特别适合存储 Kubernetes Pod 日志。诸如 Pod 标签等元数据会被自动抓取并进行索引。
  • 在 Grafana 中原生支持(需要 Grafana v6.0)。

基于 Loki 的日志栈由三个组件组成:

  • promtail 是代理,负责收集日志并将其发送到 Loki。
  • loki 是主服务器,负责存储日志和处理查询。
  • Grafana 用于查询和显示日志。

注意,Promtail 被认为已完成特性开发,未来的日志收集开发将在 Grafana Alloy 中进行

Loki 像 Prometheus,但用于日志:我们更倾向于使用基于多维标签的方法进行索引,并且希望拥有一个单一的二进制文件,易于操作且没有依赖。
Loki 与 Prometheus 的不同之处在于,它专注于日志而非指标,并且通过推送方式传递日志,而非拉取方式。

入门

升级

文档

常用部分:

获取帮助

如果您有任何关于 Loki 的问题或反馈:

我们欢迎您的反馈。

进一步阅读

贡献

请参考 CONTRIBUTING.md

从源代码构建

Loki 可以在单个主机、无依赖模式下运行,使用以下命令:

您需要安装 go

推荐使用 我们的构建 Dockerfile 中的版本。

$ go get github.com/grafana/loki
$ cd $GOPATH/src/github.com/grafana/loki # 默认情况下 GOPATH 为 $HOME/go

$ go build ./cmd/loki
$ ./loki -config.file=./cmd/loki/loki-local-config.yaml
...

要在非 Linux 平台上构建 Promtail,使用以下命令:

$ go build ./clients/cmd/promtail

在 Linux 上,如果启用了 Journal 支持,Promtail 需要安装 systemd 头文件。
要启用 Journal 支持,应该使用 Go 构建标志 promtail_journal_enabled

在 Ubuntu 上启用 Journal 支持,运行以下命令:

$ sudo apt install -y libsystemd-dev
$ go build --tags=promtail_journal_enabled ./clients/cmd/promtail

在 CentOS 上启用 Journal 支持,运行以下命令:

$ sudo yum install -y systemd-devel
$ go build --tags=promtail_journal_enabled ./clients/cmd/promtail

否则,要在没有 Journal 支持的情况下构建 Promtail,运行 go build 并禁用 CGO:

$ CGO_ENABLED=0 go build ./clients/cmd/promtail

采用者

请参阅 ADOPTERS.md 了解当前使用 Loki 的一些组织。
如果您希望将您的组织添加到此列表,请打开 PR 将其添加。

许可证

Grafana Loki 采用 AGPL-3.0-only 许可证发布。如需了解 Apache-2.0 的例外,请参阅 LICENSING.md

参考资料

chat

https://github.com/grafana/loki