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 的使用场景

  1. 集中式日志收集:Kubernetes Pod 日志统一收集和管理。
  1. 微服务故障排查:结合 Trace ID 或 Request ID 快速定位问题。
  1. 多租户日志管理:不同命名空间、服务或团队的日志隔离。
  1. 资源优化:只索引元数据,存储成本低,查询效率高。

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. 使用示例

  1. 用户下单触发微服务链:OrderService → PaymentService → InventoryService
  1. 日志输出:
      • OrderService: 记录订单创建日志
      • PaymentService: 记录支付成功日志
      • InventoryService: 记录库存扣减日志
  1. Grafana 查询:
      • {app="OrderService", namespace="production"} 查看 OrderService 日志
      • 结合 Trace ID 可以追踪整个请求链路

7. 总结

  • Loki Stack:Kubernetes 原生日志收集平台,轻量、易扩展。
  • 核心组件:Promtail(采集)、Loki(存储)、Grafana(可视化)
  • 适用场景:集中式日志管理、微服务故障排查、多租户日志隔离、降低存储成本
  • Java 微服务实践:容器 stdout 日志 + Promtail 采集 + Grafana 查询
  • 可结合 Trace ID / Loki + Grafana + Istio 构建 全链路可观测性平台