본문 바로가기

Tech/Tips

Docker-compose로 ElasticSearch, Kibana 구동하기

반응형

이미지 출처 : Pixabay

안녕하세요! 한동안 바빠서 연재를 쭉 하지 못했습니다.

이번 글에서는 마이크로 서비스 아키텍쳐에서 필수적인 ELK 스택을 도커로 구축하는 법에 대해서 설명하려 합니다.

(LogStash는 수집할 로그가 아직 없어 이번 글에서는 제외하였습니다.)

 

간단하게 docker-compose를 사용하여 ElasticSearch와 Kibana를 띄우겠습니다.

다음과 같이 docker-compose.yml 을 작성해 줍니다.

version: '3'

services:
  elasticsearch:
    container_name: elasticsearch
    image: elasticsearch:7.9.0
    ports:
     - 9200:9200
     - 9300:9300
    networks:
     - default
    volumes:
     - /usr/share/data/elasticsearch:/usr/share/elasticsearch/data
    environment:
     - discovery.type=single-node
     - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
     - TZ=Asia/Seoul
    user: root
    restart: always
    privileged: true

  kibana:
    container_name: kibana
    image: kibana:7.9.0
    ports:
     - 5601:5601
    networks:
     - default
    environment:
     ELASTICSERCH_UTL: http://elasticsearch:9200
     ELASTICSEARCH_HOSTS: http://elasticsearch:9200
    environment:
     - TZ=Asia/Seoul
    restart: always
    privileged: true

networks:
  default:
    external:
      name: elastic

ElasticSearch와 Kibana는 7.9.0버전을 사용하였으며, 네트워크는 미리 생성해둔 elastic 네트워크를 사용합니다.

docker network create elastic

이렇게 구동해 준 다음, centos인 경우 외부 접속을 위해 firewalld에서 해당 포트에 대한 방화벽 설정을 해제해 줍니다.

firewall-cmd --permanent --add-port=5601/tcp
firewall-cmd --permanent --add-port=9200/tcp
firewall-cmd --permanent --add-port=9300/tcp
firewall-cmd --reload

 

그리고 curl 명령어를 사용하여 elasticsearch가 잘 구동되는지 확인해 봅니다 : 

curl -X GET "localhost:9200"
{
  "name" : "efdea64f74cb",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "EGhiKj6eT7-SqeICnahgMQ",
  "version" : {
    "number" : "7.9.0",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "a479a2a7fce0389512d6a9361301708b92dff667",
    "build_date" : "2020-08-11T21:36:48.204330Z",
    "build_snapshot" : false,
    "lucene_version" : "8.6.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

이후 Kibana를 확인해 봅니다.

(Kibana가 구동되고 있는 호스트의 5601번 포트로 접속해 주면 됩니다.)

다음 글에서는 telegraf를 사용하여 시스템 로그를 수집하고 elasticsearch에 적재하여 kibana에서 시각화하는 방법을 다룰 예정입니다.

반응형