type
status
date
slug
summary
tags
category
icon
password
1. 什么是 Loki Stack?
Loki Stack 是 Grafana Labs 提供的 云原生日志收集与管理解决方案,专门针对 Kubernetes 和微服务架构设计。
核心特点:
- 轻量级:只索引日志的元数据(如 Pod 名称、标签、时间戳),不索引日志全文,节省存储。
- 与 Prometheus 设计理念一致:Prometheus 只收集指标,Loki 只收集日志元数据。
- 与 Grafana 无缝集成:可直接在 Grafana 中查询和可视化日志。
核心组件:
- Loki:日志聚合和存储系统
- Promtail:日志采集器,部署在每个 Node 上
- Grafana:日志查询和可视化界面
- LokiStack:通常指 Promtail + Loki + Grafana 的组合部署
2. Loki Stack 的使用场景
- 集中式日志收集:Kubernetes Pod 日志统一收集和管理。
- 微服务故障排查:结合 Trace ID 或 Request ID 快速定位问题。
- 多租户日志管理:不同命名空间、服务或团队的日志隔离。
- 资源优化:只索引元数据,存储成本低,查询效率高。
3. Loki Stack 架构
- Promtail:部署在每个 Node,读取日志并发送到 Loki。
- Loki:接收日志,按时间和标签存储,不建立全文索引。
- Grafana:查询 Loki,显示日志,可结合指标和追踪进行分析。
4. Kubernetes 上部署 Loki Stack
4.1 使用 Helm 部署
4.2 Loki 配置示例(ConfigMap)
4.3 Promtail 配置示例
5. Java 微服务日志采集示例
Spring Boot 应用日志配置示例:
日志输出到容器 stdout,Promtail 会采集,例如:
在 Grafana 中可用标签
app
, namespace
, pod
进行过滤,快速定位日志。6. 使用示例
- 用户下单触发微服务链:OrderService → PaymentService → InventoryService
- 日志输出:
- OrderService: 记录订单创建日志
- PaymentService: 记录支付成功日志
- InventoryService: 记录库存扣减日志
- Grafana 查询:
{app="OrderService", namespace="production"}
查看 OrderService 日志- 结合 Trace ID 可以追踪整个请求链路
7. 总结
- Loki Stack:Kubernetes 原生日志收集平台,轻量、易扩展。
- 核心组件:Promtail(采集)、Loki(存储)、Grafana(可视化)
- 适用场景:集中式日志管理、微服务故障排查、多租户日志隔离、降低存储成本
- Java 微服务实践:容器 stdout 日志 + Promtail 采集 + Grafana 查询
- 可结合 Trace ID / Loki + Grafana + Istio 构建 全链路可观测性平台。