Не удалось развернуть ELK на одном узле Docker Swarm
Я пытаюсь развернуть ELK на моем небольшом сервере 2 Core / 2G RAM. Но сервер стека ELK просто продолжает перезагружаться и не может работать.
В журнале, напечатанном на этих контейнерах, нет ошибок и только несколько предупреждений об устаревшем методе.
Logstash log:
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.headius.backport9.modules.Modules (file:/usr/share/logstash/logstash-core/lib/jars/jruby-complete-9.2.7.0.jar) to field java.io.FileDescriptor.fd
WARNING: Please consider reporting this to the maintainers of com.headius.backport9.modules.Modules
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Нет ошибок печатает на Kibana и эластичный контейнер для поиска
Вот файл компоновщика стека докеров: https://github.com/deviantony/docker-elk/blob/master/docker-stack.yml. Я ничего не изменил, кроме уменьшения размера кучи.
Но если я использую docker-compose
вместо docker stack deploy
в режиме роя все идет гладко.
Кроме того, мой процессор подскочил до 100%, в то время как использование памяти только 60% при запуске службы.
Как я могу отладить эту проблему? Заранее спасибо.
1 ответ
Я думаю, что ваша проблема все еще вызвана нехваткой памяти. Я бы протестировал составной стек, который вы показываете выше. Проверьте docker stats
, Использование памяти колебалось в 1.8G.
Вы упомянули, что вы уменьшаете размер кучи в вашем файле compose: ES_JAVA_OPTS: "-Xmx512m -Xms512m"
понижать. Но все равно не рекомендую вырубать размер кучи ниже 256m
, Любое значение ниже этого приведет к некоторой ошибке, например:
[circuit_breaking_exception] [parent] Data too large, data for [<http_request>] would be xxx, which is larger than the limit of xxx
Любой более сложный запрос или другая операция вызовет больше ошибок.
Кроме того, обратите внимание, что у вас есть один хост, но вы все еще используете swarm в качестве главного и рабочего узла. Любая другая избыточная служба или приложение подтолкнет вас к хосту.
2G оперативного сервера недостаточно для размещения всего стека ELK для наиболее распространенного использования. Если вы настаиваете, попробуйте добавить mem_limit
в вашем файле компоновки (вам не нужно использовать v3, v2 достаточно для службы с одним узлом), чтобы ограничить использование памяти вашего контейнера.