ELK简介及架构分析

ELK简介及架构分析

一、ELK简介

ELK Stack是软件集合Elasticsearch、Logstash、Kibana的简称,由这三个软件及其相关的组件可以打造大规模日志实时处理系统。

 

Elasticsearch 是一个基于 Lucene 的、支持全文索引的分布式存储和索引引擎,主要负责将日志索引并存储起来,方便业务方检索查询。

Logstash是一个日志收集、过滤、转发的中间件,主要负责将各条业务线的各类日志统一收集、过滤后,转发给 Elasticsearch 进行下一步处理。

Kibana是一个可视化工具,主要负责查询 Elasticsearch 的数据并以可视化的方式展现给业务方,比如各类饼图、直方图、区域图等。

 

所谓“大规模”,指的是 ELK Stack 组成的系统以一种水平扩展的方式支持每天收集、过滤、索引和存储TB规模以上的各类日志。通常,各类文本形式的日志都在处理范围,包括但不限于 Web 访问日志,如 Nginx/Apache Access Log 。

基于对日志的实时分析,可以随时掌握服务的运行状况、统计 PV/UV、发现异常流量、分析用户行为、查看热门站内搜索关键词等。

 

二、ELK架构分析及应用场景

架构一:

 ELK简介及架构分析_第1张图片

首先由Logstash分布于各个节点上搜集相关日志、数据,并经过分析、过滤后发送给远端服务器上的Elasticsearch进行存储。Elasticsearch将数据以分片的形式压缩存储并提供多种API供用户查询,操作。用户也可以更直观的通过配置Kibana Web Portal方便的对日志查询,并根据数据生成报表。

 

优点:搭建简单,易于上手。

缺点:logstash消耗资源大运行占用cpu和内存高,另外没有消息队列缓存存在数据丢失隐患

应用场景:适合小规模集群使用。

ELK架构介绍:http://blog.sina.com.cn/s/blog_87113ac20102wasl.html

 

架构二:

 ELK简介及架构分析_第2张图片

第二种架构引入了消息队列机制,位于各个节点上的Logstash Agent先将数据/日志传递给Kafka(或者Redis),并将队列中消息或数据间接传递给Logstash,Logstash过滤、分析后将数据传递给Elasticsearch存储。最后由Kibana将日志和数据呈现给用户。因为引入了Kafka(或者Redis),所以即使远端Logstash server因故障停止运行,数据将会先被存储下来,从而避免数据丢失。

 

优点:引入了消息队列机制,均衡了网络传输,从而降低了网络闭塞尤其是丢失数据的可能性。

缺点:依然存在Logstash占用系统资源过多的问题。

应用场景:适合较大集群方案。

ELK架构介绍:http://blog.csdn.net/wenlixing110/article/details/56277603

 

架构三:

 ELK简介及架构分析_第3张图片

第三种架构引入了Logstash-forwarder。首先,Logstash-forwarder将日志数据搜集并统一发送给主节点上的Logstash,Logstash分析、过滤日志数据后发送至Elasticsearch存储,并由Kibana最终将数据呈现给用户。

 

优点:

1、解决了logstash占用系统资源较高的问题

2、Logstash-forwarder和Logstash间的通信是通过SSL加密传输,起到了安全保障。

小结:如果是较大集群,用户亦可以如结构三那样配置logstash集群和Elasticsearch集群,引入High Available机制,提高数据传输和存储安全。更主要的配置多个Elasticsearch服务,有助于搜索和数据存储效率。

缺点:Logstash-forwarder和Logstash间通信必须由SSL加密传输,这样便有了一定的限制性

应用场景:适合较大集群。

 

架构四:

 ELK简介及架构分析_第4张图片

第四种架构将Logstash-forwarder替换为Beats。经测试,Beats满负荷状态所耗系统资源和Logstash-forwarder相当,但其扩展性和灵活性有很大提高Beats platform目前包含有Packagebeat、Topbeat和Filebeat三个产品均为Apache 2.0 License。同时用户可根据需要进行二次开发。

 

这种架构原理基于第三种架构,但是更灵活,扩展性更强。同时可配置Logstash 和Elasticsearch 集群用于支持大集群系统的运维日志数据监控和查询。

 

总结:不管采用上面哪种ELK架构,都包含了其核心组件,即:Logstash、Elasticsearch 和Kibana。当然这三个组件并非不能被替换,只是就性能和功能性而言,这三个组件已经配合的很完美,是密不可分的。在系统运维中究竟该采用哪种架构,可根据现实情况和架构优劣而定。

 

三、ELK功能模块介绍

ELK组件各个功能模块如下图所示,它运行于分布式系统之上,通过搜集、过滤、传输、储存,对海量系统和组件日志进行集中管理和准实时搜索、分析,使用搜索、监控、事件消息和报表等简单易用的功能,帮助运维人员进行线上业务的准实时监控、业务异常时及时定位原因、排除故障、程序研发时跟踪分析Bug、业务趋势分析、安全与合规审计,深度挖掘日志的大数据价值。同时Elasticsearch提供多种API(REST JAVA PYTHONAPI)供用户扩展开发,以满足其不同需求。

 ELK简介及架构分析_第5张图片

 

四、ELK在大数据运维中作用

1、日志查询,问题排查,上线检查。

2、服务器监控,应用监控,错误报警,bug管理。

3、性能分析,用户行为分析,安全漏洞分析,时间管理。

小结:ELK组件在大数据运维中的应用是一套不可少的且方便、易用的开源解决方案。

          http://blog.csdn.net/wenlixing110/article/details/56277603

你可能感兴趣的:(ELK简介及架构分析)