docker compose에서 ELK 실행 안되는 문제 해결하기

dasd412·2022년 12월 12일
0

MSA 프로젝트

목록 보기
10/25

문제 상황

스프링 마이크로 서비스 코딩 공작소 개정 2판 챕터 11 실습 중, docker-compose up을 했다. 그런데 kibana 포트로 접속했더니 kibana server is not ready yet 발생한다.

문제의 docker-compose.yml

 elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.11.1
    container_name: elasticsearch
    environment:
      - node.name=elasticsearch
      - discovery.type=single-node
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata1:/usr/share/elasticsearch/data
    ports:
      - 9300:9300
      - 9200:9200
    networks:
      backend:
        aliases:
          - "elasticsearch"
  kibana:
    image: docker.elastic.co/kibana/kibana:7.13.0
    container_name: kibana
    environment:
      ELASTICSEARCH_URL: "http://elasticsearch:9300"
    ports:
      - 5601:5601
    networks:
      backend:
        aliases:
          - "kibana"
  logstash:
    image: docker.elastic.co/logstash/logstash:7.12.0
    container_name: logstash
    command: logstash -f /etc/logstash/conf.d/logstash.conf
    volumes:
      - ./config:/etc/logstash/conf.d
    ports:
      - "5000:5000"
    networks:
      backend:
        aliases:
          - "logstash"
  volumes:
  esdata1:
    driver: local

원인 추적

  1. 일단 docker-compose up으로 띄워봤다.
  2. docker logs 명령어를 활용하여 앨라스틱 서치, 키바나, 로그 스태시 로그를 수집했다.

다음은 앨라스틱 서치 로그다.

"max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]"

그리고 키바나 로그다.

{"type":"log","@timestamp":"2022-12-12T07:52:50+00:00","tags":["error","savedobjects-service"],"pid":952,"message":"This version of Kibana (v7.13.0) is incompatible with the following Elasticsearch nodes in your cluster: v7.11.1 @ 192.168.48.11:9200 (192.168.48.11)"}

로그를 보면 버전 호환 문제 또는 도커 메모리 부족 문제인 것 같다.

해결

일단, 키바나 버전 호환 문제인지 확인했다.
구글링해보니 ELK 스택은 각각 제품 호환성이 맞아야 하더라...

공식 사이트를 참조해보니 다음 페이지가 있었다.
https://www.elastic.co/kr/support/matrix#show_compatibility

열을 대조해서 보면, 엘라스틱 서치 7.11.X인 경우에는 키바나 버전은 7.11.X여야 하며 로그 스태시는 6.8.x-7.17.x 여야 작동함을 알 수 있었다.

그래서 다음과 같이 버전을 바꿨다.

  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.11.1

  kibana:
    image: docker.elastic.co/kibana/kibana:7.11.1

  logstash:
    image: docker.elastic.co/logstash/logstash:7.12.0

이렇게 바꾸고 실행했더니 5061 포트에 잘 접속되었다.
도커 메모리 문제는 아닌 것 같으니 그대로 냅뒀다.

profile
아키텍쳐 설계와 테스트 코드에 관심이 많음.

0개의 댓글