Logstash:Logstash 入门教程 (一)

Logstash是一个功能强大的工具,可与各种部署集成。 它提供了大量插件,可帮助你解析,丰富,转换和缓冲来自各种来源的数据。 如果你的数据需要Beats中没有的其他处理,则需要将Logstash添加到部署中。

Logstash是Elastic栈非常重要的一部分,但是它不仅仅为Elasticsearch所使用。它可以介绍广泛的各种数据源。Logstash可以帮利用它自己的Filter帮我们对数据进行解析,丰富,转换等。

最后,它可以把自己的数据输出到各种需要的数据储存地,这其中包括Elasticsearch。

在今天的文章中,我将讲述如果使用Elastic Stack家族的Logstash。

Elastic 总览 

在之前的一些市场活动中,我发现很多的开发者和Elastics Stack的使用者都对ELK比较熟悉,但是他们对Elastic公司并不熟悉。他们很了解ELK是一个开源的软件栈,但是不知道在这个软件栈后面还有一个商业的Elastic公司的存在。简单的一句话:

                                                                                        Elastic 是一个搜索公司

当大多数人听到搜索这个词时,他们会想到一个搜索框。 在网络上搜索内容或在应用程序上搜索内容。但是搜索不仅仅是搜索框。

搜索通过图形或图表可视化日志和/或指标数据。也许您正在使用自己喜欢的应用程序通过寻找距离您最近并且可以接受信用卡并且具有4星级评级的餐馆来寻找餐馆。 这是一个过滤器搜索。或者,也许您正在使用rideshare应用程序。 连接驾驶员和乘客并找到到达目的地的路线。地图搜索也是搜索。搜索的不仅仅是这些示例。 它适用于许多的应用场景!

Elasticsearch广泛地应用于我们日常生活的很多的场景,比如Uber,滴滴打车,美团送餐,抖音视频搜索及推荐等等。还有很多著名的网站也使用Elasticsearch来做它们的搜索引擎。大家知道github上的搜索就是使用Elasticsearch来完成的,还有很多的网站,比如wikipedia及linkedin等。

我们可以在https://www.elastic.co/官方地址找到更多关于Elastic公司的介绍。

 

Elasticsearch

Elastic公司的核心的产品是Elasticsearch。关于Elasticsearch的更多描述可以在我之前的文章“Elasticsearch简介”。简单地说:

Elasticsearch是一个分布式的开源搜索和分析引擎,适用于所有类型的数据,包括文本,数字,地理空间,结构化和非结构化。Elasticsearch基于Apache Lucene构建,并于2010年由Elasticsearch N.V.(现称为Elastic)首次发布。

Elasticsearch以其简单的REST API,分布式性质,速度和易扩展性而闻名。Elasticsearch的搜索体验的基本原则是规模(scale),速度(speed),相关性(relevance)。 总之,这三个属性是Elastic与其他产品的区别。 这些属性贯穿我们能看到的任何一个商业的示例,并且如果剥离这些层,则通常是它们使用Elastic的真正原因。

  • Scale:可扩展性是指摄取和处理PB级数据的能力。Elasticsearch集群是分布式的,所以它很容根据商业的需求来扩容。如果需要存储更多的数据,我们很容添加更多的服务器来进行满足商业的需求。

  • Speed:快速获得搜索结果的能力, 即使在大规模的情况下。 在中国有一种说法:天下武功唯快不破。Elasticsearch可以在PB级数据情况下,也能获得毫秒级的搜索。即使是新数据导入到Elasticsearch中,也可以在1秒内变为可以搜索,从而实现近实时的搜索。对于有的数据库来说,搜索可能是需要数小时才能完成。
  • Relevance: 关联性是一种能够以任意方式查询数据并获得相关结果的能力,而不论是查看文本,数字还是地理数据。Elasticsearch可以根据数据的匹配度来返回数据。每个搜索的结果有一个分数,它表示匹配的相关度。在返回的数据结果中,匹配度最大的结果排在返回的结果的前面。

 

Elastic Stack

ELK”是三个开源项目的缩写:Elasticsearch,Logstash和Kibana。 Elasticsearch是搜索和分析引擎。Elasticsearch是整个Elastic Stack的核心组件。 Logstash是一个服务器端数据处理管道,它同时从多个源中提取数据,进行转换,然后将其发送到类似Elasticsearch的“存储”中。Beats是一些轻量级的数据摄入器的组合,用于将数据发送到Elasticsearch或发向Logstash做进一步的处理,并最后导入到Elasticsearch。 Kibana允许用户在Elasticsearch中使用图表将数据可视化。

Elastic 方案

Logstash:Logstash 入门教程 (一)_第1张图片

