一.ELK是什么?
????????首先,ELK 到底是什么呢? ELK主要是代指Elastic Stack,它是Elastic技术生态栈中三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。Elasticsearch 是一个搜索和分析引擎。Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等“存储库”中。Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。
????????后面随着技术的完善又加入了beats.其中最为大家熟知的就是filebeats,但 filebeats只是强大的beats家族里面的其中一员。多年的发展后,Elastic Stack已经从最初的Elasticsearch发展为一个由多个组件共同协作的完善的生态。
二.ELK间的上下关系
????????接下来,我们再来看看ELK之间的关系。原始的方式是将数据直接发送到Elasticsearch,这种方式的话对Elasticsearch产生很大的压力,比如数据量周期性波动会导致承载Elasticsearch的服务器周期性的面临压力.
????????为了解决上面的问题,Logstash出现了。它相当于Elasticsearch的助理,将原本要发送到Elasticsearch的数据处理和清洗后然后再发送到Elasticsearch中,这样省去了Elasticsearch接受原始数据的压力,让Elasticsearch专注于本身擅长的数据的处理和保存功能。
????????Logstash的功能虽比较全面但作为数据收集端资源耗费略大,如果只是需要采集目标的数据并不需要做过多的数据处理,那么我们只需要一个轻量的采集器即可。这时就出现了go语言写的beats,我们可以认为beats就是快递员,它将从各个“发货地”(即待采集数据的目标服务器)打包的“快递”(即数据)不断派送到秘书Logstash这里。这样就不必在每个目标服务器上安装Logstash了,大大提高了整体处理数据的性能。
????????但随着业务发展迅猛,业务量急剧增大,以上框架的性能逐渐遇到了瓶颈。不足以应对数据瞬间增大的业务场景,因此引进了重要的消息队列中间件-Kafka。类似于生活中的一个场景,快递员送快递到客户家,客户不在家或者有急事需要快递员等待,这样就降低了快递员工作效率,所以暂存在了小区楼下的菜鸟驿站或者蜂巢柜等。所以在快递员beats和助理Logstash间建一个类似于快递柜功能的缓存销峰系统,使用Kafka集群来做传输的管道就可以在日志数据瞬间变大的时候挡住这个瞬间的峰值,让Logstash和Elasticsearch始终以相对平滑的资源占用稳定的运行,同时整体上提高了ELK系统的高效性、拓展性和吞吐量。
?
?
图1.?Elastic官网架构设计图
二.ELK的使用场景
A.搜索领域?
- 在线购物网站基于Elasticsearch做为商品搜索
- 通用网页搜索引擎
- 社交网站,博客网站的垂直搜索
B.日志检索
- 微服务架构项目,收集各个服务的日志。方便开发人员检索日志定位问题,以往需要在Linux上手动查看日志现在可以直接在Kibana上快速收集服务群的日志
C.集成Grafana平台进行可视化展示
- 业务服务集群的指标信息可视化展示
- 业务运营信息的可视化
- 业务服务集群的状态感知和异常状态捕获,告警
D.大数据分析
|