web-dev-qa-db-ja.com

推奨RAM docker-composeを使用したELKの比率

私は8GBのRAMを搭載した本番サーバーを持っています。サーバー上でelastic、logstash、kibanaをホストしようとしています。 dockercomposeを使用します。

推奨されるものは何ですか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: {}}

- "ES_Java_OPTS=-Xms512m -Xmx512m"などのいくつかの設定を見て、弾力性のあるdocumentatinoimを検索しています

だから私が知りたいのは..上記のdockerの場合-Javaヒープサイズ/メモリ制限に対してどのような設定を許可する必要がありますか?また、それを含めるようにcomposeを更新するにはどうすればよいですか?.

私の考えは、エラスティックの場合は4GB、ログスタッシュの場合は2GB、キバナの場合は1GBです。

ホスト用に1GB予約済み

7
Robbo_UK

上記のコメントでの議論に続いて、サイズが正しいと仮定すると、ここで行う必要があるのは、議論されているように各Dockerコンテナーのサイズを決定することです。 Swarmを使用していないため、v3形式を使用する必要はなく、v2で十分であることに注意してください。したがって、以下のversion行を変更しました。また、各コンテナにmem_limitを追加し、environmentコンテナのelasticsearchセクションにヒープサイズを追加しました。

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: {}}
3
Val