在单个节点上部署 ELK docker swarm 失败
Deploy ELK on single node docker swarm failed
我正在尝试在我的小型服务器 2 Core / 2G RAM 上部署 ELK。但是ELK stack server一直在重启,无法正常工作。
打印在这些容器上的日志没有显示任何错误,只有一些关于已弃用方法的警告。
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 堆栈编写器文件:https://github.com/deviantony/docker-elk/blob/master/docker-stack.yml。除了调低堆大小外,我没有做任何更改。
但是如果我在 swarm 模式下使用 docker-compose
而不是 docker stack deploy
,一切都会顺利进行。
此外,当我启动服务时,我的 CPU 跳到 100%,而内存使用率只有 60%。
如何调试这个问题?提前致谢。
我认为你的问题还是内存不足造成的。我会测试您在上面显示的撰写堆栈。检查 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 堆栈。如果你坚持,尝试在你的 compose 文件中添加 mem_limit
(你真的不需要使用 v3,v2 足以用于单节点服务)来限制你的容器内存使用。
我正在尝试在我的小型服务器 2 Core / 2G RAM 上部署 ELK。但是ELK stack server一直在重启,无法正常工作。
打印在这些容器上的日志没有显示任何错误,只有一些关于已弃用方法的警告。
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 堆栈编写器文件:https://github.com/deviantony/docker-elk/blob/master/docker-stack.yml。除了调低堆大小外,我没有做任何更改。
但是如果我在 swarm 模式下使用 docker-compose
而不是 docker stack deploy
,一切都会顺利进行。
此外,当我启动服务时,我的 CPU 跳到 100%,而内存使用率只有 60%。
如何调试这个问题?提前致谢。
我认为你的问题还是内存不足造成的。我会测试您在上面显示的撰写堆栈。检查 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 堆栈。如果你坚持,尝试在你的 compose 文件中添加 mem_limit
(你真的不需要使用 v3,v2 足以用于单节点服务)来限制你的容器内存使用。