1 분 소요

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

ElasticsearchLogstash에서 받은 전처리된 로그 정보를 관리한다.
다음 명령어를 입력해 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-*로 조회하면 된다!

References

카테고리:

업데이트:

댓글남기기