[실시간 대용량 서비스] 모니터링의 다음 단계: 로그 기반 관측 설계

2026. 2. 25. 09:00·Spring/Spring 실습

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를 선택한 이유

그 이유는 아래와 같다.

  1. 로그를 애플리케이션 레벨에서 구조화하는 방식을 채택할 계획이기 때문이다.
    endpoint / userId / latency 등 주요 필드를 포함한 JSON 형태의 로그를 출력하면, 별도의 복잡한 파싱 없이도 Elasticsearch에서 필드 기반 검색이 가능해진다.

  2. 단일 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
'Spring/Spring 실습' 카테고리의 다른 글
  • [실시간 대용량 서비스] Prometheus 모니터링 시스템 실제 적용기
  • [실시간 대용량 서비스] 모니터링 시스템 구축은 왜 필요한가 ?
  • [실시간 대용량 서비스] JWT 인증에서 블랙리스트로도 충분한데, 왜 화이트리스트를 선택했을까?
  • [실시간 대용량 서비스] AccessToken / RefreshToken 분리 설계와 Redis 화이트리스트
stark77
stark77
하마의 IT 자기개발 이모저모, 백엔드 개발자로 거듭나기
  • stark77
    하마의 개발자 성장일기
    stark77
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 컴퓨터구조와 운영체제
        • 컴퓨터구조
        • 운영체제
      • SQL 기초
      • Spring
        • 백엔드 기초
        • Spring 실습
      • JAVA
        • Java 실습
      • HTML&CSS
        • HTML&CSS 실습
      • Git&GitHub
        • Git&GitHub 실습
      • 내배캠 끄적끄적
        • Today I Learned
      • 유용한 툴 및 사이트 정리
      • 취미
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    네트워크 기초
    RestTemplate
    Stomp
    git
    백엔드 기초
    프로세스와 쓰레드
    HTML&CSS
    BEAN
    다형성
    jsp
    MVC
    WebSocket
    Java 문법기초
    java
    String.format
    웹소켓
    객체지향
    Github
    백엔드 기초다지기
    SpringSecurity
    thymleaf
    경합조건과 교착상태
    실시간 데이터 처리
    JPA
    Spring
    Spriingboot
    for문
    algorithm
    Til
    객체지향프로그래밍
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
stark77
[실시간 대용량 서비스] 모니터링의 다음 단계: 로그 기반 관측 설계
상단으로

티스토리툴바