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)
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 $?
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.
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.
.
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
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
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.
Cette commande a résolu mon problème:
Sudo chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/
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.
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
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.