Logging

Logging 学习路线 #

基于已有 Prometheus / Thanos / Cortex / SLS 基础,聚焦日志领域的系统学习路线。

Phase 1: 基础概念              Phase 2: 开源工具              Phase 3: 平台方案              Phase 4: 进阶实战
┌──────────────────┐     ┌──────────────────────┐     ┌──────────────────────┐     ┌──────────────────────┐
│ • 日志是什么       │     │ • Fluent Bit         │     │ • Loki + Grafana     │     │ • K8s 日志架构        │
│ • 结构化 vs 非结构化│ ──▶ │ • Fluentd            │ ──▶ │ • ELK / Elastic      │ ──▶ │ • 日志可观测性三支柱   │
│ • 日志 vs 指标     │     │ • Vector             │     │ • 阿里云 SLS          │     │ • AIOps / 智能分析     │
│ • 日志格式与规范   │     │ • Promtail / Alloy     │     │ • Datadog / Splunk   │     │ • 成本优化与合规       │
└──────────────────┘     └──────────────────────┘     └──────────────────────┘     └──────────────────────┘
     1-2 周                     2-3 周                     2-3 周                     持续实践

Phase 1: 日志基础(1-2 周) #

目标:理解日志在可观测性中的定位,掌握日志格式与最佳实践。

主题学习内容参考资料
日志基础概念什么是日志、日志 vs 指标 vs 链路追踪Observability 笔记
日志格式非结构化 → 半结构化(JSON) → 结构化(key=value)下方"日志格式"章节
日志规范日志级别、日志内容规范、敏感信息处理12-Factor App: Logs
日志架构模式应用 → 采集 → 聚合 → 存储 → 查询 → 可视化下方"架构模式"章节

日志格式演进 #

非结构化(难以解析):
  2025-01-15 10:30:00 ERROR Connection timeout to database server at 192.168.1.100

半结构化(JSON,最常用):
  {"time":"2025-01-15T10:30:00Z","level":"ERROR","msg":"Connection timeout","host":"192.168.1.100"}

结构化(key=value,Prometheus 风格):
  time="2025-01-15T10:30:00Z" level=error msg="Connection timeout" host=192.168.1.100

💡 最佳实践:应用日志输出为 JSON 格式到 stdout/stderr,由采集 Agent 负责收集和解析。这也是 12-Factor App 的推荐做法。


Phase 2: 开源采集工具(2-3 周) #

目标:掌握主流日志采集工具,理解其架构和适用场景。

工具语言定位资源占用适用场景链接
Fluent BitC轻量级采集器极低(~5MB)边缘/IoT/K8s DaemonSetDocs, Github
FluentdRuby/C全功能日志管道中复杂路由/缓冲/加工Docs, Github
VectorRust高性能管道低替代 Fluentd,性能更强Docs, Github
PromtailGoLoki 专用采集器低配合 Loki 使用Docs
AlloyGoGrafana 统一采集器中Promtail 升级版,支持 Log/Metric/TraceDocs
LoongCollectorGo阿里云采集器中对接 SLSDocs

学习顺序 #

1. Fluent Bit(入门首选)
   └─ 最轻量,部署简单,适合理解采集原理
   └─ K8s 中最常用的 DaemonSet 日志采集方案

2. Fluentd(理解完整管道)
   └─ Input → Filter → Buffer → Output 架构
   └─ 丰富的插件生态(500+ 插件)

3. Vector(进阶选型)
   └─ Rust 编写,性能远超 Fluentd
   └─ VRL(Vector Remap Language)强大的数据转换能力

4. Promtail / Alloy(对接 Grafana 栈)
   └─ 如果后续学 Loki,先学 Promtail
   └─ Alloy 是 Grafana 力推的统一采集器

Fluent Bit vs Fluentd #

维度Fluent BitFluentd
语言CRuby + C
内存~5 MB~40-80 MB
依赖零依赖需要 Ruby 环境
插件内置核心插件500+ 社区插件
适用采集层(Agent)聚合层(Aggregator)
典型搭配Fluent Bit → Fluentd → ES单独使用

💡 生产常见架构:Fluent Bit(每台机器上的 Agent)→ Fluentd(集中聚合器)→ Elasticsearch / Loki / SLS


Phase 3: 日志平台方案(2-3 周) #

目标:掌握至少一个完整的日志存储/查询/可视化平台。

