[Spring] 스프링 부트에 ELK 적용하기
ELK
스프링 프로젝트에서 발생하는 로그들을 수집해서 시각화해 모니터링할 수 있도록 설정해보자!
ELK
를 적용해서 로그 수집 및 시각화까지 해보자!
Logstash
프로젝트에 Logstash
를 설정해 로그를 수집하고 전처리를 할 수 있다.
다음처럼 logback
의존성을 추가해주자.
implementation 'net.logstash.logback:logstash-logback-encoder:4.11'
의존성을 추가했다면 설정 파일 logback.xml
을 등록해 로그를 수집할 수 있도록 해주자.
로그는 4560 포트로 전송하고, 로그 레벨이 INFO
이상이면 모두 가져오도록 설정해줬다.
<configuration scan="true" scanPeriod="30 seconds">
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>127.0.0.1:4560</destination>
<encoder class="net.logstash.logback.encoder.LogstashEncoder"></encoder>
</appender>
<root level="INFO">
<appender-ref ref="LOGSTASH"/>
</root>
</configuration>
Logstash
Docker 컨테이너에 등록할 설정 파일 logstash.conf
이다. 적절한 위치에 저장해주자.
logback
에서 보내는 로그 정보를 4560
포트로 JSON 형태로 받고 전처리 후 Elasticsearch
로 전달한다.
인덱스는 logstash-{날짜}
로 설정하자.
input {
tcp {
port => 4560
codec => json_lines
}
}
output {
elasticsearch {
hosts => ["elasticsearch:9200"]
index => "logstash-%{+YYYY.MM.dd}"
}
}
등록한 logstash.conf
를 갖고 Logstash
컨테이너를 실행하자.
# logstash 도커 이미지 받기
docker pull docker.elastic.co/logstash/logstash:7.6.2
# ELK Docker 네트워크 생성
docker network create elk
# logstash 도커 컨테이너 실행
docker run -d --name logstash --network=elk -p 4560:4560 -v {logstash.conf 위치}:/usr/share/logstash/pipeline/logstash.conf docker.elastic.co/logstash/logstash:7.6.2
Elasticsearch
Elasticsearch는 Logstash
에서 받은 전처리된 로그 정보를 관리한다.
다음 명령어를 입력해 Docker 컨테이너로 실행하자.
# elasticsearch 도커 이미지 받기
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.6.2
# elasticsearch 도커 컨테이너 실행
docker run -d --network=elk --name elasticsearch -p 9200:9200 -p 9300:9300 -e discovery.type=single-node docker.elastic.co/elasticsearch/elasticsearch:7.6.2
참고로 저장한 로그에 대해서 생성한 인덱스를 확인하고 싶으면 localhost:9200/_cat/indices?v
로 접속하면 된다.
Kibana
Kibana에서 Elasticsearch
에 저장된 로그 정보들을 시각화해 모니터링할 수 있다.
다음 명령어를 입력해 Docker 컨테이너로 실행하자.
# kibana 도커 이미지 받기
docker pull docker.elastic.co/kibana/kibana:7.6.2
# kibana 도커 컨테이너 실행
docker run -d --network=elk --name kibana -p 5601:5601 docker.elastic.co/kibana/kibana:7.6.2
정상적으로 실행됐다면 localhost:5601
에서 kibana 웹으로 접속할 수 있다.
위에서 로그 인덱스를 logstash-{날짜}
로 지정했기 때문에 logstash-*
로 조회하면 된다!
댓글남기기