1.1、ELK概述

  ELK是Elasticsearch、Logstash、Kibana三大开源框架首字母大写,主流的 ELK (Elasticsearch, Logstash, Kibana) 目前已经转变为 EFK (Elasticsearch, Filebeat or Fluentd, Kibana) ,其中logstash的轻量级替代品为Filebeat,资源占用较少,比较受欢迎,从技术层面上统称为Elastic Stack。

  Filebeat是用于转发和集中-日志数据的轻量级传送工具。Filebeat监视用户指定的日志文件或位置,收集日志事件,并将它们转发到Elasticsearch或 Logstash进行索引。Filebeat的工作方式如下:启动Filebeat时,它将启动一个或多个输入,这些输入将在为日志数据指定的位置中查找。对于Filebeat所找到的每个日志,Filebeat都会启动收集器。每个收集器都读取单个日志以获取新内容,并将新日志数据发送到libbeat,libbeat将聚集事件,并将聚集的数据发送到为Filebeat配置的输出。

  Logstash是免费且开放的服务器端数据处理管道,能够从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。Logstash能够动态地采集、转换和传输数据,不受格式或复杂度的影响。利用Grok从非结构化数据中派生出结构,从IP地址解码出地理坐标,匿名化或排除敏感字段,并简化整体处理过程。

  Elasticsearch是Elastic Stack核心的分布式搜索和分析引擎,是一个基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。Elasticsearch为所有类型的数据提供近乎实时的搜索和分析。无论您是结构化文本还是非结构化文本,数字数据或地理空间数据,Elasticsearch都能以支持快速搜索的方式有效地对其进行存储和索引。

  Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。并且可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以汇总、分析和搜索重要数据日志。还可以让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板(dashboard)实时显示Elasticsearch查询动态

1.2、ELK的使用场景

  日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。

  往往单台机器的日志我们使用grep、awk等工具就能基本实现简单分析,但是当日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。

  一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系统,可以提高定位问题的效率。

1.3、标准日志系统特性

  • 收集:能够采集多种来源的日志数据
  • 传输:能够稳定的把日志数据解析过滤并传输到存储系统
  • 存储:存储日志数据
  • 分析:支持 UI 分析
  • 警告:能够提供错误报告,监控机制

2.1、beats+elasticsearch+kibana模式

 

[ELK] Elastic Stack 业务框架与关系_ELK

  如上图所示,该ELK框架由beats(日志分析我们通常使用filebeat)+elasticsearch+kibana构成,这个框架比较简单,入门级的框架。其中filebeat也能通过module对日志进行简单的解析和索引。并查看预建的Kibana仪表板。

 

该框架适合简单的日志数据,一般可以用来玩玩,生产环境建议接入logstash

2.2、beats+logstash+elasticsearch+kibana模式

[ELK] Elastic Stack 业务框架与关系_fleet server_02

该框架是在上面的框架的基础上引入了logstash,引入logstash带来的好处如下:

  • 通Logstash具有基于磁盘的自适应缓冲系统,该系统将吸收传入的吞吐量,从而减轻背压
  • 从其他数据源(例如数据库,S3或消息传递队列)中提取
  • 将数据发送到多个目的地,例如S3,HDFS或写入文件
  • 使用条件数据流逻辑组成更复杂的处理管道

2.3、Fleet server+elasticsearch+kibana模式

[ELK] Elastic Stack 业务框架与关系_日志数据_03

如上图所示,新框架可以直接从 Elastic Agent 来把数据发送至 Elasticsearch 中。

3.1、三种不同的框架功能区别是什么?

1)Beats 是将操作数据发送到 Elasticsearch 的轻量级数据发送器。 Elastic 为不同类型的数据(例如日志、指标和正常运行时间)提供单独的 Beats。 根据你要收集的数据,可能需要在单个主机上安装多个发送器。

2)Elastic Agent 是日志、指标、安全数据和威胁预防的单一代理。 Elastic Agent 可以以两种不同的模式部署:

  • Managed by Fleet  — Elastic Agent 策略和生命周期由 Kibana 中的 Fleet 应用集中管理。 Integrations 应用程序还允许你集中添加与其他流行服务和系统的集成。 这是大多数用户的推荐选项。
  • Standalone mode  — 所有策略都作为 YAML 文件手动应用于 Elastic Agent。 这是为更高级的用户准备的。
  • 从版本 7.14.0 开始,Elastic Agent 正式发布 (GA)。

3.2、beat与elastic agent功能输出对比


Output

Beats

Fleet-managed Elastic Agent

Standalone Elastic Agent

Elasticsearch Service


[ELK] Elastic Stack 业务框架与关系_fleet server_04

[ELK] Elastic Stack 业务框架与关系_日志数据_05

[ELK] Elastic Stack 业务框架与关系_日志数据_05

Elasticsearch

[ELK] Elastic Stack 业务框架与关系_fleet server_07

[ELK] Elastic Stack 业务框架与关系_ELK_08


[ELK] Elastic Stack 业务框架与关系_日志数据_09

Logstash

[ELK] Elastic Stack 业务框架与关系_日志数据_10

[ELK] Elastic Stack 业务框架与关系_ELK_11

[ELK] Elastic Stack 业务框架与关系_ELK_12

Kafka

[ELK] Elastic Stack 业务框架与关系_kibana_13

[ELK] Elastic Stack 业务框架与关系_ELK_14

 (beta)

[ELK] Elastic Stack 业务框架与关系_日志数据_15

 (beta)

Redis

[ELK] Elastic Stack 业务框架与关系_fleet server_16

[ELK] Elastic Stack 业务框架与关系_fleet server_17

[ELK] Elastic Stack 业务框架与关系_ELK_18

File

[ELK] Elastic Stack 业务框架与关系_日志数据_19


[ELK] Elastic Stack 业务框架与关系_日志数据_20

[ELK] Elastic Stack 业务框架与关系_Elastic_21

Console

[ELK] Elastic Stack 业务框架与关系_fleet server_22

[ELK] Elastic Stack 业务框架与关系_Elastic_23

[ELK] Elastic Stack 业务框架与关系_Elastic_24