<1편>
marrrang.tistory.com/40?category=927204
<2편>
이제 Elastic Stack을 설치해보자!
ELK : Elasticsearch, LogStash, Kibana 의 앞글자를 따서 지은 명칭, Elastic Stack은 앞의 3개 + Beats로 구성된다
시대가 시대인만큼 저희는 Docker에 ELK를 설치해볼까 합니다.
설치를 해보는것도 매우 중요한 일이지만 저희는 사용법에 좀 더 중점을 두고 간단한 방법으로 설치해보겠습니다.
1. Docker, Docker-compose 설치
- Docker, Docker-compose를 서버에 우선 설치해주세요
- Docker 설치 방법 : docs.docker.com/engine/install
- Docker-compose 설치 방법 : docs.docker.com/compose/install
2. Docker에 ELK 설치
Elasticsearch, LogStash, Kibana를 간단하게 설치할 수 있는 deviantony/docker-elk 프로젝트에서 Clone을 받겠습니다.
그럴려면 아무래도 리눅스 서버에 Git이 깔려있어야 합니다.
1. 우분투 기준
1) sudo apt-get install git
2) sudo apt install git
3) git --version (설치됐는지 확인용)
2. CentOs 기준
1) yum install git
3. 공통
*) 사용자 설정 -> git config --global user.name "사용자명"
-> git config --global user.email "이메일명"
> git clone https://github.com/deviantony/docker-elk.git
링크 : github.com/deviantony/docker-elk
그럼 docker-elk 폴더에 깔끔한 ELK docker 설정들이 들어있습니다. 설정들을 살펴 본 후 docker에 띄워보겠습니다.
1. docker-elk/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 확장 프로그램에 대한 설정 이 실습에서는 사용 안함
## 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
2. docker-elk/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: changeme
3. docker-elk/logstash/pipeline/logstash.conf
input {
=> 카프로부터 읽어들일 때
kafka {
bootstrap_servers => "0.0.0.0:9092,1.1.1.1:9092"
topics => ["읽을 토픽 이름"]
codec => "json"
group_id => "카프카 그룹"
}
=> 직접 tcp 통신을 통해 받아들일 때
tcp {
port => 5000
codec => json_lines
}
=> beats와 연동해서 받을 때
beats {
port => 5044
}
}
## Add your filters / logstash plugins configuration here
output {
elasticsearch {
hosts => "elasticsearch:9200"
index => "인덱스"
user => "elastic"
password => "changeme"
}
}
4. docker-elk/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" ]
monitoring.ui.container.elasticsearch.enabled: true
## X-Pack security credentials
#
#elasticsearch.username: elastic
#elasticsearch.password: changeme
위에 정리한 내용 중에서 /pipeline/logstash.conf 말고는 거의 수정할 것이 없습니다.
logstash.conf 에 실습에 사용할 kafka, tcp, beats의 input을 설정해주고 docker-compose 설정으로 넘어가 보겠습니다.
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: changeme
# Use single node discovery in order to disable production mode and avoid bootstrap checks.
# see: https://www.elastic.co/guide/en/elasticsearch/reference/current/bootstrap-checks.html
discovery.type: single-node
networks:
- elk
logstash:
build:
context: logstash/
args:
ELK_VERSION: $ELK_VERSION
volumes:
- type: bind
source: ./logstash/config/logstash.yml
target: /usr/share/logstash/config/logstash.yml
read_only: true
- type: bind
source: ./logstash/pipeline
target: /usr/share/logstash/pipeline
read_only: true
ports:
- "5000:5000/tcp"
- "5000:5000/udp"
- "9600:9600"
- "5044:5044/tcp" => 추가
environment:
LS_JAVA_OPTS: "-Xmx256m -Xms256m"
networks:
- elk
depends_on:
- elasticsearch
kibana:
build:
context: kibana/
args:
ELK_VERSION: $ELK_VERSION
volumes:
- type: bind
source: ./kibana/config/kibana.yml
target: /usr/share/kibana/config/kibana.yml
read_only: true
ports:
- "5601:5601"
networks:
- elk
depends_on:
- elasticsearch
networks:
elk:
driver: bridge
volumes:
elasticsearch:
사용자에 대한 설정을 추가하거나 다른 설정 파일들을 이동하지 않았다면 수정할 것이 거의 없습니다.
단 Beats와 연동해보기 위해 logstash 쪽에 5044 port만 추가해줍니다.
3. Docker로 ELK 실행
> docker-compose up -d
위의 명령어로 실행하면 docker에 실행되게 됩니다.
4. 다음으로
설정들에 대한 자세한 설명없이 빠르게 정리하는 방향으로 진행했습니다. 나중에 설정에 대한 부분을 자세히 다루는 게시글을 준비하겠습니다. 이제 실행된 ELK에 데이터를 보내보겠습니다.
'Web > Kafka' 카테고리의 다른 글
[Kafka] Kafka Connect란? (0) | 2022.03.11 |
---|---|
Kafka Streams (카프카 스트림즈)에 대해서 (0) | 2021.06.16 |
[kafka] Elastic Stack과 Kafka 실습해보자! - (2)(produce and consume) (3) | 2021.03.24 |
[kafka] 카프카 관련 라이브러리 or API (0) | 2021.03.20 |
[kafka] Elastic Stack과 Kafka 실습해보자! - (1)(설치 및 구성) (0) | 2021.03.14 |