web-dev-qa-db-fra.com

pourquoi elasticsearch ne fonctionne-t-il pas sous Ubuntu 14.04?

J'essaie de déterminer si l'instance elasticsearch est en cours d'exécution, mais cela ne semble pas être:

ubuntu@ubuntu:~$ Sudo service elasticsearch status
 * elasticsearch is not running
ubuntu@ubuntu:~$ Sudo service elasticsearch start
 * Starting Elasticsearch Server  [ OK ] 
ubuntu@ubuntu:~$ Sudo service elasticsearch status
 * elasticsearch is not running
and

ubuntu@ubuntu:~$ Sudo /etc/init.d/elasticsearch status
 * elasticsearch is not running
ubuntu@ubuntu:~$ Sudo /etc/init.d/elasticsearch start
 * Starting Elasticsearch Server  [ OK ] 
ubuntu@ubuntu:~$ Sudo /etc/init.d/elasticsearch status
 * elasticsearch is not running
ubuntu@ubuntu:/etc/elasticsearch# Sudo service elasticsearch restart
 * Stopping Elasticsearch Server  [ OK ] 
 * Starting Elasticsearch Server  [ OK ] 
ubuntu@ubuntu:/etc/elasticsearch# Sudo service elasticsearch status
 * elasticsearch is not running

et

ubuntu@ubuntu:~$ curl -XGET localhost:9200/_nodes/_all/process?pretty
curl: (7) Failed to connect to localhost port 9200: Connection refused

et

ubuntu@ubuntu:/etc/elasticsearch$ Sudo netstat -nlp
tcp6       0      0 :::9300                 :::*                    LISTEN      4413/Java       

UPD

Mon elasticsearch.log:

[2014-12-03 00:00:02,161][INFO ][cluster.metadata         ] [Zero] [logstash-2014.12.03] creating index, cause [auto(bulk api)], shards [5]/[1], mappings [_default_]
[2014-12-03 00:00:02,617][INFO ][cluster.metadata         ] [Zero] [logstash-2014.12.03] update_mapping [logs] (dynamic)
[2014-12-03 00:00:12,737][INFO ][cluster.metadata         ] [Zero] [logstash-2014.12.03] update_mapping [logs] (dynamic)
[2014-12-03 00:00:17,587][INFO ][cluster.metadata         ] [Zero] [logstash-2014.12.03] update_mapping [logs] (dynamic)
[2014-12-03 00:00:18,842][INFO ][cluster.metadata         ] [Zero] [logstash-2014.12.03] update_mapping [logs] (dynamic)
[2014-12-03 01:00:01,430][INFO ][cluster.metadata         ] [Zero] [logstash-2014.11.25] deleting index
[2014-12-03 09:46:57,461][INFO ][cluster.metadata         ] [Zero] [logstash-2014.12.03] update_mapping [logs] (dynamic)
39
henb

Le script d'initialisation du service Elasticsearch n'imprime aucune information d'erreur sur la console ou le fichier journal en cas d'échec du démarrage, mais affiche ridiculement [OK].

Vous devez exécuter elaticsearch manuellement avec le même utilisateur et les mêmes paramètres que le script init pour vérifier ce qui ne va pas. Le message d'erreur sera imprimé sur la console.

Sur mon Ubuntu 14.10 avec elasticsearch-1.4.1.deb installé, sans aucun chemin modifié, la commande pour exécuter elastisearch est la suivante:

Sudo -u elasticsearch /usr/share/elasticsearch/bin/elasticsearch -d -p /var/run/elasticsearch.pid --default.config=/etc/elasticsearch/elasticsearch.yml --default.path.home=/usr/share/elasticsearch --default.path.logs=/var/log/elasticsearch --default.path.data=/var/lib/elasticsearch --default.path.work=/tmp/elasticsearch --default.path.conf=/etc/elasticsearch

Je viens d'ajouter une ligne dans /etc/init.d/elasticsearch pour imprimer la commande ci-dessus:

# Start Daemon
log_daemon_msg "Sudo -u $ES_USER $DAEMON $DAEMON_OPTS"    # <-- Add this line
start-stop-daemon --start -b --user "$ES_USER" -c "$ES_USER" --pidfile "$PID_FILE" --exec $DAEMON -- $DAEMON_OPTS
log_end_msg $?
78
aleung

L'utilisateur elasticsearch ne peut pas écrire le fichier PID car il n'est pas autorisé à créer un fichier dans/var/run /:

FileNotFoundException[/var/run/elasticsearch.pid (Keine Berechtigung)]

Le correctif: créez le répertoire/var/run/elasticsearch /, remplacez son propriétaire par elasticsearch: elasticsearch et modifiez l'emplacement du fichier PID par ce répertoire dans le script init.

