이번 포스팅에는 Elastic Stack을 설치하는 방법에 대해서 정리하려고한다.
docker,docker-compose가 설치되어 있지 않다면 여기를 참고하면된다. AWS의 EC2에 설치를 진행한다.
아래 과정을 다 완료하고 스프링 부트에 logstash를 연동하고 싶으면 여기를 참고한다.
1. docker-elk 설치
docker를 사용해서 ELK를 구축하려고한다. 깃허브에 편하게 설치할 수 있게 구성되어있는게 있어서 그걸 사용한다.
git clone https://github.com/deviantony/docker-elk.git
cd docker-elk
2. Elasticsearch 설정 변경
X-pack 플러그인은 Security 관련 부분이다.
$ 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
3. Kibana 설정 변경
Kibana는 elasticsearch에 저장된 데이터를 시각화하기위한 툴이라고 생각하면 된다.
elasticsearch의 주소를 지정하는 부분이 나오는데, elasticsearch.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] <------- 이 부분 수정
4. 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는 추후 설치하게 된다면 사용하게 된다.
input {
tcp {
port => 5000
codec => json_lines
}
}
## Add your filters / logstash plugins configuration here
output {
elasticsearch {
hosts => "elasticsearch:9200"
index => "인덱스명지정"
user => "아이디입력"
password => "비밀번호입력"
}
}
5. docker-compose.yml
마지막으로 위에서 설정한 yml 파일들을 관리하는 docker-compose.yml 파일을 수정한다.
Services 부분을 살펴보면 elasticsearch, logstash, kibana의 yml 파일 주소가 volumes.source 부분에 있는 것을 확인할 수 있다. 다른 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] <------- 이 부분 수정
6. 실행
$ docker-compose build && docker-compose up -d
7. 포트
포트는 따로 설정하지 않아서 기본 포트를 사용한다.
- Elasticsearch : 9200 / 9300
- Logstash : 5000 / 9600
- Kibana : 5601
kibana에 접속하기 위해서는 http://{ip-address}:5601로 접속하면된다.
REFERENCE
'DevOps' 카테고리의 다른 글
AWS Elastic Beanstalk (2) - github action을 연동한 배포 (0) | 2021.12.13 |
---|---|
AWS Elastic Beanstalk (1) - 구축 (0) | 2021.12.12 |
CI/CD 구축하기(4) - 애플리케이션 배포 (0) | 2021.09.01 |
CI/CD 구축하기(3) - 텔레그램 알림 설정 (0) | 2021.08.25 |
CI/CD 구축하기(2) - Docker Hub (1) | 2021.08.25 |