본문 바로가기
프로그래밍/devops

[ELK+R스택 구축하기] docker로 ELK 구성하여 Spring Boot 로그 쌓기 (3)

by 뜨끔쓰 2022. 7. 12.
728x90
728x90

안녕하세요~ 이번시간은 ELK+R스택 구축하기의 마지막 글입니다.

 

저번글까지 Docker를 이용하여 ELK + R 스택을 구축하였는데요!! 이제 스프링부트에서 쌓이는 로그를 ELK로 적재하고

 

Kibana UI에서 확인 해보도록할께요! 지극히 자료정리의 내용이라 유익하지 않을 수 있지만 필요하신분은 퐉퐉 사용하세요!

 

일단 개인 SpringBoot 프로젝트로 가봅시다!

 

SpringBoot 폴더구조

기본적으로 대략 위와 같은 폴더구조로 되어 있을꺼에요! 하지만 logback-spring.xml 파일은 없겠죠! 생성합시다.

 

여러가지 logging 라이브러리가 있는데 Spring Boot 2.0에서는 Java Util Logging, Log4j 2, Logback 을 기본적으로 사용할 수 있다.

 

파일만 생성해도 해당 파일이 자동 탑재 되는 이유는 Web Application이 시작되고 나서 classpath 내의 logback.xml을 뒤져서 환경 설정을 적용하기 때문이에요!

 

logback 파일의 자세한 내용은 시간날때 글을 써서 정리하려고해요. 여기서는 실제 사용하고 있는 코드로 확인해봅시다!

 

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    <include resource="org/springframework/boot/logging/logback/console-appender.xml" />

    <appender name="redis" class="com.cwbase.logback.RedisAppender">
        <host>192.168.28.131</host> <!-- redis가 설치된 호스트IP -->
        <port>6379</port>           <!-- redis사용 포트 -->
        <key>logstash</key>
        <type>appapi-local</type>   <!-- 그전시간에 logstash_writer의 권한 설정때 작성한 Indices 값 -->
        <source>SLOT-1</source>
    </appender>


<!-- 비동기적으로 log를 보내기 위하여 셋팅 -->
    <appender name="redisAsync" class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="redis" />
    </appender>



    <springProfile name="local">
        <root level="INFO">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="redisAsync" />
        </root>
    </springProfile>


    <springProfile name="product">
        <root level="INFO">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="redisAsync" />
        </root>
    </springProfile>

</configuration>

보시면 저는 Spring Profile을 local, product 2개로 나눠서 사용하기때문에 각 프로필이 적용되었들때 각각 설정하도록 하였습니다. aapender name이 redis인 부분을 보시면 com.cwbase.logback.RedisAppender 라는 라이브러리를 사용해서 redis 접속정보를 각각 넣어주면 해당 redis 저장소를 이용하여 logstash에 로그가 쌓이게 됩니다.

 

그렇기 때문에 꼭 설치를 하셔야합니다! 추가해주도록 합시다.

// gradle 사용시 build.gradle에 추가
implementation group: 'com.cwbase', name: 'logback-redis-appender', version: '1.1.6'


// maven 사용시 pom.xml에 추가
<dependency>
    <groupId>com.cwbase</groupId>
    <artifactId>logback-redis-appender</artifactId>
    <version>1.1.6</version>
</dependency>

 

 

RedisAppender 라이브러리의 자세한 사용법이 궁금하신분은 여기서 확인하시면됩니다.

https://github.com/kmtong/logback-redis-appender

 

GitHub - kmtong/logback-redis-appender: Logback Redis Appender

Logback Redis Appender. Contribute to kmtong/logback-redis-appender development by creating an account on GitHub.

github.com

 

자 이제 정말 기본적으로 확인 가능하도록 구성은 완료하였습니다. 지금 세팅한 상태로 SpringBoot를 실행하면 Console로그와 Console에 찍힌 로그들이 ELK로 적재가 되어 Kibana UI에서 확인이 가능합니다.

 

콘솔로그 화면

콘솔로그에 마지막에 찍힌 내용들이 과연 kibana에서 확인 가능한지 보러갑시다!

 

저번시간에 들어갔떤 kibanaUI에 들어가 로그인해봅시다.

 

Analystics => Discover 메뉴를 누르면 뭔가 다르게 Create data view라고 보이네요?! 눌러봅시다.

 

log가 쌓이고있다!

보시면 저희가 type값으로 준 값으로 index가 생성되어있는것을 보실 수 있어요 Create data view 버튼 클릭!

 

짜잔 로그가 보인다!

 

이렇게하시면 현재 Console로그에 찍힌 로그들을 확인하실 수 있어요! 추가 필터 및 다양한 기능들을 적용하여 보기 쉽게 로그를 분석하실 수 있습니다! 앞으로는 여러분의 몫이겠죠!?

 

 

이렇게 지금까지 Spring boot + Redis + ELK를 이용하여 log를 쌓고 확인하는 법을 정리해보았는데 회사를 다니시게 되면

 

대용량 데이터들을 ELK를 이용하여 시각화 하거나 분석하는 경우가 많기 때문에 맛보기라도 접해보면 도움이 많이 될 것 같아 글을 작성하였습니다. ( 물론 저도 까먹지 않기 위해 정리겸 작성한거라 미흡해도 양해 부탁드립니다.)

 

 

728x90
반응형

댓글