为什么选用ELK日志分析平台

Elasticsearch

咱们先说一下ELK是什么

  • E=ElasticSearch 实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放RESTJAVA API等结构提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上

  • L=LogStash , 是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。

  • K=Kibana , 是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据。

file

有人把运维比作医生给病人看病,那么日志则是病人对自己的陈述。所以只有在海量分布式日志系统中有效的提取关键信息,才能对症下药。
有人说我们可以使用vi+awk+sed+grep定位,那么日志量大或者日志分布在多台服务器上,甚至我们需要对关键词搜索、对结果有些聚合的操作,这种方式就捉襟见肘了。
如果能把这些日志集中管理,并提供全文检索功能,不仅可以提高诊断的效率,同时可以起到实时系统监测、统计、网络安全、事件管理和发现bug等功能。基于此,本文向大家推荐一款开源利器——ELK组件(Apache 2.0 License),提供分布式的实时日志(数据)搜集和分析的监控系统

咱们来聊一聊ELK架构

当你打算搭建ELK系统时候,首先面对的问题就是这个ELK日志架构我该怎么搭建好那,这里咱们列出来几个架构讲述,供大家参考

架构一: ES + Logstash + Kibana

这是一个最简单的架构方式:

  • 优点是搭建简单,易于上手。
  • 缺点是Logstash耗资源较大,运行占用CPU和内存高。另外没有消息队列缓存,存在数据丢失隐患。
  • 建议供学习者和小规模集群使用

    file

说明:logstash 在各个服务器节点上进行日志的收集,并进行过滤、分析后发送给ES进行存储,然后用户利用可视化的Web服务(可以是kibana)通过API进行日志的查询。

架构二: 引入Logstash-forwarder

这种架构:

  • 解决了Logstash在各计算机点上占用系统资源较高的问题。经测试得出,相比Logstash,Logstash-forwarder所占用系统CPU和MEM几乎可以忽略不计。
  • Logstash-forwarder和Logstash间的通信是通过SSL加密传输,起到了安全保障
  • 如果是较大集群,用户亦可以配置logstash集群和Elasticsearch集群,引入High Available机制,提高数据传输和搜索和数据存储效率。
  • 此种架构下发现Logstash-forwarder和Logstash间通信必须由SSL加密传输,这样便有了一定的限制性。

file

说明:首先,Logstash-forwarder将日志数据搜集并统一发送给主节点上的Logstash,Logstash分析、过滤日志数据后发送至Elasticsearch存储,并由Kibana最终将数据呈现给用户。

架构四:利用Beats

这种架构原理

  • 基于第二种架构,但是更灵活,扩展性更强。

file

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

Beats是elastic公司的一款轻量级数据采集产品,它包含了几个子产品: packetbeat(用于监控网络流量)、
filebeat(用于监听日志数据,可以替代logstash-input-file)、
topbeat(用于搜集进程的信息、负载、内存、磁盘等数据)、
winlogbeat(用于搜集windows事件日志)