Prometheus와 Grafana를 통해 요청 수, 에러율, 응답 시간, JVM 상태 등 주요 지표를 실시간으로 확인할 수 있게 되었다.
이를 통해 시스템의 이상 징후를 빠르게 감지할 수 있는 기틀은 마련되었다.
실제 운영 관점에서 한가지를 더 챙겨보아야 할 점이 있었는데
- 어떤 API에서 에러를 발생 시켰는가?
- 특정 사용자의 요청 흐름은 문제가 없는가?
- 처리 시간이 비정상적으로 길었던 요청은 무엇이 있는가?
- 동일한 예외가 언제부터 반복되고 있는가?
Metrics는 무엇이 비정상적인가를 알려주지만, 왜 그런일이 발생했는가 까지의 설명은 해주지 않았다.
이 지점에서 로그 기반 관측 환경 즉, ELK의 도입 필요성을 느끼게 되었다.
✓ Metrics와 Logs의 역할 구분
Observability는 일반적으로 다음 세 가지 요소로 구성된다.
- Metrics : 수치 기반 상태 관측
- Logs : 사건 기반 기록
- Tracing : 요청 흐름 추적
먼저 Metrics 기반 모니터링을 구축함으로서 시스템의 상태를 수치로 파악하고, 이상 징후를 조기에 감지하는데 초점을 두었다.
위에서 챙겨보아야 할 점으로 정리했던 내용처럼 Logs는 다음과 같은 목적을 가진다.
- 특정 요청의 상세 정보 확인
- 예외 스택 트레이스 분석
- 사용자 단위 추적
- endpoint 기반 검색 및 필터링
즉, Metrics는 이상 감지에 Logs는 원인 분석에 특화되어 있다.
🔍 이번 단계의 설계 목표
ELK 도입은 단순히 로그를 한 곳에 저장하는 것이 목적이 아니다.
다음과 같은 조건을 만족하는 환경을 구성하는 것이 목표인데 그 내용은 아래와 같다.
- Kibana에서 요청 로그를 시간 기준으로 조회할 수 있을 것
- endpoint / userId / latency 기준 필터가 가능할 것
- 특정 예외 유형 검색이 가능할 것
- 시간대별 에러 발생 추이를 시각화할 수 있을 것
단순 텍스트가 아닌 검색 가능한 데이터 구조로 전환하는 것이 핵심이다.
👍 ELK를 선택한 이유
로그 기반 관측을 구현하기 위한 대표적인 스택은 ELK이다.

ELK는 ElasticSearch, Logstash, Kibana 를 정리한 스택인데
- ElasticSearch : 로그 저장 및 검색 엔진
- Logstash : 로그 가공 및 변환
- Kibana : 로그 시각화 및 검색 UI
전통적인 ELK 구조는 Logstash를 통해 로그를 파싱하고, 필드를 가공한 뒤 Elasticsearch로 전달하는 형태가 일반적이다.
이번 프로젝트에서는 Logstash를 포함하지 않는 구조를 우선적으로 고려했다.
Logstash를 제외하고 Filebeat를 선택한 이유
그 이유는 아래와 같다.
- 로그를 애플리케이션 레벨에서 구조화하는 방식을 채택할 계획이기 때문이다.
endpoint / userId / latency 등 주요 필드를 포함한 JSON 형태의 로그를 출력하면, 별도의 복잡한 파싱 없이도 Elasticsearch에서 필드 기반 검색이 가능해진다. - 단일 EC2 환경에서 운영되고 있는 프로젝트 특성상 불필요한 리소스 사용을 최소화하기 위함이다.
Logstash는 강력한 변환 기능을 제공하지만 이번 단계에서는 단순 수집 및 검색을 목적으로 진행하기에 Filebeat 기반 구조가 적절하다고 판단했다.
따라서 다음과 같은 구조를 설계하였다.
Spring Boot (구조화된 로그 출력 예정)
↓
Docker stdout
↓
Filebeat
↓
Elasticsearch
↓
Kibana
로그를 단순 저장하는 것이 아니라, 운영 관점에서 검색 가능한 데이터로 만드는 것이다.
다음 글에서는
- Spring Boot 로그를 JSON 구조로 변경
- Filebeat를 통해 Elasticsearch로 적재하며
- Kibana에서 로그를 검색 및 시각화하는 과정을 정리하고자 한다.
이전 포스팅
https://stark77.tistory.com/113
https://stark77.tistory.com/114
[실시간 대용량 서비스] 모니터링 시스템 구축은 왜 필요한가 ?
프로젝트의 구현과정을 어느정도 경험하면서 모니터링 시스템은 왜 필요한지에 대한 궁금증이 생겼다. 모니터링 시스템은 종류도 많고 담당하는 역할도 정말 다양한데 그 중에서도 나는 이번
stark77.tistory.com
[실시간 대용량 서비스] 모니터링 시스템 구축은 왜 필요한가 ?
프로젝트의 구현과정을 어느정도 경험하면서 모니터링 시스템은 왜 필요한지에 대한 궁금증이 생겼다. 모니터링 시스템은 종류도 많고 담당하는 역할도 정말 다양한데 그 중에서도 나는 이번
stark77.tistory.com
'Spring > Spring 실습' 카테고리의 다른 글
| [실시간 대용량 서비스] Prometheus 모니터링 시스템 실제 적용기 (0) | 2026.02.24 |
|---|---|
| [실시간 대용량 서비스] 모니터링 시스템 구축은 왜 필요한가 ? (1) | 2026.02.23 |
| [실시간 대용량 서비스] JWT 인증에서 블랙리스트로도 충분한데, 왜 화이트리스트를 선택했을까? (0) | 2026.02.06 |
| [실시간 대용량 서비스] AccessToken / RefreshToken 분리 설계와 Redis 화이트리스트 (0) | 2026.02.02 |
| [실시간 대용량 서비스] 최종 프로젝트 발제 (0) | 2026.01.30 |