Docker Compose for Elasticsearch & Kibana: 설정 및 구성

Elasticsearch  이 글에서는 배포 및  Kibana 사용 방법을 살펴보겠습니다  Docker Compose. 이는 ELK Stack( Elasticsearch, Logstash, Kibana)의 두 가지 핵심 구성 요소로, 데이터를 효과적으로 검색, 분석 및 시각화하는 데 도움이 됩니다. 자세한 구성과 각 구성 요소의 작동 방식은 다음과 같습니다.

1. Elasticsearch

a. 기본 구성

Elasticsearch 다음 매개변수를 사용하여 Docker 컨테이너에서 실행되도록 구성됨:

  • 이미지:  공식 Elasticsearch 이미지 버전 을  8.17.2 사용합니다.

  • 단일 노드 모드:  환경 변수를 통해 활성화됩니다  discovery.type=single-node.

  • 보안:  X-Pack 보안이 활성화되어 있으며( xpack.security.enabled=trueelastic  사용자의 비밀번호가 .으로 설정되어 있습니다  YVG6PKplG6ugGOw.

  • 네트워크:  Elasticsearch는 모든 네트워크 인터페이스( network.host=0.0.0.0)에서 수신합니다.

  • JVM 메모리: -Xms1g  (초기 메모리)와  -Xmx1g  (최대 메모리)  로 구성됩니다  .

b. Ports 그리고 Volumes

  • Ports:  포트  9200  (HTTP)와  9300  (내부 통신)은 컨테이너에서 호스트로 매핑됩니다.

  • Volumes:  Elasticsearch 데이터는 볼륨에 저장됩니다  elasticsearch-data  .

c. 건강 검진

 API를 사용자와 함께  Elasticsearch 호출하여 상태를  모니터링하도록 상태 확인이 설정됩니다. API가 응답하지 않으면 컨테이너가 다시 시작됩니다. /_cluster/health elastic

2. Kibana

a. 기본 구성

Kibana Elasticsearch 다음 매개변수를 사용하여 Docker 컨테이너에 연결하고 실행하도록 구성됨:

  • 이미지:  공식 Kibana 이미지 버전 을  8.17.2 사용합니다.

  • Elasticsearch 연결:  주소 Elasticsearch 가(으)로 설정되었습니다  http://elasticsearch:9200.

  • 인증:  Kibana는  kibana_user  비밀번호를  사용하여. YVG6PKplG6ugGOw  에 연결합니다 Elasticsearch.

b. Ports 및 네트워크

  • Ports:  포트  5601  는 컨테이너에서 호스트로 매핑되어 Kibana 인터페이스에 접근합니다.

  • 네트워크:  Kibana는 .에 연결되어 있습니다  elk-network.

c. 의존성 Elasticsearch

Kibana 준비가 된 후에만 시작 Elasticsearch 되므로 두 서비스 간의 연결이 성공적으로 이루어집니다.

3. 볼륨 및 네트워크

a. 볼륨

  • elasticsearch-data:  이 볼륨은 데이터를 저장하는 데 사용되며 Elasticsearch, 컨테이너가 삭제되어도 데이터 지속성을 보장합니다.

b. 네트워크

  • elk-network: 서비스 를 연결하기 위한  네트워크  bridge  가 생성됩니다. Elasticsearch Kibana


4. 사용 방법

a. 서비스 시작

시작하려면 Elasticsearch 다음 Kibana 명령을 실행하세요.

docker-compose up -d

b. Kibana 사용자 생성(필요한 경우)

전용 사용자를 사용하려면 Kibana 다음 명령을 사용하여 사용자를 만들 수 있습니다.

docker exec -it elasticsearch /bin/elasticsearch-users useradd kibana_user -p you_password-r kibana_system
Token c. 토큰을 사용하는 경우 생성

비밀번호 대신 을 사용하려면 token 다음 명령을 사용하여 비밀번호를 생성하세요.

docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-service-tokens create elastic/kibana kibana-token

5. 문제 해결

  • 오류가 발생하면 다음을 사용하여 컨테이너 로그를 확인할 수 있습니다.

    docker logs elasticsearch 
    docker logs kibana
  • 다시 시작하려면 Kibana:

    docker-compose down kibana && docker-compose up -d kibana

Docker Compose 파일 의 전체 내용

파일 의 전체 내용은 다음과 같습니다  docker-compose-els.yml  .

version: '3.7'  
  
services:  
  elasticsearch:  
    image: docker.elastic.co/elasticsearch/elasticsearch:8.17.2  
    container_name: elasticsearch  
    environment:  
   - discovery.type=single-node  
   - xpack.security.enabled=true  
   - ELASTIC_PASSWORD=you_password  
   - network.host=0.0.0.0  
   - ES_JAVA_OPTS=-Xms1g -Xmx1g  
    ports:  
   - '9200:9200'  
   - '9300:9300'  
    volumes:  
   - elasticsearch-data:/usr/share/elasticsearch/data  
    ulimits:  
      memlock:  
        soft: -1  
        hard: -1  
    networks:  
   - elk-network  
  
    healthcheck:  
      test: ["CMD-SHELL", "curl -u elastic:YVG6PKplG6ugGOw --silent --fail localhost:9200/_cluster/health || exit 1"]  
      interval: 10s  
      retries: 5  
      start_period: 30s  
      timeout: 5s  
  
  kibana:  
    image: docker.elastic.co/kibana/kibana:8.17.2  
    container_name: kibana
    ports:  
   - '5601:5601'  
    environment:  
   - ELASTICSEARCH_HOSTS=http://elasticsearch:9200  
   - ELASTICSEARCH_USERNAME=kibana_user  
   - ELASTICSEARCH_PASSWORD=you_password  
    networks:  
   - elk-network  
    depends_on:  
      elasticsearch:  
        condition: service_healthy  
  
volumes:
  elasticsearch-data:  
    driver: local  
  
networks:  
  elk-network:  
    driver: bridge

결론

이 Docker Compose 구성을 사용하면 쉽게 배포 Elasticsearch 하고 Kibana 데이터 검색, 분석 및 시각화 요구 사항을 충족할 수 있습니다. 프로젝트의 특정 요구 사항에 맞게 이 구성을 사용자 지정하고 확장하세요!