使用 docker-compose 的 ELK 的推荐 RAM 比率
Recommended RAM ratios for ELK with docker-compose
我有一个 8GB RAM 的生产服务器。我希望在服务器上托管 elastic、logstash 和 kibana。使用 docker 撰写。
每个容器的推荐 java 内存大小是多少。我该如何配置它。
我的 docker-compose
如下所示
---
version: '3'
services
kibana:
build:
context: kibana/
container_name: kibana
volumes:
- ./kibana/config/:/usr/share/kibana/config:ro
networks: ['elk']
depends_on:
- elasticsearch
restart: always
elasticsearch:
build:
context: elasticsearch/
container_name: elasticsearch
networks: ['elk']
volumes:
- ./elastic-data:/usr/share/elasticsearch/data
- ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
restart: always
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
environment:
- cluster.name=es-docker
- node.name=node1
- bootstrap.memory_lock=true
logstash:
build:
context: logstash/
container_name: logstash
volumes:
- ./logstash/pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf:ro
networks: ['elk']
ports:
- "5044:5044"
depends_on:
- elasticsearch
restart: always
networks: {elk: {}}
现在在 elastic documentatino 上四处搜索,我看到了一些设置,比如
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
等
所以我想知道什么.. 对于上面的 docker-compose 我应该允许什么设置 java 堆大小/内存限制以及如何更新 compose 以包含它.
我的想法是
4GB 弹性
2GB 用于 logstash
1GB 用于 Kibana
为主机预留 1GB
跟进我们在上面评论中的讨论,假设尺寸正确,您现在需要做的是按照讨论的方式调整每个 Docker 容器的大小。请注意,由于您没有使用 Swarm,因此您实际上不需要使用 v3 格式,v2 就足够了,因此我修改了下面的 version
行。我还为每个容器添加了 mem_limit
,并在 elasticsearch
容器的 environment
部分添加了堆大小。
version: '2.3'
services
kibana:
build:
context: kibana/
container_name: kibana
volumes:
- ./kibana/config/:/usr/share/kibana/config:ro
networks: ['elk']
depends_on:
- elasticsearch
restart: always
mem_limit: 1g
elasticsearch:
build:
context: elasticsearch/
container_name: elasticsearch
networks: ['elk']
volumes:
- ./elastic-data:/usr/share/elasticsearch/data
- ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
restart: always
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
environment:
- cluster.name=es-docker
- node.name=node1
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms2g -Xmx2g"
mem_limit: 4g
logstash:
build:
context: logstash/
container_name: logstash
volumes:
- ./logstash/pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf:ro
networks: ['elk']
ports:
- "5044:5044"
depends_on:
- elasticsearch
restart: always
mem_limit: 2g
environment:
- "LS_JAVA_OPTS=-Xmx1g -Xms1g"
networks: {elk: {}}
我有一个 8GB RAM 的生产服务器。我希望在服务器上托管 elastic、logstash 和 kibana。使用 docker 撰写。
每个容器的推荐 java 内存大小是多少。我该如何配置它。
我的 docker-compose
如下所示
---
version: '3'
services
kibana:
build:
context: kibana/
container_name: kibana
volumes:
- ./kibana/config/:/usr/share/kibana/config:ro
networks: ['elk']
depends_on:
- elasticsearch
restart: always
elasticsearch:
build:
context: elasticsearch/
container_name: elasticsearch
networks: ['elk']
volumes:
- ./elastic-data:/usr/share/elasticsearch/data
- ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
restart: always
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
environment:
- cluster.name=es-docker
- node.name=node1
- bootstrap.memory_lock=true
logstash:
build:
context: logstash/
container_name: logstash
volumes:
- ./logstash/pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf:ro
networks: ['elk']
ports:
- "5044:5044"
depends_on:
- elasticsearch
restart: always
networks: {elk: {}}
现在在 elastic documentatino 上四处搜索,我看到了一些设置,比如
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
等
所以我想知道什么.. 对于上面的 docker-compose 我应该允许什么设置 java 堆大小/内存限制以及如何更新 compose 以包含它.
我的想法是 4GB 弹性 2GB 用于 logstash 1GB 用于 Kibana
为主机预留 1GB
跟进我们在上面评论中的讨论,假设尺寸正确,您现在需要做的是按照讨论的方式调整每个 Docker 容器的大小。请注意,由于您没有使用 Swarm,因此您实际上不需要使用 v3 格式,v2 就足够了,因此我修改了下面的 version
行。我还为每个容器添加了 mem_limit
,并在 elasticsearch
容器的 environment
部分添加了堆大小。
version: '2.3'
services
kibana:
build:
context: kibana/
container_name: kibana
volumes:
- ./kibana/config/:/usr/share/kibana/config:ro
networks: ['elk']
depends_on:
- elasticsearch
restart: always
mem_limit: 1g
elasticsearch:
build:
context: elasticsearch/
container_name: elasticsearch
networks: ['elk']
volumes:
- ./elastic-data:/usr/share/elasticsearch/data
- ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
restart: always
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
environment:
- cluster.name=es-docker
- node.name=node1
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms2g -Xmx2g"
mem_limit: 4g
logstash:
build:
context: logstash/
container_name: logstash
volumes:
- ./logstash/pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf:ro
networks: ['elk']
ports:
- "5044:5044"
depends_on:
- elasticsearch
restart: always
mem_limit: 2g
environment:
- "LS_JAVA_OPTS=-Xmx1g -Xms1g"
networks: {elk: {}}