在单节点docker swarm上部署ELK失败

时间:2019-07-04 09:05:36

标签: elasticsearch kibana docker-swarm docker-stack elk

我正在尝试在小型服务器2核心/ 2G RAM上部署ELK。但是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和elasticsearch容器上没有错误打印

这是docker stack composer文件:https://github.com/deviantony/docker-elk/blob/master/docker-stack.yml。除了调低堆大小外,我什么也没做。

但是,如果我在群体模式下使用docker-compose而不是docker stack deploy,一切都会顺利进行。

此外,启动服务时,我的CPU跃升至100%,而内存使用率仅为60%。

如何调试此问题?预先感谢。

1 个答案:

答案 0 :(得分:1)

我认为您的问题仍然是由于内存不足引起的。我将测试您上面显示的compose堆栈。选中docker stats。内存使用量在1.8G上下波动。

您提到您将compose file中的堆大小从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 RAM服务器不足以承载整个ELK堆栈的大多数常见用法。如果您坚持要尝试,请在撰写文件中添加mem_limit(您实际上不需要使用v3,v2足以用于单节点服务)来限制容器内存的使用。