收集和分析日志是应用开发中至关重要的一环,互联网大规模、分布式的特性决定了日志的源头越来越分散,

产生的速度越来越快,传统的手段和工具显得日益力不从心。在规模化场景下,grep、awk 无法快速发挥作用,我们需要一种高效、灵活的日志分析方式,可以给故障处理,问题定位提供更好的支持。基于全文搜索引擎 Lucene 构建的 ELKstack 平台,是目前比较流行的日志收集方解决方案。

ELK系统的部署按照官方文档操作即可,相关资料也很多,这篇文章更多的关注三个组件的设计和实现,帮助大家了解这个流行的日志收集系统,

 

ELK统一日志系统

结合Logstash,ElasticSearch和Kibana三个组件,可以搭建一套高效的日志收集和分析系统。

ELK日志系统数据流图

ELK stack支持组件间的灵活组合,提供强大的开箱即用的日志收集和检索功能。

seo优化培训,网络推广培训,网络营销培训,SEM培训,网络优化,在线营销培训

可以看到ELK系统进行日志收集的过程可以分为三个环节:

  • 日志收集和导入ElasticSearch

  • ElasticSearch进行索引等处理

  • 可视化操作,查询等

Logstash可以结合Redis或者kafka等收集应用服务器产生的日志,经过简单的过滤等操作后发送到ElasticSearch,ElasticSearch进行相关的索引处理,最后在Kibana进行相关的可视化操作。

 

Logstash进行日志采集

Logstash 是一种功能强大的信息采集工具,类似于同样用于日志收集的 Flume。

Logstash通过配置文件规定 Logstash 如何处理各种类型的事件流,一般包含 input、filter、output 三个部分。

Logstash 为各个部分提供相应的插件,通过 input、filter、output 三类插件完成各种处理和转换,

另外 codec 类的插件可以放在 input 和 output 部分通过简单编码来简化处理过程。

1.Logstash架构

Logstash使用Jruby语言编写,对于使用者来讲,Logstash本身是基于命令行界面,面向任务处理的。

Logstash的软件架构是一种带有“