采集工具(另一个开源的数据收集架构-Chukwa集群分析日志分析)
优采云 发布时间: 2021-10-29 20:22采集工具(另一个开源的数据收集架构-Chukwa集群分析日志分析)
内容
1- Flume 2- Fluentd
Fluentd是另一种开源的数据采集架构,如图1所示。Fluentd是用C/Ruby开发的,使用JSON文件统一日志数据。通过丰富的插件,您可以采集各种系统或应用程序的日志,然后根据用户定义对日志进行分类。使用 Fluentd,可以非常轻松地实现跟踪日志文件并对其进行过滤并将其转储到 MongoDB 等操作。Fluentd 可以完全将人们从繁琐的日志处理中解放出来。
Fluentd 具有多个特点:易于安装、占用空间小、半结构化数据记录、灵活的插件机制、可靠的缓冲和日志转发。为本产品提供支持和维护。此外,使用JSON统一数据/日志格式是它的另一个特点。与Flume相比,Fluentd的配置相对简单。
Fluentd 的扩展性很强,客户可以自己定制(Ruby)Input/Buffer/Output。Fluentd 存在跨平台问题,不支持 Windows 平台。
Fluentd 的 Input/Buffer/Output 与 Fluent 的 Source/Channel/Sink 非常相似。Fluentd 架构如图 2 所示。
3-Logstash
Logstash 是著名的开源数据栈 ELK(ElasticSearch、Logstash、Kibana)中的 L。因为 Logstash 是用 JRuby 开发的,所以它在运行时依赖于 JVM。Logstash的部署架构如图3所示,当然这只是一个部署选项。
一个典型的Logstash配置如下,包括Input和Filter Output设置如下:
input {
file {
type =>"Apache-access"
path =>"/var/log/Apache2/other_vhosts_access.log"
}
file {
type =>"pache-error"
path =>"/var/log/Apache2/error.log"
}
}
filter {
grok {
match => {"message"=>"%(COMBINEDApacheLOG)"}
}
date {
match => {"timestamp"=>"dd/MMM/yyyy:HH:mm:ss Z"}
}
}
output {
stdout {}
Redis {
host=>"192.168.1.289"
data_type => "list"
key => "Logstash"
}
}
几乎在大多数情况下,ELK 同时用作堆栈。如果您的数据系统使用 ElasticSearch,Logstash 是首选。
4-楚夸
Chukwa 是 Apache 旗下的另一个开源数据采集平台,名气远不如其他平台。Chukwa 基于 Hadoop 的 HDFS 和 MapReduce(用 Java 实现)构建,以提供可扩展性和可靠性。它提供了许多模块来支持 Hadoop 集群日志分析。Chukwa 还提供数据的显示、分析和监控。该项目目前处于非活动状态。
Chukwa 适应以下需求:
(1) 灵活、动态、可控的数据源。
(2)高性能、高度可扩展的存储系统。
(3)分析采集到的*敏*感*词*数据的适当框架。
Chukwa 架构如下图所示。
5- 抄写员
Scribe 是 Facebook 开发的数据(日志)采集系统。它的官方网站已经很多年没有维护了。Scribe 为日志的“分布式采集、统一处理”提供了可扩展、高容错的解决方案。当中央存储系统的网络或机器出现故障时,Scribe 会将日志转储到本地或其他位置;当中央存储系统恢复时,Scribe 会将转储的日志重新传输到中央存储系统。Scribe 通常与 Hadoop 结合使用,将日志推送(push)到 HDFS,Hadoop 通过 MapReduce 作业进行定期处理。
Scribe 架构如下图所示。
Scribe架构比较简单,主要包括三部分,分别是Scribe agent、Scribe和存储系统。
6- Splunk
在商业化的大数据平台产品中,Splunk提供完整的数据采集、数据存储、数据分析处理、数据呈现能力。Splunk 是一个分布式机器数据平台,具有三个主要作用。
Splunk 架构如下图所示。
搜索:负责数据的搜索和处理,提供搜索过程中的信息提取功能。
Indexer:负责数据的存储和索引。
Forwarder:负责数据的采集、清洗、转换,并发送到Indexer。
Splunk 具有对 Syslog、TCP/UDP 和假脱机的内置支持。同时,用户可以通过开发Input和Modular Input来获取具体的数据。Splunk提供的软件仓库中有很多成熟的数据应用,如AWS、数据库(DBConnect)等,可以方便地从云端或数据库中获取数据,进入Splunk的数据平台进行分析。
Search Head 和Indexer 都支持Cluster 的配置,具有高可用和高扩展性,但Splunk 尚不具备Cluster for Forwarder 的功能。换句话说,如果一台 Forwarder 机器出现故障,数据采集会中断,并且正在运行的数据采集任务无法因故障转移而切换到其他 Forwarder。
7- Scrapy
Python 的爬虫架构称为 Scrapy。Scrapy 是一种由 Python 语言开发的快速、高级的屏幕抓取和网页抓取架构,用于抓取网站并从页面中提取结构化数据。Scrapy 用途广泛,可用于数据挖掘、监控和自动化测试。
Scrapy 的吸引力在于它是一种任何人都可以根据自己的需要轻松修改的架构。它还提供了多种爬虫的基类,如BaseSpider、Sitemap爬虫等,最新版本提供了对Web2.0爬虫的支持。
Scrapy的工作原理如下图所示。
Scrapy 的整个数据处理流程由 Scrapy 引擎控制。Scrapy的运行过程如下:
(1)当Scrapy引擎打开一个域名时,爬虫对域名进行处理,让爬虫得到第一个爬取到的URL。
(2)Scrapy 引擎首先从爬虫那里获取需要爬取的第一个 URL,然后在调度中作为请求进行调度。
(3)Scrapy 引擎从调度器中获取下一个要爬取的页面。
(4)调度返回下一个爬取的URL给引擎,引擎通过下载中间件发送给下载器。
(5)当下载器下载网页时,响应内容通过下载器中间件发送到Scrapy引擎。
(6)Scrapy 引擎收到下载器的响应,通过爬虫中间件发送给爬虫处理。
(7)爬虫处理响应并返回爬取的项目,然后向Scrapy引擎发送新的请求。
(8)Scrapy 引擎将捕获的项目放入项目管道,并向调度程序发送请求。
(9)系统重复以下步骤(2))的操作,直到调度器中没有请求,然后断开Scrapy引擎与域的连接。