https://github.com/ksundong/docker-elk-kor 급하신 분들은 여기를 사용하세요.
git clone https://github.com/ksundong/docker-elk-kor.git
cd docker-elk
docker-compose build && docker-compose up -d
[2020-09-16] ELK Stack Version이 7.9.1로 변경되었습니다.
[2020-11-13] ELK Stack Version 별 브랜치 7.9.2, 7.9.3, 7.10.0이 추가되었습니다. master는 7.10.0입니다.
호스팅형 서비스인 Elastic Service 무료 체험판을 활용하는 것도 도움이 될 것 같습니다.
예쁜 공식 사이트 참고 (귀엽게 사슴뿔같은게 있어서 보니까 elk라는 동물에서 따온 모양입니다.)
Elasticsearch, Logstash, Kibana 를 통칭하는 말.
Elasticsearch: JSON 기반의 분산형 오픈 소스 검색 및 분석 엔진, 주로 REST API를 통해 처리합니다.
Logstash: 여러 소스에서 동시에 데이터를 수집하여 변환한 후, Elasticsearch같은 "stash"로 전송하는 서버사이드 데이터 처리 파이프라인
Kibana: 사용자가 Elasticsearch에서 차트와 그래프를 이용해 데이터를 시각화 할 수 있게 해줌.
거기에 더해 Beat(경량의 단일 목적 데이터 수집기)를 추가했습니다.
그래서 최종적으로 ElasticStack이 되었다고 합니다.
근데 어차피 여기서 우리가 쓸건 Elasticsearch와 Kibana가 대부분일 것 같습니다.
Monitoring 기능을 제외하고는 모두 유료...
따라서 여기선 사용하지 않습니다.
Security: 인증기능, 사용자 관리, 노드/HTTP/Elasticsearch 클라이언트 간 통신 트래픽 보호, Field/Document 수준까지 데이터 보호, Audit Log(감시로그) 기능 제공
Alerting: 데이터 변경사항에 대한 알림 제공
Monitoring: Elastic Stack상태를 지속적으로 체크
Reporting: PDF 형식의 주기적인 보고서를 생성, Email 등으로 전송
Graph: 데이터 시각화
Machine Learning: 데이터의 흐름, 주기성 등을 자동으로 실시간 모니터링을 하여 문제를 식별하고 근본원인 분석
https://github.com/deviantony/docker-elk 이 레포지토리를 클론해서 사용할 생각입니다.
git clone https://github.com/deviantony/docker-elk.git
cd docker-elk
X-pack을 사용하지 않을 것이기 때문에 제거해줍니다.
vi elasticsearch/config/elasticsearch.yml
---
## Default Elasticsearch configuration from Elasticsearch base image.
## https://github.com/elastic/elasticsearch/blob/master/distribution/docker/src/docker/config/el asticsearch.yml
#
cluster.name: "docker-cluster"
network.host: 0.0.0.0
vi elasticsearch/Dockerfile
ARG ELK_VERSION
# https://www.docker.elastic.co/
FROM docker.elastic.co/elasticsearch/elasticsearch:${ELK_VERSION}
# Add your elasticsearch plugins setup here
# Example: RUN elasticsearch-plugin install analysis-icu
RUN elasticsearch-plugin install analysis-nori
한글 분석기 nori를 설치합니다.
vi kibana/config/kibana.yml
---
## Default Kibana configuration from kibana-docker.
## https://github.com/elastic/kibana-docker/blob/master/.tedi/template/kibana.yml.j2
#
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
vi logstash/config/logstash.yml
---
## Default Logstash configuration from logstash-docker.
## from https://github.com/elastic/logstash-docker/blob/master/build/logstash/config/logstash-full.yml
#
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ]
vi logstash/pipeline/logstash.conf
input {
tcp {
port => 5000
}
}
## Add your filters / logstash plugins configuration here
output {
elasticsearch {
hosts => "elasticsearch:9200"
index => "logstash-20200803"
user => "username"
password => "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
# 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"
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:
ELASTIC PASSWORD 부분 변경
vi docker-stack.yml
version: '3.3'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.8.0
ports:
- "9200:9200"
- "9300:9300"
configs:
- source: elastic_config
target: /usr/share/elasticsearch/config/elasticsearch.yml
environment:
ES_JAVA_OPTS: "-Xmx256m -Xms256m"
ELASTIC_PASSWORD: password
# 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
deploy:
mode: replicated
replicas: 1
logstash:
image: docker.elastic.co/logstash/logstash:7.8.0
ports:
- "5000:5000"
- "9600:9600"
configs:
- source: logstash_config
target: /usr/share/logstash/config/logstash.yml
- source: logstash_pipeline
target: /usr/share/logstash/pipeline/logstash.conf
environment:
LS_JAVA_OPTS: "-Xmx256m -Xms256m"
networks:
- elk
deploy:
mode: replicated
replicas: 1
kibana:
image: docker.elastic.co/kibana/kibana:7.8.0
ports:
- "5601:5601"
configs:
- source: kibana_config
target: /usr/share/kibana/config/kibana.yml
networks:
- elk
deploy:
mode: replicated
replicas: 1
configs:
elastic_config:
file: ./elasticsearch/config/elasticsearch.yml
logstash_config:
file: ./logstash/config/logstash.yml
logstash_pipeline:
file: ./logstash/pipeline/logstash.conf
kibana_config:
file: ./kibana/config/kibana.yml
networks:
elk:
driver: overlay
여기도 마찬가지입니다.
docker-compose build && docker-compose up -d
docker-compose down -v
기본적으로 ELK에서 사용하는 포트는 다음과 같습니다.
http://{ip-address}:5601/
웹브라우저에서 접속하면 Kibana에 접속할 수 있습니다.
도커 + 엘라스틱 서치 Docker로 ElasticSearch ELK 스택 디플로이 - 센의 백과사전 블로그
안녕하세요. 2가지 방법중 Docker로 ELK스택을 설치한 후 참고하고 있는데 질문이 있습니다.
일반적으로 설치한 경우는 Logstash를 실행하기 위해서는 $ ./logstash -f sample.conf 이런식으로 진행하는데
Docker의 경우 Images를 직접 실행하려고
$ sudo docker run -it --rm docker-elk-kor_logstash -f sample.conf로 실행했습니다.
근데 "elasticsearch: Name or service not known"라고 뱉는데
로컬에 셋팅한 Logstash는 정상적으로 되서 확인해보니 뒤에 -f sample.conf를 뺴고
$ sudo docker run -it --rm docker-elk-kor_logstash 만 실행해도 동일하게 에러뜨더라구요..
도커로 ELK설치한경우 Logstash를 실행하려면 어떻게 해야 할까요?