2014-12-03 18 views
38

che sto cercando di determinare se l'istanza elasticsearch è in esecuzione, ma non sembra essere:perché elasticsearch non verrà eseguito su Ubuntu 14.04?

[email protected]:~$ sudo service elasticsearch status 
* elasticsearch is not running 
[email protected]:~$ sudo service elasticsearch start 
* Starting Elasticsearch Server [ OK ] 
[email protected]:~$ sudo service elasticsearch status 
* elasticsearch is not running 
and 

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

e

[email protected]:~$ curl -XGET localhost:9200/_nodes/_all/process?pretty 
curl: (7) Failed to connect to localhost port 9200: Connection refused 

e

[email protected]:/etc/elasticsearch$ sudo netstat -nlp 
tcp6  0  0 :::9300     :::*     LISTEN  4413/java  

UPD

I miei elastici earch.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) 
+0

controllare i registri elasticsearch e aggiornarli con i log degli errori – eliasah

+0

È possibile verificare cosa è in esecuzione su 9200? – Ymartin

risposta

76

elasticsearch script di servizio init non stampa alcuna informazione di errore in console o file di log quando non riesce per l'avvio, invece si vede ridicolmente [OK].

È necessario eseguire elaticsearch manualmente con lo stesso utente e gli stessi parametri di ciò che lo script di init fa per verificare cosa non funziona. Il messaggio di errore verrà stampato sulla console.

Sulla mia Ubuntu 14.10 con elasticsearch-1.4.1.deb installato, senza alcun percorso cambiata, il comando da eseguire elasticsearch è:

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 

Ho appena aggiunto una linea in /etc/init.d/elasticsearch di stampare il comando precedente :

# 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 $? 
+2

Grazie! Ho aperto un [bug report] (https://bugs.launchpad.net/ubuntu/+source/elasticsearch/+bug/1465374) se qualcuno vuole "anch'io" questo. –

+0

Vorrei solo commentare che su Vagrant ho avuto questo problema causato dall'esaurimento della memoria. –

+1

YMMV ma ho dovuto aggiungere la riga subito dopo la riga che inizia con 'DAEMON_OPTS ='. – toon81

25

l'utente elasticsearch non può scrivere il file PID perché non ha autorizzazioni per creare un file in/var/run /:

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

La correzione: creare la directory/var/run/elasticsearch /, cambiarne la proprietà in elasticsearch: elasticsearch e modificare la posizione del file PID in questa directory nello script di 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 

Una volta arrivati ​​così lontano, ecco il successivo errore che potrebbe vedere:

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

Anche in questo caso una risorsa non dispone delle autorizzazioni necessarie per l'utente elasticsearch.

chown -R elasticsearch: /var/lib/elasticsearch 

Non ancora finito. Ora è necessario modificare /etc/init.d/elasticsearch e rimuovere questa riga:

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

Questa linea è spazzatura totale ed è garantito per causare un'uscita.

Ora dovrebbe finalmente iniziare.

+3

FYI, in alternativa puoi non commentare la riga START_DAEMON in/etc/defaults/elasticsearch invece di modificare lo script init.d. –

+1

Grazie, molto utile questo. Mi chiedo perché non sia configurato correttamente in Ubuntu stesso. – apotonick

+0

Ha funzionato per me con il primo passo (ancora un passo in più). – Mark

3

Ho avuto lo stesso problema stamattina. Dopo molte ricerche, abbiamo scoperto che era causato da un'installazione Java 8 non riuscita. Tutto andava bene dopo che l'installazione di Java 8 era stata riparata.

1

I parametri della riga di comando a cui fa riferimento @aleung possono essere impostati nel file di configurazione. Per impostazione predefinita, i parametri sono commentati.

impostare quanto segue in /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 
8

Mentre il comando risposta accettata funzionato per me usando elasticsearch 1.7.3, con alcune modifiche in elasticsearch> 2.0 in esecuzione il comando risposta accettata produrrebbe

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

Github Issue

Il comando specificato nel suddetto problema Github ora sarà:

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 
0

ho avuto allo stesso punto dopo che ho fatto apt-get dist-upgrade - JAVA ottenuto aggiornato a "Java (TM) SE Runtime Environment (build 1.8.0_91-b14) Java HotSpot (TM) "Versione server VM a 64 bit (build 25.91-b14, modalità mista)".

Il mio ES non ha voluto iniziare. Ho trovato la causa qui (coda -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] 

Ho appena tolto il plugin (bin/plugin rimuovere licenza) e ha iniziato con successo ES.

Spero che questo aiuti gli altri.

11

Se si utilizza elasticsearch 5.0.

/requisiti di dimensione heap massimo minimo per elasticsearch 5.0 sono ora entrambi in default a 2gb

controllare i file ls /tmp/hs_err_pid*.log, nei registri vedrai che JVM non è stato avviato ES a causa di memoria insufficiente.

È possibile regolare le impostazioni della dimensione heap in /etc/elasticsearch/jvm.options. Regola le linee -Xms2g e -Xmx2g a -Xms1g e -Xmx1g rispettivamente, se sei su una scatola con 2 GB di RAM. Se avete intenzione di utilizzare una scatola con 1 GB di RAM mi consiglia di utilizzare -Xms512m e -Xmx512m.

Reference

+0

Uomo, sei il mio eroe! Ho cercato ore per questo! –

+1

Grazie amico. Sono felice che la mia risposta sia stata in grado di farti risparmiare tempo. –

+0

Forse sapete come risolvere questo problema con Docker e Plesk? Docker esegue la mia ElasticSearch al momento e non ho idea di come risolverlo con la finestra mobile. Trovare questa soluzione è stato difficile, applicarlo con la finestra mobile è ancora più difficile: P –

1

Per me, questo problema è stato causato dal Data elasticsearch e/o directory Logs essere al 100% uso del disco. Esegui df -h per vedere se la directory utilizzata dal processo Elasticsearch per i dati e i registri dispone di spazio libero o meno.

Problemi correlati