Skip to content

tecobrary elk 이용방법

Kim JiHoon edited this page Jan 15, 2020 · 2 revisions

tecobrary-elk 프로젝트만 실행시키는 경우

** 주의 **

  • 실행할 때 MYSQL URL과 PORT를 입력하지 않을 경우 Logstash 가 동작하지 않습니다.

실행방법

  1. 프로젝트의 루트 디렉토리에서 다음 명령어를 입력합니다.
$ ELK_VERSION="7.5.0" MYSQL_URL={MYSQL_URL} MYSQL_PORT={MYSQL_포트번호} docker-compose up

tecobrary-server-api, tecobrary-elk 프로젝트를 같이 실행시키는 경우

** 주의 **

  • 이 방법은 도커 컨테이너간 간단한 네트워크 구성(하나의 네트워크에 모두 연결)을 위해 tecobrary-server-api의 docker-compose 파일에서 모든 컨테이너를 실행하도록 합니다.
    • 도커 네트워크를 더 간단히 구성하는 방법을 알고 계시다면 알려주세요!
  • elasticsearch.yml 파일의 host 값을 Elasticsearch의 서비스명(es-elk)로 변경해줘야 합니다.
  • MYSQL_URL과 MYSQL_PORT에 정확한 MySQL 서비스명(기본 서비스명 : mysql-db)과 서비스의 포트번호(기본 포트번호 : 3306)을 입력해야 합니다.

실행방법

  1. 서브 모듈로 tecobrary-elk 레포지토리를 등록해줍니다.
$ git submodule add https://github.com/milzipmoza-developers/tecobrary-elk.git
  1. tecobrary-elk 레포지토리 내용들을 불러옵니다.
$ git submodule update --init --recursive
  1. elasticsearch.yml 파일의 host 값을 변경합니다.
elasticsearch:
  host: es-elk
  port: 9200
  1. tecobrary-server-api의 docker-compose.yml 파일에 tecobrary-elk의 docker-compose.yml 내용을 추가하고, api-server, mysql-db 컨테이너에 대한 네트워크 설정을 추가해줍니다. (네트워크는 편의상 하나로 묶었습니다. 분리해도 좋아요.)
version: "3.2"
services:
  api-server:
    image: tecobrary/tecobrary-api-server
    container_name: api-server
    restart: always
    depends_on:
      - "mysql-db"
    networks:
      - tecobrary-elk-network
    ports:
      - 9090:9090

  mysql-db:
    image: mysql:5.7
    container_name: mysql-db
    ports:
      - 6033:3306
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: tecobrary
      MYSQL_PASSWORD: tecobrary
      MYSQL_DATABASE: tecobrary
    networks:
      - tecobrary-elk-network
    volumes:
      - ./db/mysql/init:/docker-entrypoint-initdb.d
      - ./cnf/my.cnf:/etc/mysql/my.cnf

  es-elk:
    container_name: es-elk
    build:
      context: ../tecobrary-elk/elasticsearch/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: volume
        source: elasticsearch
        target: /usr/share/elasticsearch/data
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    depends_on:
      - mysql-db
    stdin_open: true
    tty: true
    networks:
      - tecobrary-elk-network

  kibana-elk:
    container_name: kibana-elk
    build:
      context: ../tecobrary-elk/kibana/
      args:
        ELK_VERSION: $ELK_VERSION
    ports:
      - "5601:5601"
    depends_on:
      - es-elk
    networks:
      - tecobrary-elk-network

  logstash-elk:
    container_name: logstash-elk
    build:
      context: ../tecobrary-elk/logstash/
      args:
        ELK_VERSION: $ELK_VERSION
    ports:
      - "9600:9600"
      - "5001:5000"
    environment:
      - "LS_JAVA_OPTS=-Xmx256m -Xms256m"
      - MYSQL_URL=${MYSQL_URL}
      - MYSQL_PORT=${MYSQL_PORT}
    depends_on:
      - es-elk
    networks:
      - tecobrary-elk-network

  elasticsearch-mapping-init:
    container_name: elasticsearch-mapping-init
    build:
      context: ../tecobrary-elk/elasticsearch-mapping-init/
    depends_on:
      - es-elk
    networks:
      - tecobrary-elk-network

networks:
  tecobrary-elk-network:
    driver: bridge

volumes:
  elasticsearch:
  1. docker 디렉토리에서 다음 명령어를 입력합니다.
$ ELK_VERSION="7.5.0" MYSQL_URL=mysql-db MYSQL_PORT=3306 docker-compose up
Clone this wiki locally