Logstash和DataPipeline

pipeline是什么?

Pipeline,中文意为管线,意义等同于流水线。最典型的就是Gpu渲染管线,它指明渲染一个画面需要经过多少道工序。还有就是应用于爬虫框架里面。它就是指某个项目或者框架里面需要用到流水线的设计来简化设计,降低复杂度并提高性能。是一种设计方法,是我们将现实中的社会分工借鉴并运用到计算机编程的例子。

以上是知乎作者Acoris[7] 的回答。

Pipeline是亚当·斯密分工论的体现,分工可以提高效率,很有名的例子就是20世纪初亨利·福特把生产一辆车分成了8772个工时。分工论成为统治企业管理的主要模式。[6]

Acoris的回答中,Pipeline的含义更接近assembly line 或者 production line。

image

图 - assembly line 朗文

将Pipeline回归原始意义[1]:

image

图 - pipeline 朗文

Pipeline原意的重点其实是transport,物理世界中,物体的transport是空间属性的的变化。

而在计算机世界中,数据的传输本质是复制。

image

图 -transport

数据管道(Data Pipeline)是实现系统之间数据迁移的载体,因此包括数据的采集、传输链路、存储队列、消费/转储等都属于数据管道的范畴[8]。在迁移的过程中还会有数据的转换(不是完全的复制)

Logstash

Logstash 项目诞生于 2009 年 8 月 2 日。其作者是世界著名的运维工程师乔丹西塞(JordanSissel)。[2],显然这个项目的初衷是日志收集。但是随着项目发展,已经可以支持非常丰富的数据源。

Logstash由log和stash两个词组合而成:

image

图 - stash 朗文

在git中也有“git stash”这个命令,用于暂存当前工作区的内容。

Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中[3]。

image

图 - logstash官网图

Logstash的一款“函数式”的工具,支持丰富的input,output和filter插件,编辑好配置文件即可使用。

image

图 - logstash“函数”

Logstash可以单独完成Pipeline,也可以作为整个Pipeline上一个Pipe。

Logstash的资源消耗比较大,启动一个logstash就需要消耗500M左右的内存;所以其不太适合以agent的角色部署在每一台机器上。以Filebeat[5]为例,两者资源消耗存在数量级的区别。

image
image

图- Logstash和Filebeat在8G内存机器上的资源消耗对比

FKLEK-日志收集和分析Pipeline

目前比较流行的一种架构方案:

(1)利用Filebeat去监控日志文件,将Kafka作为Filebeat的输出端,

(2)Kafka实时接收到Filebeat后以Logstash作为输出端输出,

(3)通过Logstash的一些插件对数据进行过滤最后达到想要的数据格式,并以ElasticSearch作为输出端输出,

(4)在ElasticSearch就可以进行检索和聚合分析,

(5)借助Kibana的数据可视化能力,可以生成丰富的报表。

整个架构的搭建可参考[4]

image

图- Filebeat-Kafka-Logstash-Elasticsearch-Kibana

[1]longman

[2]Logstash介绍

[3]Logstash官网

[4]Filebeat+Kafka+Logstash+ElasticSearch+Kibana搭建完整版

[5]轻量型日志采集器

[6]亚当斯密的分工理论

[7]知乎-pipeline是什么?Acoris的答案

[8]五年双十一:SLS数据管道发展之路

你可能感兴趣的:(Logstash和DataPipeline)