美文网首页K8s云原生
Kubernetes + Loki Stack 快速上手指南(面

Kubernetes + Loki Stack 快速上手指南(面

作者: _浅墨_ | 来源:发表于2025-08-23 19:31 被阅读0次

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

3. Loki Stack 架构

+----------------+          +-----------------+           +----------------+
|   Kubernetes   |  --->    |   Promtail      |  --->     |     Loki       |
|     Pods       |          |  (日志采集)     |           |  (日志存储)   |
+----------------+          +-----------------+           +----------------+
                                                           |
                                                           v
                                                     +-------------+
                                                     |  Grafana    |
                                                     |  (可视化)  |
                                                     +-------------+
  • Promtail:部署在每个 Node,读取日志并发送到 Loki。
  • Loki:接收日志,按时间和标签存储,不建立全文索引。
  • Grafana:查询 Loki,显示日志,可结合指标和追踪进行分析。

4. Kubernetes 上部署 Loki Stack

4.1 使用 Helm 部署

helm repo add grafana https://grafana.github.io/helm-charts
helm repo update

# 部署 Loki Stack(Grafana + Promtail)
helm install loki-stack grafana/loki-stack   --set grafana.enabled=true   --set promtail.enabled=true   --namespace logging --create-namespace

4.2 Loki 配置示例(ConfigMap)

apiVersion: v1
kind: ConfigMap
metadata:
  name: loki-config
  namespace: logging
data:
  loki.yaml: |
    auth_enabled: false
    server:
      http_listen_port: 3100
    ingester:
      lifecycler:
        ring:
          kvstore:
            store: inmemory
    schema_config:
      configs:
        - from: 2020-10-15
          store: boltdb
          object_store: filesystem
          schema: v11
          index:
            prefix: index_
            period: 168h
    storage_config:
      boltdb:
        directory: /loki/index
      filesystem:
        directory: /loki/chunks

4.3 Promtail 配置示例

server:
  http_listen_port: 9080
positions:
  filename: /tmp/positions.yaml
clients:
  - url: http://loki.logging.svc.cluster.local:3100/loki/api/v1/push
scrape_configs:
  - job_name: kubernetes-pods
    kubernetes_sd_configs:
      - role: pod
    relabel_configs:
      - source_labels: [__meta_kubernetes_pod_label_app]
        target_label: app
      - source_labels: [__meta_kubernetes_namespace]
        target_label: namespace
      - source_labels: [__meta_kubernetes_pod_name]
        target_label: pod

5. Java 微服务日志采集示例

Spring Boot 应用日志配置示例:

logging:
  pattern:
    console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"

日志输出到容器 stdout,Promtail 会采集,例如:

2025-08-24 17:00:01 [http-nio-8080-exec-1] INFO  com.example.OrderService - New order created: orderId=12345

在 Grafana 中可用标签 app, namespace, pod 进行过滤,快速定位日志。

6. 使用示例

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

7. 总结

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

相关文章

网友评论

    本文标题:Kubernetes + Loki Stack 快速上手指南(面

    本文链接:https://www.haomeiwen.com/subject/fplkajtx.html