Logstash多重输出介绍(附代码)

1,353 阅读5分钟

Logstash Multiple Outputs

Logstash多重输出介绍

Logstash多输出指的是由处理管道摄取的数据被转化并进一步被服务器端的Logstash开源管道转移到一个以上的输出的过程。在产生和分配多个输出的同时,Logstash也有可能从多个来源获得输入的数据。在这篇文章中,我们将详细了解Logstash的多重输出,并研究其子课题,包括Logstash多重输出概述、使用Logstash多重输出、安装多重输出、多重输出示例以及有关结论。

Logstash多重输出概述

Logstash可以处理输入,无论是从单一或多个来源摄取的输入,并进一步转换,这可以明显地分布在一个以上的输出。在创建Logstash多个输出时,需要采取某些步骤,如下所述:

  • 获取输入流,并为其中的每个文件创建一个副本。
  • 收集所有的副本并仔细检查它们的过滤数据,根据要求只包含有效字段。
  • 为了表明数据副本属于哪种类型,我们可以为每个副本创建元数据并将其添加到结果中。
  • 为了将每个文件引导到正确的输出,应该对所包含的元数据进行适当的评估,并据此决定一个文件的方向,以达到相应的输出。

使用Logstash多输出

Logstash是在服务器端完全开源的管道。Logstash的功能包括从单个或多个来源摄取数据,然后对其进行转换,并将输出进一步发送至其他服务进行存储或处理。Logstash支持的服务包括SQS、S3、Kafka、谷歌的BigQuery、亚马逊网络服务的Cloudwatch,以及更多。此外,我们可以将Logstash的过滤数据转发到一个单一的输出目的地或多个输出,通过以特定的方式过滤输入,导致输出被分配到每个收到的输入的特定流。

在内部,我们所做的是将输出写在弹性搜索的多个节点上。这减轻了弹性搜索的每个节点的资源需求负担。还有一个好处是,它提供了集群内部的冗余点,当集群中的一个特定节点无法使用时,可以从那里进入。

需要对Logstash的多个输出进行配置,只需改变pipeline.conf配置文件内的配置内容的输出部分,以便将数据写入弹性搜索的多个节点上。该配置看起来就像下面的模板一样,我们在其中提到了各种主机的细节 -

Output{
Elasticsearch{
Hosts=> [“sample Ip address: port number”, “sample Ip address 1: port number 1”, “sample Ip address 2: port number 2”, “sample Ip address 3: port number 3”] }
}

简而言之,我们在这里为实现Logstash中的多个输出所做的工作是对弹性搜索中的三个非主节点的主机地址进行规范,这在上面的主机规范行中出现。当在主机参数中指定了多个地址时,负载平衡就会被Logstash考虑并实现。我们甚至可以省略上面提到的那些用于弹性搜索的默认端口9200,以及配置里面指定的地址端口列表。

安装Logstash多个输出

我们只有在安装了Logstash之后才能使用Logstash多重输出。让我们看看我们如何使用二进制文件来安装Logstash。使用下载的二进制文件 - 我们可以从下载的二进制文件去安装Logstash。这个二进制文件可以从提到的链接中下载。

1步 - 第一步是访问这个链接,然后根据你系统的主机环境,可以是zip、deb、rpm或targ.gz,你可以下载所需格式的二进制文件。你可以选择你的主机系统,相应的下载选项按钮会在底部以蓝色出现,如下图所示,我们选择的是windows平台。

Logstash Multiple Outputs output 1

第2步- 一旦下载完成,使用任何一个解压器解压或提取文件,如下图所示,这将导致二进制文件的解压

Logstash Multiple Outputs output 2

第3步- 注意,现在要开始安装过程了,Logstash不应该被放在一个路径中,该路径中会有冒号": "的特殊字符。

output 3

我们也可以使用软件包管理器来在Linux平台上安装Logstash。

当你去提取的时候,它会安装在windows上,你可以自由地使用所有的包,因为它们是在弹性的许可下。它是一个开源的功能,有免费的商业功能,而有些则是付费的。对于提供的30天免费试用,你甚至可以在30天内免费使用付费功能,之后你就必须付费。我们甚至可以去下载oss的软件包,它只附带了那些在Apache 2.0许可下的功能。

Logstash多个输出的例子

让我们考虑一个用于实现多输出的pipeline.conf文件中的配置文件内容的例子------。

input {
linkedIn {
consumer_key => "sampleEducbaConsumerKey"
consumer_secret => "sampleEducbaSecret"
keywords => ["business"] oauth_token => "sampleEducbaAccessToken"
oauth_token_secret => "sampleEducbaAccessTokenSecret"
}
beats {
port => "5432"
}
}
output {
elasticsearch {
hosts => [“sample Ip address: port number”, “sample Ip address 1: port number 1”, “sample Ip address 2: port number 2”, “sample Ip address 3: port number 3”] }
file {
path => "/educba/sample/filepath"
}
}

执行上述命令会得到以下输出 -

output 4

总结

Logstash多输出是Logstash管道如何通过将每个输入流隔离到正确的输出流中来生成一个以上的输出,这也教会了集群内的负载平衡。