日志分析系统调研分析-ELK-EFK

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

日志分析系统

目录

一. 背景介绍 (2)

二.日志系统比较 (2)

1.怎样收集系统日志并进行分析 (2)

A.实时模式: (2)

B.准实时模式 (2)

2.常见的开源日志系统的比较 (3)

A. FaceBook的Scribe (3)

B. Apache的Chukwa (3)

C. LinkedIn的Kafka (4)

E. 总结 (8)

三.较为成熟的日志监控分析工具 (8)

1.ELK (9)

A.ELK 简介 (9)

B.ELK使用场景 (10)

C.ELK的优势 (10)

D.ELK的缺点: (11)

2.EFK (11)

3. Logstash 于FluentD(Fluentd)对比 (11)

一. 背景介绍

许多公司的平台每天会产生大量的日志(一般为流式数据,如,搜索引擎的pv,查询等),处理这些日志需要特定的日志系统,一般而言,这些系统需要具有以下特征:

(1)构建应用系统和分析系统的桥梁,并将它们之间的关联解耦;

(2)支持近实时的在线分析系统和类似于Hadoop之类的离线分析系统;

(3)具有高可扩展性。即:当数据量增加时,可以通过增加节点进行水平扩展。二.日志系统比较

1.怎样收集系统日志并进行分析

A.实时模式:

1 在打印日志的服务器上部署agent

2 agent使用低耗方式将日志增量上传到计算集群

3 计算集群解析日志并计算出结果,尽量分布式、负载均衡,有必要的话(比如需要关联汇聚)则采用多层架构

4 计算结果写入最适合的存储(比如按时间周期分析的结果比较适合写入Time Series模式的存储)

5 搭建一套针对存储结构的查询系统、报表系统

补充:常用的计算技术是storm

B.准实时模式

1 在打印日志的服务器上部署agent

2 agent使用低耗方式将日志增量上传到缓冲集群

3 缓冲集群将原始日志文件写入hdfs类型的存储

4 用hadoop任务驱动的解析日志和计算

5 计算结果写入hbase

6 用hadoop系列衍生的建模和查询工具来产出报表

补充:可以用hive来帮助简化

2.常见的开源日志系统的比较

A. FaceBook的Scribe

Scribe是facebook开源的日志收集系统,在facebook内部已经得到大量的应用。它能够从各种日志源上收集日志,存储到一个中央存储系统(可以是NFS,分布式文件系统等)上,以便于进行集中统计分析处理。它为日志的“分布式收集,统一处理”提供了一个可扩展的,高容错的方案。

特点:容错性好。当后端的存储系统crash时,scribe会将数据写到本地磁盘上,当存储系统恢复正常后,scribe将日志重新加载到存储系统中。

架构:

scribe的架构比较简单,主要包括三部分,分别为scribe agent, scribe和存储系统。

(1) scribe agent

scribe agent实际上是一个thrift client。向scribe发送数据的唯一方法是使用thrift client, scribe内部定义了一个thrift接口,用户使用该接口将数据发送给server。

(2) scribe

scribe接收到thrift client发送过来的数据,根据配置文件,将不同topic 的数据发送给不同的对象。scribe提供了各种各样的store,如 file, HDFS 等,scribe可将数据加载到这些store中。

(3) 存储系统

存储系统实际上就是scribe中的store,当前scribe支持非常多的store,包括file(文件),buffer(双层存储,一个主储存,一个副存储),network(另一个scribe服务器),bucket(包含多个 store,通过hash的将数据存到不同store中),null(忽略数据),thriftfile(写到一个Thrift TFileTransport 文件中)和multi(把数据同时存放到不同store中)。

B. Apache的Chukwa

chukwa是一个非常新的开源项目,由于其属于hadoop系列产品,因而使用了很多hadoop的组件(用HDFS存储,用mapreduce处理数据),它提供了很多模块

以支持hadoop集群日志分析。

需求:

(1) 灵活的,动态可控的数据源

(2) 高性能,高可扩展的存储系统

(3) 合适的框架,用于对收集到的大规模数据进行分析

架构:

Chukwa中主要有3种角色,分别为:adaptor,agent,collector。

(1) Adaptor 数据源

可封装其他数据源,如file,unix命令行工具等

目前可用的数据源有:hadoop logs,应用程序度量数据,系统参数数据(如linux cpu使用流率)。

(2) HDFS 存储系统

Chukwa采用了HDFS作为存储系统。HDFS的设计初衷是支持大文件存储和小并发高速写的应用场景,而日志系统的特点恰好相反,它需支持高并发低速率的写和大量小文件的存储。需要注意的是,直接写到HDFS上的小文件是不可见的,直到关闭文件,另外,HDFS不支持文件重新打开。

(3) Collector和Agent

为了克服(2)中的问题,增加了agent和collector阶段。

Agent的作用:给adaptor提供各种服务,包括:启动和关闭adaptor,将数据通过HTTP传递给Collector;定期记录adaptor状态,以便crash后恢复。Collector的作用:对多个数据源发过来的数据进行合并,然后加载到HDFS中;隐藏HDFS实现的细节,如,HDFS版本更换后,只需修改collector即可。(4) Demux和achieving

直接支持利用MapReduce处理数据。它内置了两个mapreduce作业,分别用于获取data和将data转化为结构化的log。存储到data store(可以是数据库或者HDFS等)中。

C. LinkedIn的Kafka

Kafka是2010年12月份开源的项目,采用scala语言编写,使用了多种效率优化机制,整体架构比较新颖(push/pull),更适合异构集群。

设计目标:

(1) 数据在磁盘上的存取代价为O(1)

(2) 高吞吐率,在普通的服务器上每秒也能处理几十万条消息

(3) 分布式架构,能够对消息分区

(4) 支持将数据并行的加载到hadoop

相关文档
最新文档