2014-12-03 4 views
38

Я пытаюсь определить, если elasticsearch экземпляр запущен, но он не появляется, чтобы быть:Почему elasticsearch не работает на 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 

и

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

и

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

UPD

Мои эластичные материалы 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

проверить журналы elasticsearch и обновить с помощью журналов ошибок – eliasah

+0

Можете ли вы проверить, что работает на 9200? – Ymartin

ответ

76

Elasticsearch служба сценарий инициализации не печатает какую-либо информацию об ошибке на консоли или файл журнала, когда он не в состоянии запуска, а это смешно показывает [OK].

Вы должны запустить elaticsearch вручную с тем же пользователем и теми же параметрами, что и скрипт init, чтобы проверить, что происходит. Сообщение об ошибке будет напечатано на консоли.

На моем Ubuntu 14.10 с установленным elasticsearch-1.4.1.deb, без какого-либо пути изменились, команда для запуска elastisearch является:

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 

Я просто добавил строку в /etc/init.d/elasticsearch распечатать выше команды :

# 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

Спасибо! Я открыл сообщение об ошибке (https://bugs.launchpad.net/ubuntu/+source/elasticsearch/+bug/1465374), если кто-то хочет «меня тоже». –

+0

Я бы просто прокомментировал, что на Vagrant у меня была эта проблема, вызванная нехваткой памяти. –

+1

YMMV, но мне пришлось добавить строку сразу после строки, начинающейся с 'DAEMON_OPTS ='. – toon81

25

пользователь elasticsearch не может записать файл PID, поскольку он не имеет права на создание файла в/вар/запустить /:

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

Исправление: создайте каталог/var/run/elasticsearch /, измените его право собственности на elasticsearch: elasticsearch и измените местоположение файла PID в этот каталог в сценарии инициализации.

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 

После того, как вы получите, что далеко, вот следующая ошибка, которую вы можете увидеть:

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

Опять же ресурс не имеет необходимых разрешений для пользователя elasticsearch.

chown -R elasticsearch: /var/lib/elasticsearch 

Еще не сделано. Теперь вы должны отредактировать /etc/init.d/elasticsearch и удалить эту строку:

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

Эта линия является полным мусором и гарантированно вызвать выход.

Теперь это должно начаться.

+3

FYI, вы также можете не комментировать строку START_DAEMON в/etc/defaults/elasticsearch, а не настраивать скрипт init.d. –

+1

Спасибо, очень полезно этот. Интересно, почему это неправильно настроено в Ubuntu. – apotonick

+0

Работал для меня только с первого шага (еще один шаг слишком много). – Mark

3

Я столкнулся с тем же вопросом сегодня утром. После многократного поиска мы выяснили, что это было вызвано неудачной установкой Java 8. Все было в порядке после установки Java 8.

1

Параметры командной строки, которые @aleung ссылается, могут быть установлены в файле конфигурации. По умолчанию параметры закомментированы.

Установите следующее /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

Пока команда принята ответ работал для меня, используя Elasticsearch 1.7.3, с некоторыми изменениями в Elasticsearch> 2.0, выполнив команду принятый ответ будет производить

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

Github Issue

Команда, указанная в приведенном выше выпуске Github, будет теперь:

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

я получил в ту же точку после того, как я сделал APT-получить расстояние-обновления - JAVA был обновлен до «Java (TM) SE Runtime Environment (сборка 1.8.0_91-b14) Java HotSpot (TM) 64-разрядная версия сервера VM (версия 25.91-b14, смешанный режим) ".

Мои ES не хотели запускать. Я обнаружил, что причина здесь (хвост -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] 

Я просто удалил плагин (бен/плагин удалить лицензию) и успешно начал ES.

Я надеюсь, что это поможет другим.

11

Если вы используете Elasticsearch 5.0.

Min/требования максимальный размер кучи для Elasticsearch 5.0 теперь как дефолт 2Gb

Проверьте ls /tmp/hs_err_pid*.log файлы, в журналах вы увидите, что JVM не удалось запустить ES из-за недостатка памяти.

Вы можете отрегулировать настройки размера кучи в /etc/elasticsearch/jvm.options. Настройте линии -Xms2g и -Xmx2g на -Xms1g и -Xmx1g соответственно, если вы находитесь на коробке с 2 ГБ ОЗУ. Если вы собираетесь использовать коробку с 1 Гб оперативной памяти, я бы рекомендовал использовать -Xms512m и -Xmx512m.

Reference

+0

Человек, ты мой герой! Я искал часы для этого! –

+1

Спасибо, помощник. Я рад, что мой ответ был в состоянии сэкономить ваше время. –

+0

Возможно, вы знаете, как исправить эту проблему с помощью Docker и Plesk? Docker запускает мой ElasticSearch в настоящее время, и я не знаю, как исправить его с помощью докера. Найти это решение было сложно, применяя его с докере еще сложнее: P –

1

Для меня эта проблема была вызвана Elasticsearch данных и/или каталога Logs быть на 100% использование диска. Запустите df -h, чтобы узнать, имеет ли каталог, который ваш процесс Elasticsearch использует для данных и журналов, имеет свободное пространство или нет.