1. 课程导论:云原生可观测性三支柱与 Loki 压测沙盘

1.1 云原生可观测性三支柱概述

在云原生架构中,可观测性(Observability)是保障系统稳定性的核心能力。业界公认的三大支柱分别为:日志(Logs)、指标(Metrics) 和 链路追踪(Traces)。三者从不同维度提供系统运行状态的可见性,缺一不可。

支柱 数据特征 典型工具 核心用途
日志(Logs) 离散、带时间戳的文本记录 Loki, ELK, Splunk 故障根因定位、审计、详细事件追溯
指标(Metrics) 聚合、数值型时间序列 Prometheus, VictoriaMetrics 实时监控、告警、容量规划、趋势分析
链路追踪(Traces) 请求级调用链、Span 上下文 Jaeger, Tempo, Zipkin 分布式请求延迟分析、服务依赖拓扑
核心认知:三支柱并非相互替代,而是互补关系。日志告诉你“发生了什么”,指标告诉你“系统有多严重”,链路告诉你“问题出在哪个环节”。

1.2 Loki 在日志生态中的定位

Loki 是 Grafana Labs 推出的云原生日志聚合系统,其设计哲学与 Prometheus 高度一致:不全文索引日志内容,仅索引标签(Labels)。这使得 Loki 在存储成本和查询效率上,与传统的 ELK(Elasticsearch)栈形成鲜明对比。

对比维度 Loki ELK(Elasticsearch)
索引策略 仅索引标签,日志内容压缩存储 全文索引,倒排索引
存储成本 低(压缩比高,无需大量索引空间) 高(索引膨胀,通常为原始数据 1.5-2 倍)
查询语言 LogQL(类 PromQL 语法) DSL(JSON 查询)
与 Prometheus 集成 原生集成,共享标签体系 需额外适配层
适用场景 Kubernetes 日志、云原生环境 复杂全文搜索、业务分析

在云原生可观测性体系中,Loki 承担着 低成本、高可用的日志存储与查询 角色,与 Prometheus(指标)和 Tempo(链路)共同构成 Grafana 可观测性栈。

云原生可观测性三支柱与 Loki 定位 日志 (Logs) 指标 (Metrics) 链路追踪 (Traces) Loki Prometheus Tempo Grafana 统一可视化 Loki 与 Prometheus 共享标签体系,实现日志与指标的关联分析

1.3 etcd 压测沙盘整体架构

本课程构建的 etcd 压测沙盘,是一个面向生产级 etcd 集群的日志与指标压测实验环境。其核心目标是通过模拟高负载场景,验证 Loki 在日志采集、指标提取、告警分层方面的实战能力。

沙盘组件清单

  • etcd 集群:3 节点,模拟分布式键值存储,产生大量操作日志(raft、watch、lease 等)。
  • 压测工具:基于 benchmark 或自定义脚本,生成读写混合负载。
  • 日志采集层:Promtail 作为 Agent,采集 etcd 日志并推送至 Loki。
  • 日志存储与查询:Loki 集群(含 ingester、querier、distributor 组件)。
  • 指标与告警:Prometheus 采集 etcd 自身指标 + Loki 日志衍生指标,通过 Alertmanager 实现分层告警。
  • 可视化层:Grafana 统一展示日志、指标、告警状态。

实验目标

  1. 日志采集压测:验证 Promtail 在高日志吞吐量下的采集稳定性与资源消耗。
  2. 日志指标提取:通过 LogQL 从日志中提取延迟、错误率、Raft 选举次数等关键指标。
  3. 告警分层实战:基于日志衍生指标,构建 P0/P1/P2 三级告警规则,并验证告警触发与收敛效果。
  4. 故障注入与恢复:模拟 etcd 节点故障、网络分区,观察日志与指标联动表现。
etcd 压测沙盘整体架构 压测工具 (benchmark) etcd-1 etcd-2 etcd-3 Promtail 日志采集 Agent(每个节点部署) Loki 集群(Distributor / Ingester / Querier) Prometheus + Alertmanager Grafana 可视化