본문 바로가기
코딩

Elastic Search, Kibana 셋업

by skyoon 2025. 1. 20.

주가 조회 사이트를 구현하면서 상장된 회사 리스트를 Elastic Search에 저장하고, 입력창에 글자를 입력하면 자동완성이 되도록 할 예정이었으나 그 부분까진 진행은 하지 못하였다.

다만 data.go.kr에서 상장된 회사 목록을 가져와서 Elastic Search에 저장하고 해당 데이터를 읽어오는 기능은 구현하였기 때문에 Elastic Search 구성환경을 정리한다. 덧붙여 Elastic Search 데이터를 분석할 수 있는 도구로 Kibana도 같이 구성하여 추후 Elastic Search를 학습할 때 활용할 수 있는 환경도 같이 구축한다. 지난번 PostgreSQL 구축 때와 마찬가지로 Docker를 사용했으며 일반 명령어와 Docker Compose를 통한 방법 2가지를 정리한다.

  1. Docker 명령어를 통한 구성
    1. Elastic Search 구성
      1. Docker에서 Elastic Search 이미지 다운
      sudo docker pull docker.elastic.co/elasticsearch/elasticsearch:8.17.0
       
      1. _docVol 디렉터리 아래 elastic_data 폴더 생성
      # postgreSQL pgdata생성한 _docVol 폴더 아래 추가하는 것
      mkdir _docVol/elastic_data
       
      1. 컨테이너 실행
      sudo docker run --name es01 \
          -p 9200:9200 -p 9300:9300 \
          -e "discovery.type=single-node" \
          -e "xpack.security.enabled=false" \
          -e "xpack.security.http.ssl.enabled=false" \
          -v ~/_docVol/elastic_data:/usr/share/elasticsearch/data \
          -d docker.elastic.co/elasticsearch/elasticsearch:8.17.0
      성공하게 되면 http:// {IP 주소}:9200으로 접속된다.
    2. Kibana 구성
      1. Docker에서 Kibana 이미지 다운
      sudo docker pull docker.elastic.co/kibana/kibana:8.17.0
       
      1. 컨테이너 실행
      sudo docker run --name kibana \
          -p 5601:5601 \
          --link es01:elasticsearch \
          -d docker.elastic.co/kibana/kibana:8.17.0
      http://{IP 주소}:5601으로 접속하면 token 요청 페이지 나옴(이후 설정은 Docker Compose 구성 이후 참고)
  2. Docker Compose를 통한 구성
    1. _docVol 디렉터리 아래 elastic_data 폴더 생성
    # postgreSQL pgdata생성한 _docVol 폴더 아래 추가하는 것
    mkdir _docVol/elastic_data
     
    1. docker-compose.yml 파일 작성
    version: "3.8"
    
    services:
        elastic:
            image: docker.elastic.co/elasticsearch/elasticsearch:8.17.0
            container_name: es01
            ports:
                - "9200:9200"
                - "9300:9300"
            environment:
                - discovery.type=single-node
                - xpack.security.enabled=false
                - xpack.security.http.ssl.enabled=false
            volumes:
            	- elastic_data:/usr/share/elasticsearch/data
            healthcheck:
                test: curl -s http://localhost:9200/_cluster/health || exit 1
                interval: 10s
                timeout: 5s
                retries: 5
            restart: unless-stopped
    
    	kibana:
    		image: docker.elastic.co/kibana/kibana:8.17.0
    		container_name: kibana
    		ports:
    			- "5601:5601"
    		environment:
    			- ELASTICSEARCH_HOSTS=http://es01:9200
    		depends_on:
    			elastic:
    				condition: service_healthy
            restart: unless-stopped
    
    volumes:
      elastic_data:
        driver: local
        driver_opts:
          type: none
          o: bind
          device: ~/_docVol/elastic_data
     
    1. docker compose 명령 실행
    sudo docker-compose up -d
     
  3. 동작 환경 설정
    1. Kibana 컨테이너를 실행하고 웹페이지를 보면 token 요청



    2. Elastic Search 컨테이너를 통해 token을 생성
    sudo docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
     
    1. 생성된 Token을 Kibana UI Page에 붙여 넣음
    2. Configure Elastic 버튼 클릭하면 verification-code 요청 페이지 나옴



    3. 아래와 같이 Kibana 컨테이너를 통해 Code를 생성
    sudo docker exec -it kibana ./bin/kibana-verification-code  
     
    1. Setup이 진행되고 완료되면 로그인 창 나옴
    2. ID, PW는 Elastic-Search 접속 계정으로 접속(기본 ID: elastic, PW: changeme)
    3. 아래와 같이 Kibana 접속이되면 Elastic Search와 Kibana 동작을 확인 할 수 있음