Elasticsearch умирает, когда Logstash пытается записать данные

9

У меня есть Raspberry Pi 2 (последняя версия Raspbian от апреля 2015 г.), которая на прошлой неделе выполняла ElasticSearch и Logstash в тестовой сети (не простая установка, но она была стабильной в течение недели!). Я перезагружал свою машину сегодня и мне было очень тяжело, чтобы все снова заработало; ES и LS будут работать независимо друг от друга, но когда я пытаюсь вставить вывод LS в ES, экземпляр ES умирает без объяснения причин. Моя цель - запустить как ES, так и LS данные в ES через стандартный плагин вывода.

ElasticSearch [v1.5.0]

Я считаю, что именно в этом заключается основная проблема. ES может запускаться через service elasticsearch startи оставаться запущенным, доступен через HTTP-запросы к порту 9200, и все признаки жизни кажутся здоровыми. Как только что-то (насколько я могу судить) пытается записать данные в индекс, процесс умирает и журналы отладки @ / var / log /asticsearch / * не содержат ничего, связанного со сбоем службы. Я попытался вставить через logstash (см. Ниже), а также с curl, оба из которых завершают процесс ES. Команда локон Я бегу это curl -XPOST "http://localhost:9200/logstash-2015.04.05/records/" -d "{ \"type\" : \"specialRecord\" }".

Logstash [v1.4.2]

В настоящее время я работаю с этой простой конфигурацией:

input {
    stdin { }
}

output {
        stdout { codec => rubydebug }
        elasticsearch {
                host => '127.0.0.1'
                cluster => 'elasticsearch'
        }
}

Другие заметки

Некоторые вещи, которые я пробовал:

  • Я попытался поднять уровни журналирования для ElasticSearch до DEBUG / TRACE, и вывод удивительно неинтересен. Рад предоставить журналы, если это будет полезно.

  • Я попытался выделить ES 256 МБ и 512 МБ кучи, что, похоже, ни на что не влияет. Я также наблюдал за использованием памяти во время всего этого, и нехватка памяти, кажется, не проблема.

  • Я пытался отключить многоадресную рассылку, чтобы отсеять кучу сетевых переменных, но это, похоже, не имело значения.

  • Я гарантировал, что каталог данных для ES имеет много места, разрешений на запись и т. Д. ES создает подкаталоги в path.dataкаталоге, когда он загружается, но я не верю, что что-либо добавляется, поскольку при перезапуске процесса ES статистика индекса предполагает, что общее количество документов равно нулю.

Сейчас я довольно озадачен и разочарован тем, что ничего, что мне нужно (или, по крайней мере, не могу найти), не регистрируется. Есть идеи о том, что здесь может происходить?

Salis
источник
Если вы не получаете ничего полезного из журналов, единственным вариантом (кроме компиляции из источника и добавления дополнительных операторов отладки), по-видимому, является использование strace для просмотра системных вызовов. Это может дать вам подсказку о том, почему умирает эластичный поиск. Чтобы уменьшить громкость, начните с обычного режима и затем запустите текущий процесс непосредственно перед началом записи.
Пол Холдейн
Наличие сбоя без каких-либо журналов напоминает мне о проблемах JNI, не существует ли дамп процесса JVM ( hs_err_PID.log)? ES 1.5 использует встроенную библиотеку под названием Sigar для мониторинга, у нее могут быть проблемы с ARM Raspberry. Не могли бы вы попробовать запустить Sigar самостоятельно? Я попытался бы обновить до ES 1.5.2 или ES 2.0, который больше не использует Sigar.
G Кинтана
Вы выключили своп?
громыхает
Elasticsearch рекомендует 8G RAM для начала. Однажды я запустил его на Raspberry Pi 3. Он работает, но вы должны быть осторожны со скоростью, с которой вы отправляете данные, а также запросы могут занимать некоторое время.
webwurst

Ответы:

1

Вам нужно больше оборудования

Ваш распи может быть (значительно) недостаточно активным для вашей рабочей нагрузки.

Я никоим образом не эксперт по Elasticstack, но я настроил его в нескольких тестовых сценариях и для ограниченного / легкого производства. По моему опыту, хотя первоначальная настройка требует относительно небольшого количества ресурсов, так как число индексов растет, система генерирует значительно больше дискового ввода-вывода и загрузки процессора.

Это особенно очевидно после перезапуска, когда система восстанавливает осколки. Если ваши индексы не слишком велики, вы можете рассмотреть месячные сегменты вместо ежедневных блоков по умолчанию, что, похоже, поможет в этом отношении.

Йенс Эрих
источник