跳到主要内容

日志管理知识体系概览

知识导图

为什么需要日志管理

在分布式系统中,日志分散在数百台机器和容器中。统一的日志管理系统让运维团队能够:

  • 集中查看:一个界面搜索所有服务日志
  • 实时告警:错误日志出现时立即通知
  • 链路追踪:通过 TraceID 串联一次请求的完整日志
  • 故障回溯:事后分析问题的时间线和根因

日志架构

层级职责典型工具
采集层文件/stdout 采集、初步过滤Filebeat、Fluent Bit、Vector
缓冲层抗峰值、解耦生产消费Kafka、Redis
处理层解析、过滤、富化Logstash、Fluentd
存储层索引、存储、检索Elasticsearch、Loki、ClickHouse
展示层可视化、告警Kibana、Grafana

方案对比

ELK StackPLG Stack
全称Elasticsearch + Logstash + KibanaPromtail + Loki + Grafana
索引方式全文索引仅索引标签
存储成本高(全文索引膨胀)低(压缩日志文本)
查询能力强(KQL / Lucene)中(LogQL)
运维复杂度高(ES 集群管理)低(单二进制 / S3 后端)
适合场景复杂检索、安全审计K8s 云原生、成本敏感

日志规范

日志级别

级别适用场景
FATAL程序无法继续运行
ERROR处理失败,需要关注
WARN可能有问题,但不影响运行
INFO关键业务流程节点
DEBUG开发调试信息,生产不启用
TRACE最详细的调试信息

结构化日志

{
"timestamp": "2024-01-15T10:30:00.123Z",
"level": "ERROR",
"service": "order-service",
"traceId": "abc123def456",
"message": "创建订单失败",
"error": "insufficient_balance",
"userId": "u_10086",
"duration_ms": 230
}
JSON 结构化日志的好处
  • 机器可解析,无需 Grok 正则
  • 字段标准化,方便跨服务查询
  • 支持嵌套结构,携带丰富上下文

学习路径

  1. 基础:日志级别、结构化日志规范
  2. ELK:Filebeat → Logstash → Elasticsearch → Kibana
  3. PLG:Fluent Bit / Promtail → Loki → Grafana
  4. 进阶:日志告警、采样、脱敏、长期归档

相关链接