서브타이틀 : 로그를 모으고 보는 것까지! Kibana UI 확인과 Spring Boot 로그 설정법
🙇♂️ 이전 글 : https://thinkandthing.tistory.com/121
🧐 왜 이걸 딥다이빙하게 되었을까요?
앞선 글에서 ELK 스택을 구축했다면, 이제 실제 로그를 수집하고 확인하는 과정을 다뤄볼 차례에요. 단순히 구성만 해놓고 로그가 안 들어오면 무용지물이잖아요? Kibana UI에서 로그를 확인하고, Spring Boot에서 Redis를 활용해 logstash로 로그를 흘려보내는 방법까지 제대로 정리해봤어요!

🔍 실행 및 Kibana 접속
1. ELK 컨테이너 실행
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.7.0
docker pull docker.elastic.co/logstash/logstash:8.7.0
docker pull docker.elastic.co/kibana/kibana:8.7.0
docker-compose up setup
sudo docker-compose build && docker-compose up -d
그럼 아래처럼 좌르르륵 뜨면서 ELK이 실행되는것을 확인 하실 수 있습니다.

2. 접속 확인
- 브라우저에서 http://THINKANDTHING:5601 접속
(주석: 호스트 IP 또는 도메인 주소는 THINKANDTHING으로 치환됨) - 로그인 정보: elastic / changeme
- Welcome 메시지 뜨면 성공! 🎉
🪃 logstash 권한 설정 (Kibana UI 에서)
1. 로그 수집 인덱스 권한 설정
- 좌측 메뉴 → Management → Stack Management → Security → Roles → logstash_writer 클릭
- Indices 항목에 appapi-* 추가 (ex. appapi-local, appapi-develop 등)



2. logstash_internal 사용자 권한 설정
- Management → Security → Users → logstash_internal 선택
- Role로 logstash_writer 부여

🏝 Spring Boot 로그 ELK 연동
이제 스프링부트에서 쌓이는 로그를 ELK로 적재하고 Kibana UI에서 확인 해보도록할께요!
일단 개인 SpringBoot 프로젝트로 가봅시다!
1. 라이브러리 추가
# gradle
implementation group: 'com.cwbase', name: 'logback-redis-appender', version: '1.1.6'
# maven
<dependency>
<groupId>com.cwbase</groupId>
<artifactId>logback-redis-appender</artifactId>
<version>1.1.6</version>
</dependency>
2. logback-spring.xml 설정
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds">
<!-- 공통 설정 -->
<springProperty scope="context" name="SERVICE_NAME" source="spring.application.name"/>
<springProperty scope="context" name="profile" source="spring.profiles.active"/>
<springProperty scope="context" name="REDIS_HOST" source="spring.redis.host"/>
<springProperty scope="context" name="REDIS_PORT" source="spring.redis.port"/>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<!-- 로그 패턴 설정 -->
<property name="CONSOLE_LOG_PATTERN" value="%d{YYYY.MM.dd HH:mm:ss.SSS, Asia/Seoul} [%thread] %highlight(%-5level) %cyan(%logger{36}) - %msg%n%throwable"/>
<!-- 콘솔 로그 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<charset>UTF-8</charset>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<!-- Redis 로그 -->
<appender name="redis" class="com.cwbase.logback.RedisAppender">
<host>${REDIS_HOST}</host>
<port>${REDIS_PORT}</port>
<key>logstash</key>
<type>appapi-${profile}</type>
<source>${SERVICE_NAME}</source>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<!-- 비동기 Redis 로그 -->
<appender name="redisAsync" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="redis"/>
<queueSize>512</queueSize>
<discardingThreshold>0</discardingThreshold>
<includeCallerData>false</includeCallerData>
</appender>
<!-- Local 환경 -->
<springProfile name="local">
<root level="INFO">
<appender-ref ref="CONSOLE"/>
</root>
</springProfile>
<!-- Develop 환경 -->
<springProfile name="develop">
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="redisAsync"/>
</root>
</springProfile>
</configuration>
🙆♀️ Kibana Discover 확인
자 이제 정말 기본적으로 확인 가능하도록 구성은 완료하였습니다.
지금 세팅한 상태로 SpringBoot를 실행하면 Console로그와 Console에 찍힌 로그들이 ELK로 적재가 되어 Kibana UI에서 확인이 가능합니다.
1. kibanaUI에 들어가 로그인해봅시다.
2. Analystics => Discover 메뉴를 누르면 create data view 가 보인다. 아래와 같이 작성한다



💃 Kibana의 Dashboard 활용해서 시각화
대시보드를 원하는 차트들을 구현 후 만들어내어 시각화 할 수 있다.
- 메세지 호출 비중
- 서비스 별 ERROR
- 전체 ERROR 카운팅
위의 요구사항들을 포함하는 대시보드를 아래와 같이 생성하였다.

🔚 마무리 멘트
이제 진짜 로그가 흘러들어오고, Kibana에서 눈으로 확인도 가능해졌어요! 🙌
Spring Boot 로그가 Redis로, 거기서 Logstash를 통해 Elasticsearch로, 마지막엔 Kibana에서 시각화까지!
모든 구성요소가 하나씩 연결되고 동작하는 걸 보니 감동이네요 😊
🙇♀️ 다음 글 (많관부)
이번 글에서는 Kibana로 로그를 보는법과 대시보드 설정 방법에 대해서 작성했는데요, 로그를 계속해서 유지하면 시스템에 문제가 생기기겠죠?
다음글에서는 인덱스 라이프 정책(ILM) 에 대해 작성해보겠습니다 ~
다음글 : https://thinkandthing.tistory.com/123
[ELK] ELK 스택 구축으로 로그를 수집하고 시각화하기(3/3) (feat. Redis)
쌓이기만 하는 로그는 그만! ILM 설정으로 효율적인 로그 운영하기🙇♂️ 이전 글 : https://thinkandthing.tistory.com/122 🧐 왜 이걸 딥다이빙하게 되었을까요?ELK 스택을 도입하고 로그가 잘 쌓이기
thinkandthing.tistory.com
'SpringBoot' 카테고리의 다른 글
| [ELK] ELK 스택 구축으로 로그를 수집하고 시각화하기(3/3) (feat. Redis) (5) | 2025.06.11 |
|---|---|
| [ELK] ELK 스택 구축으로 로그를 수집하고 시각화하기(1/3) (feat. Redis) (2) | 2025.06.11 |
| [ELK] Kibana Dev Tools 명령어 모음 & 해설 🧰 (4) | 2025.06.10 |
| [SpringBoot] Springboot tar 파일 생성 (0) | 2023.03.09 |
| [SpringBoot] 스프링DB 마이그레이션 (0) | 2023.03.07 |
댓글