이번 글에서는 Docker Swarm 환경에서 ELK(Elasticsearch, Logstash, Kibana) 스택을 설치하고, Kibana 접속 시 자주 발생하는 문제인 'Kibana server is not ready yet'를 해결한 경험을 공유하고자 합니다.
1. Docker Swarm에서 ELK 스택 설치
ELK 스택은 로그 수집, 분석, 시각화에 널리 사용되는 도구입니다. 아래는 제가 사용한 docker-compose.yml 설정입니다.
ELK 스택 구성 파일
version: '3.9'
networks:
elk:
driver: overlay
volumes:
elk-data:
driver: local
driver_opts:
type: none
o: bind
device: /volumes/elk
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.10.2-arm64
ports:
- "9200:9200"
- "9300:9300"
environment:
- discovery.type=single-node
- xpack.security.enabled=false
- network.host=0.0.0.0
- xpack.license.self_generated.type=trial
volumes:
- elk-data:/usr/share/elasticsearch/data
networks:
- elk
deploy:
labels:
- "traefik.enable=true"
- "traefik.http.routers.elasticsearch.rule=Host(`ex.domain`)"
- "traefik.http.services.elasticsearch.loadbalancer.server.port=9200"
- "traefik.http.routers.elasticsearch.entrypoints=websecure"
- "traefik.http.routers.elasticsearch.tls=true"
- "traefik.http.routers.elasticsearch.tls.certresolver=letsencrypt"
kibana:
image: docker.elastic.co/kibana/kibana:8.10.2-arm64
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
ports:
- "5601:5601"
networks:
- elk
deploy:
labels:
- "traefik.enable=true"
- "traefik.http.routers.kibana.rule=Host(`ex.domain`)"
- "traefik.http.services.kibana.loadbalancer.server.port=5601"
- "traefik.http.routers.kibana.entrypoints=websecure"
- "traefik.http.routers.kibana.tls=true"
- "traefik.http.routers.kibana.tls.certresolver=letsencrypt"
2. Kibana 오류: 'Kibana server is not ready yet'
설치 후 브라우저에서 https://kibana.keystrom.site에 접속했을 때, 다음 오류를 만났습니다.
Kibana server is not ready yet
이 오류는 Elasticsearch와 Kibana 간 연결이 원활하지 않거나 설정에 문제가 있을 때 발생합니다.
3. 문제 원인과 해결 방법
문제 원인
- Elasticsearch 연결 설정 문제
- Kibana가 Elasticsearch에 올바르게 연결되지 못했을 가능성.
- ELASTICSEARCH_HOSTS 환경 변수가 잘못된 값을 참조하고 있었습니다.
- 추가 호스트 설정 문제
- extra_hosts로 Elasticsearch IP를 강제로 맵핑하여 Docker 네트워크 해석이 충돌할 수 있었습니다.
extra_hosts:
- "elasticsearch:10.0.25.14"
이 설정은 Docker Swarm 기반으로 Traefik과 ELK 스택의 통합을 목표로 하고 있습니다. 주요 문제는 Kibana와 Elasticsearch 간의 연결 문제입니다. 최종 연결 테스트를 진행하였습니다.
1. Elasticsearch 연결 확인
Docker Swarm 노드에서 Elasticsearch 서비스가 정상적으로 응답하는지 테스트합니다.
curl -X GET http://elasticsearch:9200
- 정상 응답 시: Kibana와 연결 가능
- 오류 발생 시: Docker 네트워크 설정을 점검하세요.
2 Kibana 로그 확인
Kibana 서비스의 로그를 확인하여 추가적인 오류 메시지를 파악합니다.
docker service logs kibana --follow
개인 서버에서 Elasticsearch와 Kibana를 Docker Swarm 클러스터 환경에서 구축했습니다.

이번 글에서는 Docker Swarm 환경에서 ELK(Elasticsearch, Logstash, Kibana) 스택을 설치하고, Kibana 접속 시 자주 발생하는 문제인 'Kibana server is not ready yet'를 해결한 경험을 공유하고자 합니다.
1. Docker Swarm에서 ELK 스택 설치
ELK 스택은 로그 수집, 분석, 시각화에 널리 사용되는 도구입니다. 아래는 제가 사용한 docker-compose.yml 설정입니다.
ELK 스택 구성 파일
version: '3.9'
networks:
elk:
driver: overlay
volumes:
elk-data:
driver: local
driver_opts:
type: none
o: bind
device: /volumes/elk
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.10.2-arm64
ports:
- "9200:9200"
- "9300:9300"
environment:
- discovery.type=single-node
- xpack.security.enabled=false
- network.host=0.0.0.0
- xpack.license.self_generated.type=trial
volumes:
- elk-data:/usr/share/elasticsearch/data
networks:
- elk
deploy:
labels:
- "traefik.enable=true"
- "traefik.http.routers.elasticsearch.rule=Host(`ex.domain`)"
- "traefik.http.services.elasticsearch.loadbalancer.server.port=9200"
- "traefik.http.routers.elasticsearch.entrypoints=websecure"
- "traefik.http.routers.elasticsearch.tls=true"
- "traefik.http.routers.elasticsearch.tls.certresolver=letsencrypt"
kibana:
image: docker.elastic.co/kibana/kibana:8.10.2-arm64
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
ports:
- "5601:5601"
networks:
- elk
deploy:
labels:
- "traefik.enable=true"
- "traefik.http.routers.kibana.rule=Host(`ex.domain`)"
- "traefik.http.services.kibana.loadbalancer.server.port=5601"
- "traefik.http.routers.kibana.entrypoints=websecure"
- "traefik.http.routers.kibana.tls=true"
- "traefik.http.routers.kibana.tls.certresolver=letsencrypt"
2. Kibana 오류: 'Kibana server is not ready yet'
설치 후 브라우저에서 https://kibana.keystrom.site에 접속했을 때, 다음 오류를 만났습니다.
Kibana server is not ready yet
이 오류는 Elasticsearch와 Kibana 간 연결이 원활하지 않거나 설정에 문제가 있을 때 발생합니다.
3. 문제 원인과 해결 방법
문제 원인
- Elasticsearch 연결 설정 문제
- Kibana가 Elasticsearch에 올바르게 연결되지 못했을 가능성.
- ELASTICSEARCH_HOSTS 환경 변수가 잘못된 값을 참조하고 있었습니다.
- 추가 호스트 설정 문제
- extra_hosts로 Elasticsearch IP를 강제로 맵핑하여 Docker 네트워크 해석이 충돌할 수 있었습니다.
extra_hosts:
- "elasticsearch:10.0.25.14"
이 설정은 Docker Swarm 기반으로 Traefik과 ELK 스택의 통합을 목표로 하고 있습니다. 주요 문제는 Kibana와 Elasticsearch 간의 연결 문제입니다. 최종 연결 테스트를 진행하였습니다.
1. Elasticsearch 연결 확인
Docker Swarm 노드에서 Elasticsearch 서비스가 정상적으로 응답하는지 테스트합니다.
curl -X GET http://elasticsearch:9200
- 정상 응답 시: Kibana와 연결 가능
- 오류 발생 시: Docker 네트워크 설정을 점검하세요.
2 Kibana 로그 확인
Kibana 서비스의 로그를 확인하여 추가적인 오류 메시지를 파악합니다.
docker service logs kibana --follow
개인 서버에서 Elasticsearch와 Kibana를 Docker Swarm 클러스터 환경에서 구축했습니다.
