Logstash - 拉取可能吗?

Logstash - is Pull possible?

我们正在尝试构建一个 ElasticSearch 数据收集器。 ElasticSearch 集群应该从不同的服务器接收数据。这些服务器位于 ElasticSearch 集群之外的其他位置(和网络)。客户端通过单向 VPN 连接连接到 ElasticCluster。

作为第一次尝试,我们在每个客户端服务器上安装了 logstash 以收集数据、过滤数据并将其发送到 ElasticCluster。目前在测试环境下没有问题。现在的问题是来自客户端的 LogStash 试图建立到 ElasticSearch 的连接。但是,此尝试被防火墙阻止。但是,可以打开从 ElasticCluster 端到每个客户端的连接并接收数据。我们需要的是一种从 LogStash 获取数据的方法,以便我们打开连接并从 LogStash (PULL) 中拉取数据。有没有办法在不更改 VPN 配置的情况下做到这一点?

Logstash 推送事件,如果您的 logstash 实例无法启动与 elasticsearch 节点的连接,您将需要中间的东西或允许 firewall/VPN 上的流量。

例如,你可以有一个 elasticsearch 到 logstash 服务器可以推送数据的地方,然后在你的主集群环境中有另一个 logstash,你将有一个管道,其中输入将是中间的 elasticsearch,这样数据将从弹性搜索中提取。

编辑:

正如我在评论中所说,您需要有类似这张图片的东西。

这里你有你的服务器发送数据到一个 logstash 实例,这个 logstash 有一个输出到一个 elasticsearch 实例,所以它启动连接推送数据。

在你的主集群上,你有你的 elasticsearch 集群和一个只能启动连接的单向 VPN,你将有另一个 logstash,然后这个 logstash 将有一个输入来查询外部 elasticsearch 节点,拉数据。

在 logstash 管道中,您可以有一个 elasticsearch 输入,它查询一个 elasticsearch 节点,然后将接收到的数据发送到过滤器和输出。

input {
    elasticsearch { the elasticsearch in the middle }
}
filter { 
    your filters 
}
output { 
    elasticsearch { your cluster nodes }
}

现在清楚了吗?