grafana/loki

运维与部署

只索引标签、不索引日志正文的日志聚合服务,目标是更省存储、更易运维。

29,063
4,158
Go
AGPL-3.0
创建于 8 年前

如果你已经在用 Kubernetes 和 Prometheus 式标签,并且用 Grafana 看面板,Loki 值得投入;如果你主要靠全文检索在日志里翻关键词,它并不合适。

解决什么问题

过去要收集多台机器的日志,通常得运维一套全文检索集群,调吞吐、算索引带来的存储成本。换成 Loki 之后,流程变成:用采集端(Grafana Alloy)把日志推过去,Loki 存压缩后的日志正文,只给日志流的标签建索引。排查问题在 Grafana 里完成,先用标签缩小范围,再扫描命中的日志行。结果是一条沿用你指标标签体系的日志管道,从面板跳到相关日志时不需要再维护第二套命名方式。

有什么不同

核心机制是一个刻意的取舍:Loki 不对日志做全文索引,只按标签把日志流分组、索引这些元数据,正文压缩存放、查询时再扫描。这让写入更简单、存储占用更小,也是项目自称「非常省钱、容易运维」的主要依据。代价同样来自这里:要在大体量日志里找一个罕见词,就必须扫描,因此标签设计和查询写法比在全文检索引擎里重要得多。

和 Prometheus 的关系是具体的设计沿袭,而非宣传语:基于标签的模型,以及文档明确写出的推模式写入(Prometheus 是拉模式)。Kubernetes Pod 日志是一等场景,Pod 元数据会被自动抓取并建索引。一套栈由三部分组成——负责采集的 Alloy、负责存储与查询的 Loki、负责展示的 Grafana;后端 API 也有文档,方便自行推送日志的团队接入。还有一个运维细节要注意:项目说明 Alloy 已取代 Promtail,因为 Promtail 被视为功能完备,后续日志采集的开发都在 Alloy 上进行。手头有旧部署模板的话,这是需要规划的迁移,不是一句脚注。

谁值得试

适合的场景:已经用 Grafana 面板和 Prometheus 式标签、需要在 Kubernetes 上保留 Pod 日志又不想再维护一套搜索集群的平台或 SRE 团队。标签模型能在指标和日志之间复用,单机单进程、无外部依赖的模式也让本地试验成本很低。不适合的场景:主要需求是在缺少稳定元数据的应用日志里做临时全文搜索的团队,或者无法接受 AGPL-3.0 许可的组织;LICENSING.md 列出了例外情况,许可条款应在决策阶段就确认,而不是事后再看。

不用 Prometheus 的团队在理解标签模型之后同样可以推送原始日志,但官方材料默认你熟悉这套思路,从传统全文检索日志转过来确实有学习成本。

使用条件与边界

文档给出的安装路径包括按官方指南安装、从源码在单机用 Go 构建、以及用 Helm 部署到 Kubernetes。源码构建需要较新的 Go 工具链(Makefile 标明了推荐版本),准确说法是源码构建需要 Go 基础;不能因此说 Loki 必须会 Go,因为按发布说明安装是另一条路径。用 Helm 的团队要留意已公布的迁移:自 2026 年 3 月 16 日起,Loki 的 Helm chart 会分叉到 grafana-community/helm-charts,Loki 仓库里的 chart 此后只为 GEL 用户维护。依赖仓库内 chart 的人应当先跟进这个分叉。

升级是持续的维护工作,项目单独维护升级指南;同时,以标签为先的设计意味着早期定下的 schema 和流标签以后很难改。日志疑似丢失时,可以用 Loki Canary 监控安装是否漏日志,查询行为异常时先看故障排查文档。

HotRepo 点评

HotRepo 只有一个记录日:2026-10-27 的 Go 周榜第 16 名,当周 +28 star。单个快照无法判断关注度是在上升、消退还是持续,这只是有日期的观察,不能当作势头。2018 年那条 Hacker News 讨论(444 分)只说明当年的讨论热度,不构成现在质量的证据。采纳前最该确认的一点:Helm chart 分叉的时间表是否影响你选定的安装方式,以及你依赖的 chart 之后由谁维护。

Hacker News 讨论

Grafana Loki – Like Prometheus, but for logs
▲ 444 · 162 条评论 · 2018年12月12日
Loki 3.0.0
▲ 22 · 1 条评论 · 2024年6月3日
Loki 3.0 Released
▲ 5 · 1 条评论 · 2024年4月8日

本文由 AI 根据项目 README 生成,更新于 2026年10月27日,以项目官方文档为准。