Elastic 公司围绕Elastic Stack创建了许多的开箱即用的方案。对于很多搜索或数据库的公司来说,他们可能有很好的产品,但是运用它们开发一套实现某种方案来说,也是需要很多的精力来组合不同公司的产品来完成这些方案。围绕Elastic Stack,Elastic公司推出了3+1:

在上面,我们可以看到Elastic的三大解决方案:

  • 企业搜索
  • 可观测性
  • 安全

上面的三大解决方案基于同一个 Elastic (ELK) Stack:Elasticsearch及Kibana。

 

Logstash 简介

Logstash是一个数据流引擎:

  • 它是用于数据物流的开源流式ETL引擎
  • 在几分钟内建立数据流管道
  • 具有水平可扩展及韧性且具有自适应缓冲
  • 不可知的数据源
  • 具有200多个集成和处理器的插件生态系统
  • 使用Elastic Stack监视和管理部署

Logstash几乎可以摄入各种类别的数据:

Logstash:Logstash 入门教程 (一)_第2张图片

它可以摄入日志,文件,指标或者网路真实数据。经过Logstash的处理,变为可以使用的Web Apps可以消耗的数据,也可以存储于数据中心,或变为其它的流式数据。

最为流行的数据源

Logstash:Logstash 入门教程 (一)_第3张图片

  • Logstash 可以很方便地和Beats一起合作,这也是被推荐的方法
  • Logstash 也可以和那些著名的云厂商的服务一起合作处理它们的数据
  • 它也可以和最为同样的信息消息队列,比如redis或kafka一起协作
  • Logstash 也可以使用JDBC来访问RDMS数据
  • 它也可以和IoT设备一起处理它们的数据
  • Logstash 不仅仅可以把数据传送到Elasticsearch,而且它还可以把数据发送至很多其它的目的地,并作为它们的输入源做进一步的处理

Logstash在Elastic Stack中是如何融入的?

到目前为止,有如下的3中方式能够把我们所感兴趣的数据导入到Elasticsearch中:

正如上面所显示的那样,我们可以通过:

  1. Beats:我们可以通过beats把数据导入到Elasticsearch中
  2. Logstash:我们可以Logstash把数据导入。Logstash的数据来源也可以是Beats
  3. REST API:我们可以通过Elastic所提供的丰富的API来把数据导入到Elasticsearch中。我们可以通过Java, Python, Go, Nodejs等各种Elasticsearch API来完成我们的数据导入。

那么针对Beats来说,Logstash是如何和其它的Elastic Stack一起工作的呢?我们可以看如下的框图:

从上面我们可以看出来,Beats的数据可以有如下的三种方式导入到Elasticsearch中:

  • Beats ==> Elasticsearch
  • Beats ==> Logstash ==> Elasticsearch
  • Beats ==> Kafka ==> Logstash ==> Elasticsearch

正如上面所显示的那样:

  • 我们可以直接把Beats的数据传入到Elasticsearch中,甚至在现在的很多情况中,这也是一种比较受欢迎的一种方案。它甚至可以结合Elasticsearch所提供的pipeline一起完成更为强大的组合。
  • 我们可以利用Logstash所提供的强大的filter组合对数据流进行处理:解析,丰富,转换,删除,添加等等。你可以参阅我之前的文章“Data转换,分析,提取,丰富及核心操作”
  • 针对有些情况,如果我们的数据流具有不确定性,比如可能在某个时刻生产大量的数据,从而导致Logstash不能及时处理,我们可以通过Kafka来做一个缓存。你可以参考我的文章“使用Kafka部署Elastic Stack”。

Logstash是如何工作的?

Logstash:Logstash 入门教程 (一)_第4张图片

Logstash包含3个主要部分: 输入(inputs),过滤器(filters)和输出(outputs)。 你必须定义这些过程的配置才能使用Logstash,尽管不是每一个都必须的。在有些情况下,我们可以甚至没有过滤器。在过滤器的部分,它可以对数据源的数据进行分析,丰富,处理等等。在输出的部分,我们甚至可以有多于一个以上的输出。

在下面的图中,我们可以看到一些常见的inputs, fileters及outputs:

Logstash:Logstash 入门教程 (一)_第5张图片

你如果想了解更多关于Logstash的这些Inputs, Filters及Outputs,那么请访问Elastic的官方网址https://www.elastic.co/guide/en/logstash/current/index.html

Logstash:Logstash 入门教程 (一)_第6张图片

好了,我在这篇文章中就先讲到这里。希望你到现在对Logstash有一个比初步的认识。在接下来的文章中,我们将具体讲述如何安装Logstash,并运用一个具体的例子来展示Logstash是如何工作的。请参阅这个系列的第二篇文章“Logstash:Logstash 入门教程 (二)”。

你可能感兴趣的:(Elastic,Logstash,elasticsearch,大数据)