主题切换
日志采集
一、采集日志的核心作用
日志是线上定位系统故障、排查接口异常、追踪请求链路的核心依据,通过集中化日志采集可以快速检索、筛选、分析全服务日志,不用登录每台服务器查看本地文件。
二、两种日志存储采集方案
1. 传统本地日志方案
使用Logback按日期切割本地日志文件,每台服务器单独生成日志文件(格式:服务名-端口-日期.log)。 缺点:微服务多实例部署时,排查问题需要登录多台服务器,检索效率极低,不适合分布式项目。
2. ELK集中式日志采集方案(项目落地使用)
ELK是Elasticsearch、Logstash、Kibana三款开源组件的缩写,实现分布式日志统一收集、清洗、存储、可视化检索。 完整数据流:Java微服务(Logback) → Logstash → Elasticsearch → Kibana
三、ELK各组件职责
- 应用端 Logback Java项目日志输出框架,将程序运行日志实时推送到Logstash收集引擎,统一格式化日志内容。
- Logstash(日志收集引擎) 动态接收多服务推送的日志,完成日志过滤、清洗、字段解析,处理后将标准化日志写入Elasticsearch。
- Elasticsearch(全文检索存储引擎) 负责持久化所有日志数据,提供高速全文检索、聚合统计能力,支撑海量日志快速查询。
- Kibana(可视化分析平台) 对接Elasticsearch,提供Web可视化页面,支持日志关键词检索、条件过滤、数据图表展示、链路排查。
四、完整总结(面试背诵版)
- 日志采集用于线上问题快速定位,分为本地文件日志、ELK集中采集两种方案,分布式微服务推荐ELK。
- ELK架构流程:微服务通过Logback输出日志至Logstash,Logstash清洗过滤后存入ES,Kibana提供可视化检索页面。
- 三大核心组件分工:Logstash负责收集清洗日志;Elasticsearch存储、检索日志;Kibana可视化查询与分析。
五、面试简答
问:你们项目中日志是怎么采集的?
答: 项目采用ELK分布式集中日志采集系统,用来统一收集所有微服务日志,方便线上快速排查问题。
- 应用层使用Logback框架,将每个微服务的运行日志实时推送到Logstash;
- Logstash作为日志收集引擎,接收多服务日志并做过滤、清洗、字段解析,标准化日志格式;
- 清洗完成的日志存入Elasticsearch,ES提供海量日志的存储和全文检索能力;
- Kibana对接Elasticsearch,提供可视化Web页面,我们可以直接在线检索、筛选、分析日志,不用登录每台服务器查看本地日志文件。 对比传统按天分割的本地日志文件,ELK集中采集大幅提升线上故障排查效率。