docker compose를 통해 EFK 배포

docker compose를 통해 EFK 배포

  • 대상
  • 사용된 미러링
  • 보충 설명
  • Docker compose 파일
  • 파일 설명
  • filebeat.docker-compose.yml 파일
  • 파일 설명
  • FAQ
  • vm.max_map_count 설정 문제
  • 솔루션
  • Data volume 데이터 삭제
  • 수동으로 만든 Kibana는 클러스터에 어떻게 가입합니까?

  • 목표


    docker compose를 통해 Elasticsearch, Filebeat, Kibana를 한꺼번에 배치합니다.

    사용된 미러

    docker pull store/elastic/filebeat:7.6.2
    docker pull elasticsearch:7.6.2
    docker pull kibana:7.6.2
    

    보충 설명


    docker 배열 파일에서 filebeat와kibana의 설정 방법을 더 잘 이해하기 위해 이곳의 Elasticsearch는 이중 노드를 사용합니다.실제 운영 환경에서는 Elasticsearch 클러스터가 이렇게 구성되지 않습니다.(공식 집단의 예는 여기를 참고하십시오.https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html)

    Docker compose 파일

    version: '3'
    services:
      es01:
        image: elasticsearch:7.6.2
        container_name: es01
        environment:
          - node.name=es01
          - cluster.name=es-docker-cluster
          - discovery.seed_hosts=es02
          - cluster.initial_master_nodes=es01,es02
          - bootstrap.memory_lock=true
          - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
        ulimits:
          memlock:
            soft: -1
            hard: -1
        volumes:
          - data01:/usr/share/elasticsearch/data
        ports:
          - 9200:9200
        networks:
          - elastic
      es02:
        image: elasticsearch:7.6.2
        container_name: es02
        environment:
          - node.name=es02
          - cluster.name=es-docker-cluster
          - discovery.seed_hosts=es01
          - cluster.initial_master_nodes=es01,es02
          - bootstrap.memory_lock=true
          - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
        ulimits:
          memlock:
            soft: -1
            hard: -1
        volumes:
          - data02:/usr/share/elasticsearch/data
        networks:
          - elastic
      filebeat:
        image: store/elastic/filebeat:7.6.2
        container_name: filebeat
        user: root
        environment:
          - strict.perms=false
          - output.elasticsearch.hosts=["es1:9200"]
        volumes:
          - ./filebeat.docker-compose.yml:/usr/share/filebeat/filebeat.yml:ro
          - /var/lib/docker/containers:/var/lib/docker/containers:ro
          - /var/run/docker.sock:/var/run/docker.sock
        networks:
          - elastic
        depends_on:
          - es01  
      kibana:
        image: kibana:7.6.2
        container_name: kibana
        environment:
          ELASTICSEARCH_HOSTS: http://es01:9200
        networks:
          - elastic
        expose:
          - "5601"
        ports:
          - "5601:5601"
        depends_on:
          - es01
    
    volumes:
      data01:
        driver: local
      data02:
        driver: local
    
    networks:
      elastic:
        driver: bridge
    

    문서 설명


    1) Docker Compose 파일에 두 노드의 Elasticsearch 클러스터를 생성합니다.노드 es01은 로컬 호스트에서 9200 포트를 감청하고 es02는 Docker 네트워크를 통해 es01과 대화합니다.2) volumes data01과 data02는 데이터가 다시 시작할 때 변하지 않도록 Docker 저장 노드 데이터 디렉터리입니다.디렉터리가 존재하지 않으면dockercompose는 그룹을 시작할 때 생성합니다. 위치를 지정하지 않으면 기본적으로 /var/lib/docker/volumes/ 디렉터리에 있습니다.3) Filebeat와 Kibana의 설정에서 Elasticsearch의host를 집단에서 9200 포트를 감청하는es01로 변경해야 합니다.

    filebeat.docker-compose.yml 파일

    filebeat.config:
      modules:
        path: ${path.config}/modules.d/*.yml
        reload.enabled: false
    
    filebeat.autodiscover:
      providers:
        - type: docker
          hints.enabled: true
    
    processors:
    - add_cloud_metadata: ~
    
    output.elasticsearch:
      hosts: '${ELASTICSEARCH_HOSTS:es01:9200}'
    

    문서 설명


    이 파일은 공식 표준 설정을 사용하지만, 마지막 줄host는 Elasticesearch 집단에서 9200 포트를 감청하는 용기의 용기 이름으로 바뀌어야 합니다.

    FAQ


    vm.max_map_count 설정 문제


    오류 정보는 다음과 같습니다.
    max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
    

    해결 방법


    이것은 기본값vm.max_map_count=65530이기 때문에 설정이 부족하면 단일 jvm가 열 수 있는 최대 스레드의 절반, 즉 3w 정도, 약 32k의 양입니다.그래서 262144로 늘려야 돼요.(4G 이상의 호스트 메모리 확보)
    echo vm.max_map_count=262144 >> /etc/sysctl.conf && sysctl -p
    

    구성이 적용되는지 확인합니다.
    #cat /proc/sys/vm/max_map_count
    262144
    

    Data volume 데이터 삭제


    컨테이너가 시작되면 /var/lib/docker/volumes/filebeat_data01/_data/ 디렉터리에 데이터를 생성하고 영구화하며 클러스터가 시작될 때마다 다시 사용됩니다.이 데이터를 삭제하려면 그룹을 정지할 때 -v 파라미터를 추가해야 합니다. docker-compose down -v 실행 효과
    # docker-compose down -v
    Stopping es02 ... done
    Stopping es01 ... done
    Removing es02 ... done
    Removing es01 ... done
    Removing network filebeat_elastic
    Removing volume filebeat_data02
    Removing volume filebeat_data01
    

    수동으로 만든 Kibana는 클러스터에 어떻게 가입합니까?


    docker compose와 함께 만든 키바나를 사용하지 않으면 Elasticsearch 그룹에 가입할 때 그룹의 네트워크 이름을 지정하고 그룹에 연결된 Elasticsearch가 9200 포트의 노드 이름을 감청해야 합니다. 예를 들어
    docker run -d --name kibana-cluster --net filebeat_elastic --link es01:elasticsearch -p 5601:5601 kibana:7.6.2
    

    좋은 웹페이지 즐겨찾기