728x90
원래는 elk를 이용하여 로그를 수집하고 수집한 로그를 이용하여 통계 자료를 만들고 싶었다.
대표님曰: 검색서비스 개선해야 하는데, Elasitcsearch 가 좋다더라.
요니킴曰: 제가 진행해 보겠습니다. 🙋🏻♀️
검색서비스도 개선하고 원하는 바도 이루기 위해 도입하게 된 docker-elk.
※ ELK 스택 이란?
Elasticsearch: JSON 기반의 분산형 오픈 소스 검색 및 분석 엔진, 주로 REST API를 통해 처리한다.
Logstash: 여러 소스에서 동시에 데이터를 수집하여 변환한 후, Elasticsearch 같은 "stash"로 전송하는 서버사이드 데이터 처리 파이프라인을 말한다.
Kibana: Elasticsearch에서 색인된 데이터를 검색하고 보고 시각화하며 막대 차트, 원형 차트, 표, 히스토그램, 지도 등을 생성하여 데이터를 분석할 수 있게 해준다.
(사실 블로그를 작성하기 한참 전에 세팅했던 작업들이기 때문에 기억을 되살려 가며 작성해 보도록 하겠다. 과거의 나 반성해)
아래와 같은 순서로 작업을 진행했던거 같다.
4. Elasticsearch Settings, Mappings 설정하기
5. logstash filter plugins 다루기
docker-elk 세팅하고 띄우기
1. docker-elk 다운받기
$ git clone https://github.com/deviantony/docker-elk.git
$ cd docker-elk
2. X-pack 관련 설정 제거
* 라이센스가 있다면 설정해 줘도 된다. 나는 무료로 사용할 것이기 때문에
1) ./elasticsearch/config/elasticsearch.yml
cluster.name: "docker-cluster"
network.host: 0.0.0.0
## X-Pack settings
#
# xpack.license.self_generated.type: trial
# xpack.security.enabled: true
# xpack.monitoring.collection.enabled: true
2) ./logstash/config/logstash.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) ./logstash/pipeline/logstash.conf
input {
tcp {
port => 5000
}
}
output {
elasticsearch {
hosts => "elasticsearch:9200"
index => "docker-elk-%{+YYYY.MM.dd}"
# user => "elastic"
# password => "changeme"
# ecs_compatibility => disabled
}
}
4) ./kibana/config/kibana.yml
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
5) 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: changeme
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:
# - "5044:5044"
- "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:
3. 실행하기
$ docker-compose build
$ docker-compose up -d
4. Kibana 접속해 보기: http://localhost:5601
5. 종료하기
$ docker-compose down -v
728x90
'ElasticSearch & OpenSearch' 카테고리의 다른 글
[ElasticSearch] 한글 형태소 분석기 설치하기 (0) | 2021.05.03 |
---|---|
[Filebeat] docker-filebeat 세팅하고 띄우기 (0) | 2021.04.29 |
[OpenSearch] dictionary 추가하기 (0) | 2021.04.23 |
[OpenSearch] docker-elk 에서 AWS ES 로 옮기기 - 2. docker-logstash (0) | 2021.04.20 |
[OpenSearch] docker-elk 에서 AWS ES 로 옮기기 - 1. AWS ES 생성 (0) | 2021.04.20 |