Logstash的多播启用 - Elasticsearch

时间:2014-06-05 08:38:05

标签: elasticsearch multicast logstash

我正在尝试配置logstash以将我的elasticsearch集群作为使用多播的节点加入,以避免在logstash配置中配置特定主机。

我对 elasticsearch 的配置基本上是:

transport.tcp.port: 9300
http.port: 9200
cluster.name: myclustername
discovery.zen.minimum_master_nodes: 1
discovery.zen.ping.timeout: 30s
discovery.zen.ping.multicast.enabled: true
discovery.zen.ping.multicast.group: 239.193.200.01
discovery.zen.ping.multicast.port: 54328

logstash 方面,我有以下配置:

output {
        elasticsearch {
                host => "239.193.200.01"
                cluster => "myclustername"
                protocol => "node"
        }
}

我的弹性搜索群集正在使用多播成功发现,这意味着多播IP正在按预期工作,但从该配置我得到以下日志输出

log4j, [2014-06-05T05:51:44.001]  WARN: org.elasticsearch.transport.netty: [logstash-aruba-30825-2014] exception caught on transport layer [[id: 0xe33ea7dd]], closing connection
java.net.SocketException: Network is unreachable
    at sun.nio.ch.Net.connect0(Native Method)
    at sun.nio.ch.Net.connect(Net.java:465)
    at sun.nio.ch.Net.connect(Net.java:457)

如果我从配置中删除主机密钥,我会收到输出日志

log4j, [2014-06-05T06:07:45.500]  WARN: org.elasticsearch.discovery: [logstash-aruba-31431-2014] waited for 30s and no initial state was set by the discovery
imeout(org/elasticsearch/action/support/master/TransportMasterNodeOperationAction.java:180)
    at org.elasticsearch.cluster.service.InternalClusterService$NotifyTimeout.run(org/elasticsearch/cluster/service/InternalClusterService.java:492)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(java/util/concurrent/ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(java/util/concurrent/ThreadPoolExecutor.java:615)

我在这里做错了什么?我想我的logstash配置错了,但我确定是什么。

2 个答案:

答案 0 :(得分:1)

根据Logstash 1.4.1文档(http://logstash.net/docs/1.4.1/outputs/elasticsearch),您可以在Logstash进程的$ PWD目录中创建elasticsearch.yml文件,以确保它配置了相同的多播详细信息。

我假设Elasticsearch集群可以使用多播成功地看到对方,并且没有一些网络问题阻止了这一点。检查http://your-es-host:9200/_cluster/health?pretty=true确保节点数量符合预期。

使用$JAVA_OPTS将弹性搜索变量设置为jvm是另一种可能性:

export JAVA_OPTS="-Des.discovery.zen.ping.multicast.group=224.2.2.4 \
                  -Des.discovery.zen.ping.multicast.port=54328 \
                  -Des.discovery.zen.ping.multicast.enabled=true"

答案 1 :(得分:0)

其他选项是使用elasticsearch_http,我遇到了同样的问题,现在效果很好。

Resource here