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 可观测性栈。
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 统一展示日志、指标、告警状态。
实验目标
- 日志采集压测:验证 Promtail 在高日志吞吐量下的采集稳定性与资源消耗。
- 日志指标提取:通过 LogQL 从日志中提取延迟、错误率、Raft 选举次数等关键指标。
- 告警分层实战:基于日志衍生指标,构建 P0/P1/P2 三级告警规则,并验证告警触发与收敛效果。
- 故障注入与恢复:模拟 etcd 节点故障、网络分区,观察日志与指标联动表现。