포트폴리오목록으로

Prometheus + Grafana

· Updated

모니터링 서비스

CloudWatch

녹색 기둥 모양 AWS CloudWatch 로고

  • AWS의 각종 리소스 및 해당 리소스 내에서 실행되는 애플리케이션에 대한 실시간 모니터링이 가능
  • AWS EC2와 연계하기 쉽고 대시보드, 알림, 통합 로그 등 다양한 기능을 지원함

ELK 스택(Elasticsearch, Logstash, Kibana)

+ Kafka(실제로 구현한 서비스)

Spring Boot 로그가 Kafka·Logstash·Elasticsearch를 거쳐 Kibana에 표시되는 로그 수집 구성

ELK Stack: Elasticsearch, Kibana, Beats, Logstash

  • 로그 모니터링에 특화된 Elasticsearch, Logstash, Kibana 세 개를 함께 사용하는 ELK 스택
  • Elasticsearch로 인해 유연한 로그 분석이 가능하다. 검색 및 필터링 기능이 강력함
  • 메트릭 데이터보다는 로그 처리에 특화되어 있음

Prometheus + Grafana

횃불 모양 Prometheus 로고

주황색 나선 모양 Grafana 로고

  • 서버 메트릭 수집 및 시각화를 위해 함께 사용
  • Prometheus는 서버 메트릭을 처리하며 Grafana를 함께 사용하면 이 메트릭 데이터를 더 효과적으로 시각화할 수 있음

세로 막대 형태의 모니터링 도구 로고

  • Promtail, Loki를 각각 Application Server, Monitoring Server에 설치하면 SpringBoot App에서 발생시킨 로그 데이터를 Monitoring Server에서 Grafana가 처리 가능한 형태로 가공하고 저장할 수 있음 (Loki Stack)

SpringBoot Actuator + Prometheus

Web Server Side

  • build.gradle에 애플리케이션 모니터링을 위해 actuator를 추가하고 prometheus를 위한 micrometer를 추가하면 별도의 세부 설정 없이도 관심을 가질 만한 대부분의 서버 메트릭을 수집해줌
Text

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-actuator'
	implementation 'io.micrometer:micrometer-registry-prometheus'
}
  • application.yml
YAML

management:
  endpoints:
    web:
      exposure:
        include: prometheus
  endpoint:
    prometheus:
      enabled: true
  • 메트릭으로 포함할 수 있는 사항들
    • CPU 사용량
    • GC
    • HTTP 요청, 응답 시간
    • DataSource
    • 가동 시간
    • Logback 관련
      • Logback으로 남긴 로그 자체를 볼 수는 없음
  • /actuator/prometheus 에 접속하면 상상할 수 있는 대부분의 서버 메트릭을 이미 수집하는 것을 볼 수 있음

CPU 사용량과 JVM 버퍼·GC 지표가 HELP·TYPE 주석과 수치로 노출된 Prometheus 텍스트 형식

actuator를 사용하는 방식을 선택한다면 외부인이 접속 가능한 endpoint를 하나 여는 것과 같으므로 보안에도 신경을 써야 함

Nginx와 같은 Reverse Proxy로 접근을 제한하거나 Spring Security, 혹은 IP Whitelisting과 같은 절차를 추가해 주는 것이 좋음

Prometheus

  • WAS가 만든 데이터를 Monitoring Server의 Prometheus에서 수집해 Grafana가 시각화할 수 있는 형태로 가공하도록 함

  • prometheus.yml

    수집 주기와 scrape_configs, localhost 수집 대상을 지정한 Prometheus YAML 설정 화면

    • 15초마다 설정된 job들에 대한 데이터를 수집
    • 설정한 job이 수집하는 데이터
      1. Monitoring Server의 Prometheus 프로세스에 대한 Metric
        • 메모리 사용, 처리량, 쿼리 성능 등을 포함
      2. 추가적으로 설치한 Node Exporter가 수집하는 Monitoring Server의 CPU, RAM, Disk 등의 리소스
      3. 목표한 Spring Boot App의 actuator로 열어둔 endpoint를 통한 데이터
  • 각 job에 대한 scrape 주기 등을 더 세밀하게 조정할 수 있음

Grafana

Spring Boot 3.x Statistics | Grafana Labs

  • Prometheus 자체적으로도 기본적인 시각화가 가능함
  • 보다 사용자에게 편한 형태는 Grafana에서 제공함
    • 다양한 대시보드 템플릿을 손쉽게 선택해서 사용할 수 있음

CPU·부하 평균·JVM 힙·GC 사용량 그래프를 모은 Grafana 대시보드

가동 시간·메모리·파일 디스크립터와 CPU·메모리 그래프를 보여주는 Grafana 대시보드

  • Prometheus 자체에 대한 데이터도 별도의 대시보드로 시각화할 수 있음

  • /lib/systemd/system/prometheus.service

    Prometheus 실행 파일·설정 파일 경로와 재시작 정책을 지정한 systemd 서비스 설정

  • prometheus에 대한 추가적인 설정은 프로세스를 실행시킬 때 옵션을 주면 됨

  • 스토리지 관련 옵션

    • 기본 설정에서는 데이터를 15일간 유지함
    Text

    prometheus --config.file=prometheus.yml --storage.tsdb.retention.time=30d
    
privacy.md

개인정보 처리방침

이 사이트는 김상훈의 포트폴리오와 기술 블로그입니다. 회원가입, 댓글, 결제 기능은 제공하지 않습니다.

방문 분석

공식 운영 도메인에서 Google Analytics 4, Vercel Web Analytics와 Speed Insights를 사용해 페이지 방문, 유입 경로와 성능을 확인합니다. 개발·미리보기 환경에는 분석 도구를 활성화하지 않습니다.

Google Analytics는 브라우저 식별을 위해 쿠키를 사용할 수 있으며 페이지 URL, 브라우저·기기 정보와 상호작용을 처리합니다. URL과 입력 내용에 이름, 이메일 등 개인정보를 포함하지 마세요. 이 사이트는 이메일이나 연락처를 분석 이벤트로 직접 전송하지 않습니다.

Vercel 분석 도구는 방문 통계와 로딩·응답 성능을 처리합니다. Google과 Vercel의 실제 보관 기간 및 처리는 각 서비스 설정과 정책에 따릅니다.

외부 콘텐츠와 브라우저 저장

블로그에 포함된 외부 이미지는 해당 이미지 서버에서 불러오며 해당 서버에 접속 정보가 전달될 수 있습니다. 글꼴은 이 사이트 서버에서 제공합니다. 테마 선택은 브라우저 로컬 저장소에 저장됩니다.

문의

이메일로 보낸 내용은 문의에 답변하는 데 사용됩니다. 문의: rlatkdgns042@naver.com

· © 2026 Sanghun Kim