mkdir -p /var/run/elasticsearch
chown elasticsearch: /var/run/elasticsearch
sed -e 's|^PID_FILE=.*$|PID_FILE=/var/run/$NAME/$NAME.pid|g' -i /etc/init.d/elasticsearch

Une fois que vous en êtes arrivé là, voici la prochaine erreur que vous pourriez voir:

ElasticsearchIllegalStateException[Failed to obtain node lock, is the following location writable?: [/var/lib/elasticsearch/elasticsearch]]

Là encore, une ressource ne dispose pas des autorisations appropriées pour l'utilisateur elasticsearch.

chown -R elasticsearch: /var/lib/elasticsearch

Pas encore fini. Maintenant, vous devez éditer /etc/init.d/elasticsearch et supprimer cette ligne:

test "$START_DAEMON" == true || exit 0

Cette ligne est une poubelle totale et est garantie pour provoquer une sortie.

Maintenant, il devrait enfin commencer.

26
Carlos Konstanski

Si vous utilisez Elasticsearch 5.0.

La taille minimale requise pour Eleapearch 5.0 est maintenant de 2 Go.

Vérifiez les fichiers ls /tmp/hs_err_pid*.log. Dans les journaux, vous verrez que JVM n'a pas pu démarrer ES en raison d'une mémoire insuffisante.

Vous pouvez ajuster les paramètres de taille de tas dans /etc/elasticsearch/jvm.options. Ajustez les lignes -Xms2g et -Xmx2g sur -Xms1g et -Xmx1g respectivement, si vous êtes sur une boîte avec 2 Go de RAM. Si vous envisagez d'utiliser une boîte avec 1 Go de RAM, je vous recommande d'utiliser -Xms512m et -Xmx512m..

Référence

11
Ronak Jain

Alors que la commande de réponse acceptée fonctionnait pour moi avec Elasticsearch 1.7.3, certaines modifications apportées à Elasticsearch> 2.0 lors de l'exécution de la commande de réponse acceptée produiraient

es.default.config is no longer supported. elasticsearch.yml 
must be placed in the config directory and cannot be renamed

Problème Github

La commande telle que spécifiée dans le numéro ci-dessus de Github serait désormais:

Sudo -u elasticsearch /usr/share/elasticsearch/bin/elasticsearch -d -p /var/run/elasticsearch.pid --path.conf=/etc/elasticsearch --default.path.home=/usr/share/elasticsearch --default.path.logs=/var/log/elasticsearch --default.path.data=/var/lib/elasticsearch --default.path.work=/tmp/elasticsearch --default.path.conf=/etc/elasticsearch
8
Khaliq Gant

J'ai rencontré le même problème ce matin. Après de longues recherches, nous avons découvert que cela avait été causé par une installation de Java 8 infructueuse. Tout allait bien après l'installation de Java 8.

3
Bo Guo

Cette commande a résolu mon problème:

Sudo chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/

Référencé de @imsaar github

1
Taimoor Changaiz

Pour moi, ce problème était dû au fait que le répertoire Elasticsearch Data et/ou Logs était utilisé à 100% sur le disque. Exécutez df -h pour voir si le répertoire utilisé par vos processus Elasticsearch pour les données et les journaux contient de l'espace libre ou non.

1
spiffygene

Les paramètres de ligne de commande auxquels @aleung fait référence peuvent être définis dans le fichier de configuration. Par défaut, les paramètres sont commentés.

Définissez les éléments suivants dans /etc/default/elasticsearch

################################
# Elasticsearch
################################

# Elasticsearch home directory
ES_HOME=/usr/share/elasticsearch

# Elasticsearch configuration directory
CONF_DIR=/etc/elasticsearch

# Elasticsearch data directory
DATA_DIR=/var/lib/elasticsearch

# Elasticsearch logs directory
LOG_DIR=/var/log/elasticsearch

# Elasticsearch PID directory
PID_DIR=/var/run/elasticsearch
1
KevinO

Je suis arrivé au même point après avoir mis apt-get dist-upgrade - Java a été mis à jour pour devenir "Environnement d'exécution Java SE (version 1.8.0_91-b14) Serveur Java HotSpot (TM) 64 bits VM (version 25.91-b14, mode mixte) "version.

Mon ES ne voulait pas commencer. J'ai trouvé la cause ici (tail -n100 /var/log/elasticsearch/elasticsearch.log):

Java.lang.IllegalArgumentException: Plugin [license] is incompatible with Elasticsearch [2.3.2]. Was designed for version [2.3.1]

Je viens de supprimer le plugin (bin/plugin remove license) et de démarrer ES avec succès.

J'espère que cela aidera les autres.

0
Strabek