web-dev-qa-db-fra.com

logstash - Exception dans le thread "> output" org.elasticsearch.discovery.MasterNotDiscoveredException: attendu pendant [30s]

Log stash est à 100% un désastre pour moi. J'utilise LS 1.4.1 et ES 1.02 dans le même ordinateur. 

Voici comment je lance l'indexeur logstash:

/usr/local/share/logstash-1.4.1/bin/logstash -f /usr/local/share/logstash.indexer.config
input {
  redis {
    Host => "redis.queue.do.development.sf.test.com"
    data_type => "list"
    key => "logstash"
    codec => json
  }
}

output {
        stdout { }
        elasticsearch {
                bind_Host => "127.0.0.1"
                port => "9300"
        }
}

ES j'ai mis:

network.bind_Host: 127.0.0.1
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300"]

Et wow..c'est ce que je reçois:

/usr/local/share/logstash-1.4.1/bin/logstash -f /usr/local/share/logstash.indexer.config
Using milestone 2 input plugin 'redis'. This plugin should be stable, but if you see strange behavior, please let us know! For more information on plugin milestones, see http://logstash.net/docs/1.4.1/plugin-milestones {:level=>:warn}
log4j, [2014-05-29T12:02:29.545]  WARN: org.elasticsearch.discovery: [logstash-do-logstash-sf-development-20140527082230-866-2010] waited for 30s and no initial state was set by the discovery
Exception in thread ">output" org.elasticsearch.discovery.MasterNotDiscoveredException: waited for [30s]
    at org.elasticsearch.action.support.master.TransportMasterNodeOperationAction$3.onTimeout(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)
    at Java.lang.Thread.run(Java/lang/Thread.Java:744)
15
Tampa

Voir http://logstash.net/docs/1.4.1/outputs/elasticsearch

REMARQUE DE VERSION: Votre cluster Elasticsearch doit exécuter Elasticsearch 1.1.1. Si vous utilisez une autre version d'Elasticsearch, vous devez définir le protocole => http dans ce plugin.

Votre problème est donc que logstash ne prend pas en charge la version ES plus ancienne que vous utilisez sans utiliser un transport http.

20
Alcanzar

Paramétrer 'protocole => "http" a fonctionné pour moi. Je m'attendais à ce que le référentiel EPEL ait des versions complémentaires de logstash et de elasticsearch, mais ES est utilisé pour beaucoup de choses et n'est donc pas étroitement associé aux logstash.

6
BergBrains

Pour moi, le problème ne venait pas des versions de elasticsearch ou de logstash. Je venais de les installer et j'utilisais la dernière version de chaque logiciel (1.5.0 et 1.4.2 respectivement).

Exécuter ce qui suit a également fonctionné pour moi: 

logstash -e 'input { stdin { } } output { elasticsearch { protocol => "http" } }' 

Mais je voulais comprendre pourquoi je ne pouvais pas me connecter via les autres protocoles. Bien que documentation n'indique pas quel est le protocole par défaut, j'étais à peu près sûr d'utiliser le transport ou le nœud pour le port 9300 par défaut en raison de la sortie suivante obtenue lorsque j'ai démarré elasticsearch

[2015-04-14 22:21:56,355][INFO ][node                     ] [Super-Nova] version[1.5.0], pid[10796], build[5448160/2015-03-23T14:30:58Z]
[2015-04-14 22:21:56,355][INFO ][node                     ] [Super-Nova] initializing ...
[2015-04-14 22:21:56,358][INFO ][plugins                  ] [Super-Nova] loaded [], sites []
[2015-04-14 22:21:58,186][INFO ][node                     ] [Super-Nova] initialized
[2015-04-14 22:21:58,187][INFO ][node                     ] [Super-Nova] starting ...
[2015-04-14 22:21:58,257][INFO ][transport                ] [Super-Nova] bound_address {inet[/127.0.0.1:9300]}, publish_address {inet[/127.0.0.1:9300]}
[2015-04-14 22:21:58,273][INFO ][discovery                ] [Super-Nova] elasticsearch/KPaTxb9vRnaNXBncN5KN7g
[2015-04-14 22:22:02,053][INFO ][cluster.service          ] [Super-Nova] new_master [Super-Nova][KPaTxb9vRnaNXBncN5KN7g][Azads-MBP-2][inet[/127.0.0.1:9300]], reason: zen-disco-join (elected_as_master)
[2015-04-14 22:22:02,069][INFO ][http                     ] [Super-Nova] bound_address {inet[/127.0.0.1:9200]}, publish_address {inet[/127.0.0.1:9200]}
[2015-04-14 22:22:02,069][INFO ][node                     ] [Super-Nova] started

Au début, j'ai essayé d'ouvrir le port 9300 en suivant ces instructions . Cela n'a rien changé, donc ce port n'a probablement pas été bloqué.

Puis je suis tombé sur cette question github . Aucune solution n’a vraiment aidé, mais j’ai vérifié une deuxième fois pour s’assurer que le nom de mon cluster elasticsearch était correct en vérifiant elasticsearch.yaml (ce fichier est habituellement stocké où elasticsearch est installé. idée où regarder). Et voilà, mon nom elastisearch cluster.name a été ajouté à mon nom. Le fait de le supprimer de sorte que le nom du cluster soit simplement "elasticsearch" a aidé logstash à découvrir mon instance elasticsearch.

1
AzadMemon