线上出了问题,还要登录每台机器 grep 日志?ELK 日志平台让你在一个界面搜索所有服务的日志。

一、为什么需要集中日志

  • 1.1 微服务架构——日志分散在多台机器
  • 1.2 容器化——Pod 重启日志丢失
  • 1.3 排查效率——关联查询多个服务的日志

二、ELK 架构

  • 2.1 Elasticsearch——存储和索引
  • 2.2 Logstash——日志解析和转换
  • 2.3 Kibana——可视化和检索
  • 2.4 Filebeat——轻量级采集(替代 Logstash 的采集功能)

三、Filebeat 配置

  • 3.1 采集 Spring Boot 日志文件——paths 配置
  • 3.2 多行日志合并——Java 异常堆栈
  • 3.3 添加字段——fields(服务名、环境)
  • 3.4 输出到 Logstash / ES

四、Logstash 配置

  • 4.1 input——接收 Filebeat 数据
  • 4.2 filter——grok 解析日志格式
  • 4.3 自定义日志 Pattern——匹配 Java 日志格式
  • 4.4 output——输出到 ES

五、Spring Boot 日志配置

  • 5.1 Logback JSON 格式——logstash-logback-encoder
  • 5.2 输出 TraceId——链路追踪关联
  • 5.3 异步日志——AsyncAppender

六、Kibana 使用

  • 6.1 Index Pattern 创建
  • 6.2 Discover——检索日志
  • 6.3 按 TraceId 串联一次请求的所有日志
  • 6.4 Dashboard 创建

七、总结

  • ELK 是微服务日志管理的基础设施
  • 关键——结构化日志 + TraceId 关联