elasticsearch docker elk 설치 및 구성

초이·2024년 3월 14일
0

기본 전제 조건

  • docker 설치
  • java 설치

elk 설치 및 구성

1. docker-elk 다운로드

git clone https://github.com/deviantony/docker-elk.git

2. docker-compose.yml 구성

다운로드 해온 경로에 'docker-compose.yml' 파일이 존재할텐데 해당 파일을 열면 기본적으로 작성되어져있다.
기본 구성대로 설치하려면 이대로 진행하면 되고, 이미 구성된 docker에 추가로 작성하려면 기본 구성에 컨테이너 내용만 추가로 작성해주면된다.

추가로 redis를 통해 log를 받아올거기 때문에 redis를 추가로 작성해준다.
아래는 실제 docker-compose 내용으로 기본 구성된 내용과 약간 다를 수 있다.

version: '1.0'
services:
  redis:
    container_name: redis
    image: redis:7-alpine
    restart: unless-stopped
    hostname: redis
    ports:
      - 6379:6379
    volumes:
      - ./redis/data:/data
    labels:
      - "name=redis"
      - "mode=standalone"
    networks:
      - default

  elasticsearch:
    container_name: elasticsearch
    image: elasticsearch:8.3.2
    volumes:
      - ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro,Z
      - elasticsearch:/usr/share/elasticsearch/data:Z
    ports:
      - 9200:9200
      - 9300:9300
    environment:
      node.name: elasticsearch
      ES_JAVA_OPTS: -Xms512m -Xmx512m
      ELASTIC_PASSWORD: changeme
      discovery.type: single-node
    networks:
      - default
    restart: unless-stopped
 
  logstash:
    container_name: logstash
    image: logstash:8.3.2
    volumes:
      - ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:ro,Z
      - ./logstash/pipeline:/usr/share/logstash/pipeline:ro,Z
    ports:
      - 5044:5044
      - 50000:50000/tcp
      - 50000:50000/udp
      - 9600:9600
    environment:
      LS_JAVA_OPTS: -Xms256m -Xmx256m
      LOGSTASH_INTERNAL_PASSWORD: changeme
    networks:
      - default
    depends_on:
      - elasticsearch
    restart: unless-stopped
 
  kibana:
    container_name: kibana
    image: kibana:8.3.2
    volumes:
      - ./kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml:ro,Z
    ports:
      - 5601:5601
    environment:
      KIBANA_SYSTEM_PASSWORD: changeme
    networks:
      - default
    depends_on:
      - elasticsearch
    restart: unless-stopped
    
volumes:
  setup:
  elasticsearch:

networks:
  default:

3. elasticsearch.yml 수정

  • elasitcsearch > config > elasticsearch.yml
    해당 경로에 elasitcsearch.yml 파일을 수정해준다.

xpack.license.self_generated.type: basic
기본 값으로 trial로 작성되어 있기 때문에 basic으로 수정해준다.

---
## Default Elasticsearch configuration from Elasticsearch base image.
## https://github.com/elastic/elasticsearch/blob/main/distribution/docker/src/docker/config/elasticsearch.yml
#
cluster.name: docker-cluster
network.host: 0.0.0.0
 
## X-Pack settings
## see https://www.elastic.co/guide/en/elasticsearch/reference/current/security-settings.html
#
xpack.license.self_generated.type: basic
xpack.security:
  enabled: true

4. logstash.conf 수정

  • logstash > pipline > logstash.conf
    해당 경로에 logstash.conf 파일을 수정해준다.
input {
    redis { 
            host => "redis"
            port => 6379
            password => '1234'
            codec => "json"
            data_type => "list"
            key => "logstash"
    }
}
 
## Add your filters / logstash plugins configuration here
 
output {
    elasticsearch {
        hosts => "elasticsearch:9200"
        index => "%{type}-%{+YYYY.MM.dd}"
        user => "logstash_internal"
        password => "changeme"
    }
}

5.docker 실행

sudo docker-compose up --build -d

6. kibana 접속

docker가 정상적으로 빌드되었다면 localhost:5601 접속 시 (혹은 해당 host로) 아래와 같은 로그인 화면이 뜨면 정상적으로 접속된 것이다.

혹시 'Kibana server is not ready yet.' 해당 에러가 발생하면 처음부터 다시 빌드한 뒤 아래 명령어를 추가적으로 입력해보자

docker-compose up setup
profile
MacBook이 갖고싶은 살암

0개의 댓글