方案对比与选型 #

方案类型查询语言存储后端适用场景学习优先级
Loki + Grafana开源LogQL对象存储 / 本地配合 Prometheus 生态⭐⭐⭐⭐⭐
ELK (Elasticsearch + Logstash + Kibana)开源Query DSL / SQLLucene传统企业日志分析⭐⭐⭐⭐
阿里云 SLS商业(云原生)SQL / SPL阿里云存储阿里云用户⭐⭐⭐⭐
Datadog商业(SaaS)自有语法私有全栈可观测平台⭐⭐⭐
Splunk商业SPL私有企业级安全/合规⭐⭐

推荐学习顺序 #

基于你已有的 Prometheus + Grafana 基础:

1. Loki + Grafana(最优先)
   └─ 与 Prometheus 同属 Grafana 生态,无缝集成
   └─ LogQL 语法简单,标签索引设计巧妙
   └─ 轻量级,对象存储即可运行
   └─ 已有笔记基础:Prometheus → Thanos → Cortex → Loki 自然衔接

2. ELK Stack(第二优先)
   └─ 企业级日志分析的"老牌"方案
   └─ 全文检索能力最强
   └─ 运维复杂度高,适合理解原理

3. 阿里云 SLS(按需)
   └─ 已有 3 篇详细笔记(20/21/22-阿里云SLS.md)✅
   └─ 如果在阿里云环境工作,直接深入

各方案与已有知识的关联 #

你已掌握的                    可以自然过渡到
─────────────                ──────────────
Prometheus (Metrics)    →    Loki (Logs)        ← 同属 Grafana 生态
Thanos (长期存储)       →    Loki (对象存储)     ← 同样的存储理念
Cortex (多租户)         →    Loki (多租户)       ← 同样的架构模式
SLS (商业方案)          →    理解商业日志平台设计 ← 对标 ELK / Datadog

Phase 4: 进阶实战(持续) #

目标:在生产级场景中应用日志系统。

主题学习内容
K8s 日志架构Pod 日志 → DaemonSet 采集 → 中心化存储;EFK / EFK-stack 方案
日志可观测性三支柱联合分析Log + Metric + Trace 关联(如通过 trace_id 串联)
日志成本优化冷热分层、日志采样、保留策略、索引优化
日志安全与合规敏感信息脱敏、审计日志、等保合规
AIOps 智能分析异常检测、根因分析、智能告警降噪
OpenTelemetry LogsOTel 日志标准,统一采集 Log/Metric/Trace

完整学习路线图 #

Week 1-2: 日志基础
├── 日志格式(JSON 最佳实践)
├── 12-Factor App 日志规范
├── 日志架构模式(采集 → 聚合 → 存储 → 查询)
└── 理解日志 vs 指标 vs 链路追踪的关系

Week 3-4: 采集工具
├── Fluent Bit 入门(Docker 部署,采集 Nginx 日志)
├── Fluentd 进阶(Filter/Buffer/Output 管道)
└── 了解 Vector / Promtail / Alloy

Week 5-7: 日志平台
├── Loki + Grafana(重点)
│   ├── Docker Compose 部署 Loki
│   ├── Promtail / Alloy 采集日志
│   ├── LogQL 查询语法
│   └── 仪表盘 + 告警配置
├── ELK(了解原理)
│   └── Docker Compose 部署,体验全文检索
└── SLS(已有笔记 ✅)

Week 8+: 进阶实战
├── K8s 日志方案(DaemonSet + Sidecar)
├── Log + Metric + Trace 联合分析
├── 日志成本优化(冷热分层、采样)
└── OpenTelemetry Logs 标准化

Logging Tools #

NameDocsCodesCommentsDemoOther
👍 FluentdDocsC,RubyCNCF GraduatedFluent BITVideos, Slides
Fluent BitDocsCCNCF Graduated, 轻量级采集器
VectorDocsRust高性能,替代 Fluentd
👍 LokiDocsGoGrafana 生态日志方案
ElasticsearchDocsJava全文检索引擎,ELK 核心
👍 OpenTelemetryDocsGo统一 Log/Metric/Trace 采集标准
日志易国产商业日志平台,Not Free
DATADOGDocs全栈可观测 SaaS,Not Free
SplunkDocs企业级安全/日志分析,Not Free

Reference #

Observability and Analysis

Tencent

splunk

12-Factor App: Logs

超赞合集