我们正在尝试建立一个ElasticSearch数据收集器。 ElasticSearch集群应该从不同的服务器接收数据。这些服务器位于ElasticSearch群集以外的其他位置(和网络)。客户端通过单向VPN连接连接到ElasticCluster。
作为首次尝试,我们在每台客户端服务器上安装了logstash以收集数据,过滤数据并将其发送到ElasticCluster。到目前为止,在测试环境中没有问题。现在的问题是来自客户端的LogStash试图建立与ElasticSearch的连接。但是,此尝试被防火墙阻止。但是,可以打开从ElasticCluster端到每个客户端的连接并接收数据。我们需要一种从LogStash获取数据的方法,以便我们打开一个连接并从LogStash(PULL)中提取数据。有没有一种方法可以在不更改VPN配置的情况下进行操作?
最佳答案
Logstash推送事件,如果您的logstash实例无法启动与elasticsearch节点的连接,则您将需要在中间添加一些内容或允许防火墙/ VPN上的流量通过。
例如,您可以在elasticsearch中找到logstash服务器可以在其中推送数据的位置,然后在主集群环境中再找到另一个logstash,在该集群中您将拥有一个管道,其中输入将是中间的elasticsearch,这样就可以提取数据来自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 }
}
现在清楚了吗?
关于elasticsearch - Logstash-拉是否可能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51308667/