티스토리 뷰

Elastic

ELK Stack 설치 (docker)

서보민 2021. 2. 15. 22:53

간단히 사용하기 위해 docker를 사용하여 ELK를 설치하고자 한다. docker는 무상태성을 가지므로 데이터 바인딩 작업을 따로 해줘야 데이터가 저장된다. 이번장에서는 데이터 바인딩을 따로 진행하지 않을 예정이며 추후 기회가 된다면 데이터 바인딩 작업을 진행하도록 한다.

docker는 이미 설치되어 있다는 가정하에 설치를 진행한다.

설치환경은 다음과 같다.

OS : macOS Big Sur (버전 : 11.2)

docker-version : Docker version 20.10.0

Docker-compose version : docker-compose version 1.27.4

설치를 원하는 서버에서 git clone을 진행한다. 해당 프로젝트에는 ELK Stack(Elasticsearch, Kibana, Logstash, Extensions)가 포함되어 있다.

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

Elasticsearch

각 오픈소스 프로젝트 들에 대해서 간단히 살펴보도록 한다. 이전 ELK 글 에서도 간단히 설명하였듯이 X-pack 플러그인은 Security 관련 부분이다.

우선 elasticsearch이다. 다른 설치 블로그들을 참고해 보면 해당 yml 파일에 discovery.type: single-node를 넣어 준다. 하지만 나중에 살펴볼 docker-compose.yml 파일에 이미 정의되어 있기 때문에 이 yml 파일에서는 지정해 주지 않아도 된다.

$ vi elasticsearch/config/elasticsearch.yml

---
## Default Elasticsearch configuration from Elasticsearch base image.
## https://github.com/elastic/elasticsearch/blob/master/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/setup-xpack.html
#
xpack.license.self_generated.type: trial
xpack.security.enabled: true
xpack.monitoring.collection.enabled: true

Kibana

다음은 kibana이다. elasticsearch가 데이터를 수집/분석하는 부분이라 이후에 나오는 Logstash에서도 elasticsearch의 주소를 지정하는 부분이 나온다. elasticsearch.password 부분만 수정하면 된다.

elasticsearch.password: [원하는 Password] <------- 이 부분 수정

$ vi kibana/config/kibana.yml

---
## Default Kibana configuration from Kibana base image.
## https://github.com/elastic/kibana/blob/master/src/dev/build/tasks/os_packages/docker_generator/templates/kibana_yml.template.ts
#
server.name: kibana
server.host: 0.0.0.0
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true

## X-Pack security credentials
#
elasticsearch.username: elastic
elasticsearch.password: [원하는 Password]     <------- 이 부분 수정

Logstash

Logstash 부분에서도 마찬가지로 elasticsearch 주소를 지정해주고 있다. xpack.monitoring.elasticsearch.password: 부분을 수정해 주면되며 kibana/config/kibana.yml에서 지정한 password와 동일하게 지정한다.

$ vi logstash/config/logstash.yml

---
## Default Logstash configuration from Logstash base image.
## https://github.com/elastic/logstash/blob/master/docker/data/logstash/config/logstash-full.yml
#
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ]

## X-Pack security credentials
#
xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.username: elastic
xpack.monitoring.elasticsearch.password: [원하는 Password]     <------- 이 부분 수정

logstash에서는 pipeline을 통해 데이터를 수집해 elasticsearch로 전달한다. 그래서 아래와 같은 구조를 가진다. input은 tcp 5000 port로 수집하며 수집한 데이터를 output부분에 명시되어 있는 elasticsearch로 전달한다. Input에서 beats는 추후 설치하게 된다면 사용하게 된다.

$ vi logstash/pipeline/logstash.conf

input {
        beats {
                port => 5044
        }

        tcp {
                port => 5000
        }
}

## Add your filters / logstash plugins configuration here

output {
        elasticsearch {
                hosts => "elasticsearch:9200"
                user => "elastic"
                password => "[원하는 Password]"     <------- 이 부분 수정
        }
}

docker-compose.yml

마지막으로 위에서 설정한 yml 파일들을 관리하는 docker-compose.yml 파일을 열어 수정한다. Services 부분을 간단히 살펴보면 하위에 elasticsearch, logstash, kibana의 yml 파일 주소가 volumes.source 부분에 있는 것을 확인할 수 있다. 이 yml 파일에서 수정할 부분은 다른 yml 파일들과 마찬가지로 password 부분을 수정하면 된다. 앞에서 말하였듯이 데이터 바인딩 작업은 따로 하지않는다.

$ vi docker-compose.yml

version: '3.2'

services:
  elasticsearch:
    build:
      context: elasticsearch/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: bind
        source: ./elasticsearch/config/elasticsearch.yml
        target: /usr/share/elasticsearch/config/elasticsearch.yml
        read_only: true
      - type: volume
        source: elasticsearch
        target: /usr/share/elasticsearch/data
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      ES_JAVA_OPTS: "-Xmx256m -Xms256m"
      ELASTIC_PASSWORD: [원하는 Password]     <------- 이 부분 수정

  ...

실행

실행은 다음 명령어이다.

$ docker-compose build && docker-compose up -d

포트

포트는 따로 수정하지 않았기 때문에 기본 포트를 사용한다.

  • Elasticsearch : 9200 / 9300
  • Logstash : 5000 / 9600
  • Kibana : 5601

kibana에 접속하기 위해서는 http://{ip-address}:5601로 접속하면된다.

'Elastic' 카테고리의 다른 글

Elasticsearch 시작하기  (0) 2021.03.10
Elasticsearch 란?  (0) 2021.02.28
Elasticsearch, RDBMS, NoSQL 비교  (0) 2021.02.08
ELK/Elastic Stack  (0) 2021.01.27
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함