스프링 로그 분석 환경 구축 Elasticsearch + Kibana 설치 (Logging - 1)

2025. 11. 21. 22:27·Infra/LogBack

 

 

AWS EC2에 배포된 Spring Boot 서버에서는 사용자의 행동, API 요청 흐름, 에러 발생 지점 등을 모두 로그(Log) 로 기록한다.
이 로그는 단순한 문자열이 아니라, 서비스 운영에서
문제 파악 → 원인 분석 → 병목 추적 → 장애 대응 → 성능 개선까지 모든 과정에 필수적인 핵심 데이터다.

 

 

문제는, 이렇게 발생하는 로그가 시간이 지날수록 서버 내부에서만 누적되고, 파일로만 남아있으면:

  • 특정 사용자 요청 흐름을 찾기 어렵고
  • 동일한 traceId를 기준으로 묶어서 보기 힘들고
  • 에러 발생 전후의 로그를 빠르게 조회하기 어렵고
  • 서버가 늘어나면 로그를 서버마다 직접 들어가서 확인해야 하고
  • 장애가 발생해도 빠르게 원인을 찾기 힘들다

 

 

이런 문제를 해결하기 위해 AWS에서 생성되는 Spring Boot 로그를 라즈베리파이에 설치한 Elasticsearch + Kibana(ELK) 로 수집하여 실시간으로 분석하고 시각화하는 로그 파이프라인을 구축하려 한다.

Loki 또한 로그 수집 도구이지만, Grafana와 함께 사용할 때 시계열 조회는 가능해도 복잡한 JSON 조회, 분석, Dashboard 구성은 제한적이기 때문에 ELK stack(Elastic + Kibana) 을 선택했다.

 

 

 

Elasticsearch 역할 (EL) 

  • 로그/데이터를 저장하고 검색하는 DB + 검색엔진
  • 로그 파이프라인(수집 → 가공 → 저장) 역할

 

Kibana 역할 (K)

Elasticsearch에 저장된 로그·데이터를 사람이 보기 좋게 시각화하는 “웹 대시보드”

  • 대시보드 제공 (차트, 그래프, 로그 테이블 등)
  • 검색 필터링 (쿼리로 로그 검색)
  • Elastic Stack 설정 관리
  • 알람 설정 가능
  • Dev Tools 콘솔에서 직접 Elasticsearch 쿼리 실행

 

 

 

전체적인 로그 시스템 파이프라인 흐름 (Architecture)

Client 요청
     ↓
AWS Spring Boot 서버
(Logback JSON 로그 생성 + TraceId 포함)
     ↓
로그 파일 생성 (/app/logs/info, warn, error)
     ↓
AWS에서 Filebeat를 사용해 Raspberry Pi로 로그 전송
     ↓
- Raspberry Pi -
Elasticsearch + Kibana 
(로그 저장 / 검색 인덱스 생성)  (로그 시각화 / 분석 / Dashboard 구성)

 

 

 

 

설치

1. Elasticsearch와 Kibana가 동일한 가상 네트워크 안에서 통신할 수 있도록 Docker 네트워크 생성

( 네트워크를 만들어두면, 컨테이너끼리 http://elasticsearch:9200처럼 서비스 이름으로 직접 접근할 수 있다.)

docker network create elk

 

 

 

2. Elasticsearch 설치

docker run -d \
--name elasticsearch \
--net elk \
-p 9200:9200 \
-e "discovery.type=single-node" \
-e "xpack.security.enabled=false" \
-e "ES_JAVA_OPTS=-Xms1g -Xmx1g" \
-v esdata:/usr/share/elasticsearch/data \
docker.elastic.co/elasticsearch/elasticsearch:8.13.4

 

 

 

3. Kibana 설치

docker run -d \
--name kibana \
--net elk \
-p 5601:5601 \
-e "ELASTICSEARCH_HOSTS=http://elasticsearch:9200" \
docker.elastic.co/kibana/kibana:8.13.4

 

 

 

마지막으로 라즈베리파이 ip와 kibana 포트 5601을 붙여 접속하면 Kibana에 접속 가능하다. ( xxx.xxx.xxx.xx:5601 )

'Infra > LogBack' 카테고리의 다른 글

라즈베리파이에 Loki + Grafana로 로그 수집 시스템 구축하기  (0) 2025.12.22
Spring Boot + Logback 구조적 JSON 로그 만들기 (Logging - 2)  (0) 2025.11.29
FileBeat를 활용해 로그 전송 (Loggin - 3)  (0) 2025.11.22
'Infra/LogBack' 카테고리의 다른 글
  • 라즈베리파이에 Loki + Grafana로 로그 수집 시스템 구축하기
  • Spring Boot + Logback 구조적 JSON 로그 만들기 (Logging - 2)
  • FileBeat를 활용해 로그 전송 (Loggin - 3)
kimfishes
kimfishes
kimfishes 님의 블로그 입니다.
  • kimfishes
    kimfishes 님의 블로그
    kimfishes
  • 전체
    오늘
    어제
    • 전체 (18) N
      • Infra (5)
        • AWS (0)
        • LogBack (4)
      • Spring Boot (13) N
        • LLM (4) N
      • 일상 (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    spring ai
    LLM
    Pre-Signed URL
    ELK
    loging
    로깅
    Redis
    UUID v7
    Qdrant
    pgvector
    promtail
    traceId
    분산 락
    cache stampede
    스프링 알림 시스템
    캐시 스탬피드
    Discord 알림 연동
    ollama
    실시간 알림 시스템
    Spring boot
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
kimfishes
스프링 로그 분석 환경 구축 Elasticsearch + Kibana 설치 (Logging - 1)
상단으로

티스토리툴바