Loki 3.7.8 介绍与选型指南
介绍 Grafana Loki 3.7.8 的标签索引模型、部署模式、LogQL 查询与适用边界,并与 ELK、ClickHouse 日志方案、Graylog 做选型对比。
Loki 3.7.8 介绍与选型指南
一、信息基准
本文为认知篇(A1),纯依据官方公开资料溯源编写,不包含本地安装与实测内容。查询日期为 2026-10-19。
1.1 版本依据表(2026-10-19 实查)
| 项目 | 内容 | 来源 |
|---|---|---|
| 软件名称 | Grafana Loki(水平可扩展、高可用的多租户日志聚合系统) | grafana.com/oss/loki |
| 最新稳定版 | v3.7.8(3.x 为主线;同期 v3.6.18 为 3.6 维护线补丁;官方尚无 4.x 发布) | github.com/grafana/loki/releases.atom |
| 开发语言 | Go | 官方仓库 |
| 开源许可 | AGPL-3.0(仓库 LICENSE 文件核对) | github.com/grafana/loki |
| GitHub stars | 29,036(仓库页面实查) | github.com/grafana/loki |
| 官方采集器口径 | Promtail 已宣布进入弃用流程,官方推荐迁移到 Grafana Alloy | grafana.com 官方文档 |
1.2 官方来源清单
| 来源 | URL | 用途 |
|---|---|---|
| Loki 官方产品页 | https://grafana.com/oss/loki/ | 产品定位 |
| 官方文档 | https://grafana.com/docs/loki/latest/ | 架构、配置、快速上手 |
| 官方发布记录 | https://github.com/grafana/loki/releases.atom | 版本实查 |
| 官方源码仓库 | https://github.com/grafana/loki | 许可与代码 |
| LogQL 语言文档 | https://grafana.com/docs/loki/latest/query/ | 查询语言参考 |
二、软件概述
Grafana Loki 是 Grafana 公司开源的水平可扩展、高可用、多租户日志聚合系统,设计动机源于「只索引元数据、不索引日志全文」:日志以压缩块形式存入对象存储或文件系统,索引仅记录标签(label)集合。官方称这一设计显著降低了存储与运维成本,代价是查询时需要按标签缩小范围后扫描日志内容。
按 2026-10-19 官方实查口径,本次介绍 Grafana Loki v3.7.8(官方 releases 当前最新发布,3.x 主线;3.6.x 为并行维护线,尚无 4.x)。Loki 与 Grafana、Prometheus 同属 Grafana 可观测性生态:指标用 Prometheus、日志用 Loki、链路用 Tempo,通过 Grafana 统一查询。
Loki 的技术形态是 Go 编写的单二进制/多组件服务,支持三种部署规模:单体的 monolithic 模式、按读写分离的 simple scalable 模式与微服务模式(官方部署文档定义),存储后端可插拔(本地文件系统、S3 兼容对象存储、GCS/Azure Blob 等)。
三、核心架构
3.1 「标签索引 + 原文存储」模型
官方文档阐述的核心设计:每条日志流(stream)由一组标签键值对唯一标识(如 {job="nginx", host="web01"}),索引只为标签建立倒排,日志原文按时间分块(chunk)压缩存储。写入时同标签日志归为一路流;查询时先用标签匹配定位流集合,再在时间范围内解压过滤,配合 LogQL 的行过滤与解析完成全文级检索。
3.2 组件与部署模式
微服务视角下的核心组件(官方架构文档):
- Distributor:写入入口,校验并按一致性哈希分发日志到 Ingester;
- Ingester:内存缓冲与压缩日志块,周期性落盘(flush)到存储;
- Querier / Query Frontend:查询执行层,前端负责拆分查询、去重与并行调度;
- Compactor / Index Gateway:索引压缩与读取加速(随部署模式启用)。
官方提供三种部署模式对应不同规模:monolithic(单进程,小规模)、simple scalable(读写分离三角色,中等规模)、microservices(全组件拆分,大规模多租户)。
3.3 LogQL 查询语言
Loki 官方查询语言 LogQL 语法对齐 PromQL:标签选择器 + 管道操作(|= 行过滤、| json/| logfmt/| pattern 解析、| line_format 改写),并支持以日志行数、字节数为数值的指标化查询(如 rate({...}[5m])),可在 Grafana 中像指标一样绘制日志图表与告警。
四、功能特性
- 低成本存储:只索引标签,日志原文进对象存储,官方宣称显著低于全文索引方案的存储成本;
- 水平扩展与多租户:组件无状态化设计可横向扩容,
X-Scope-OrgID实现多租户隔离(官方多租户文档); - 对象存储友好:S3/GCS/Azure/本地文件系统等可插拔存储后端,配合单副本(复制因子内置于一致性环)即可运行;
- LogQL 指标化查询:日志转指标(
rate、count_over_time等),告警规则可基于日志直接定义; - 弹性采集生态:Grafana Alloy(官方推荐,替代已弃用的 Promtail)、OpenTelemetry Collector、Prometheus/Promtail 远写、平台原生日志驱动等多路接入(官方接入文档);
- 规则与告警:内建 ruler 组件可直接基于 LogQL 评估告警规则并推送 Alertmanager;
- 统一可视化:与 Grafana 深度集成,日志-指标-链路可在同一仪表盘关联跳转。
五、快速上手
以下内容引自官方文档「Get started with Loki」(https://grafana.com/docs/loki/latest/get-started/)与官方仓库 local-config 示例,仅作认知示意,不包含本地实测结果。
5.1 单机最小配置
官方仓库提供的本地运行配置(local-config.yaml 形态,存储指向文件系统):
auth_enabled: false
server:
http_listen_port: 3100
common:
path_prefix: /tmp/loki
storage:
filesystem:
chunks_directory: /tmp/loki/chunks
rules_directory: /tmp/loki/rules
replication_factor: 1
ring:
kvstore:
store: inmemory
schema_config:
configs:
- from: 2020-10-24
store: tsdb
object_store: filesystem
schema: v13
index:
prefix: index_
period: 24h
启动:./loki -config.file=local-config.yaml,服务监听 3100 端口(HTTP API)。
5.2 logcli 查询示例
官方文档 Get started 章节的查询形态:
# 查询某标签流的最近日志
logcli query '{job="varlogs"}' --since=1h
# 统计包含 error 的行数速率
logcli query 'rate({job="varlogs"} |= "error" [5m])'
5.3 官方文档入口
- 快速开始:https://grafana.com/docs/loki/latest/get-started/
- 部署模式:https://grafana.com/docs/loki/latest/setup/install/
- LogQL 参考:https://grafana.com/docs/loki/latest/query/
六、适用场景与限制
6.1 适用场景
- Kubernetes 与云原生环境的日志聚合:标签化日志流模型与节点/工作负载标签天然契合,配合 Alloy/OTel 采集;
- 已有 Grafana 技术栈:指标-日志-链路统一在 Grafana 查询,Loki 是官方推荐日志组件;
- 大规模低成本日志留存:日志量大、全文索引成本不可接受、且查询通常可按标签先缩小范围的场景;
- 多团队共享日志平台:内建多租户与配额(官方租户文档),适合平台团队统一建设。
6.2 限制
- 查询依赖标签设计:不建标签全表扫描代价高,官方文档明确「先选标签、再过滤内容」的查询范式,标签基数(cardinality)失控会显著影响性能;
- 全文检索能力弱于 Elasticsearch:无倒排全文索引,跨海量日志的即席全文搜索不如 ES 高效;
- 采集器迁移成本:Promtail 已弃用,存量部署需规划迁移到 Alloy 或 OTel Collector(官方迁移指南);
- AGPL-3.0 许可:网络服务形态的改造集成需履行开源义务;另需注意部分企业功能(多副本对象存储层级、企业安全特性)位于 Grafana 商业版。
七、同类选型对比
按任务口径对比 ELK(以 Elasticsearch 为核心的日志方案)、ClickHouse 日志方案、Graylog。数据均为 2026-10-19 联网实查。
7.1 量化对比表
| 维度 | Loki v3.7.8 | ELK(Elasticsearch 9.5.5) | ClickHouse v26.9.21.9-stable | Graylog Open 7.2.0 |
|---|---|---|---|---|
| 开源许可 | AGPL-3.0(仓库 LICENSE 实查) | 三重许可:AGPLv3 / SSPL v1 / ELv2(仓库 LICENSE.txt 实查) | Apache-2.0(仓库 LICENSE 实查) | SSPL v1(仓库 LICENSE 实查) |
| GitHub stars | 29,036(仓库页面实查) | 78,309(仓库页面实查) | 50,478(仓库页面实查) | 8,156(graylog2-server 仓库页面实查) |
| 最近发版 | v3.7.8(releases.atom 实查;3.6.18 为维护线) | 9.5.5(releases.atom 实查) | v26.9.21.9-stable,另有 v26.3.55.2-lts 长期支持线(releases.atom 实查) | 7.2.0(7.1.10/7.0.14 并行维护,releases.atom 实查) |
| 版本节奏 | 3.x 双线并行(3.7 主线 + 3.6 维护),季度级大版本 | 9.x/8.19.x 多线并行,随 Elastic Stack 季度发布 | 年度多版本 + LTS 线并行 | 7.x 为主版本线,多线并行 |
| 索引模型 | 仅索引标签,原文进对象存储 | 全文倒排索引 | 列存 OLAP 引擎(日志表方案) | 全文索引(构建于 Elasticsearch/OpenSearch 之上) |
| 定位 | 云原生日志聚合 | 全功能搜索与分析(日志/SIEM) | 通用 OLAP(可作日志存储底座) | 开箱即用日志管理平台 |
| 兼容矩阵 | Linux 单二进制 + 多种对象存储 | Linux 发行包 + JVM | Linux/macOS/FreeBSD | Linux 发行包 + JVM(依赖 Mongo/搜索后端) |
7.2 选型分析
- Loki:存储成本与运维复杂度最低,标签模型与 Grafana 生态契合;适合「标签可预期」的云原生日志场景,不适合任意字段即席全文检索为主的需求;
- ELK(Elasticsearch):全文检索与聚合分析能力最强、生态最成熟;存储成本高、运维重,许可为三重许可需按场景核对(AGPLv3 分支使其重新具备开源可用性);
- ClickHouse:以列存 OLAP 承载日志(自建日志表 + 物化视图),压缩比与聚合查询吞吐突出,Apache-2.0 许可干净;但日志采集、查询界面与告警需自行搭建,属「底座」而非成品;
- Graylog Open:开箱即用的日志管理界面(解析、仪表盘、告警),上手最快;底层仍依赖 Elasticsearch/OpenSearch,SSPL 许可与商业版功能边界需评估。
选型建议一句话:Kubernetes 环境或 Grafana 生态内做低成本日志聚合选 Loki;需要强全文检索与成熟生态选 ELK;日志量巨大且愿意自建查询层可用 ClickHouse;要开箱即用的日志运营界面选 Graylog。
八、参考链接
- Loki 官方产品页:https://grafana.com/oss/loki/
- 官方文档(Get started):https://grafana.com/docs/loki/latest/get-started/
- 官方部署文档:https://grafana.com/docs/loki/latest/setup/install/
- 官方发布记录:https://github.com/grafana/loki/releases.atom
- Loki 源码仓库(AGPL-3.0):https://github.com/grafana/loki
- Elasticsearch 仓库与 LICENSE:https://github.com/elastic/elasticsearch
- ClickHouse 官网:https://clickhouse.com/
- Graylog 官网:https://graylog.org/
- Graylog 源码仓库:https://github.com/Graylog2/graylog2-server