Prometheus와 Grafana를 활용한 자바 애플리케이션 모니터링

Prometheus 아키텍처

Prometheus는 모니터링 및 경고 시스템으로 다음과 같은 핵심 구성 요소를 가집니다:

  • 서버: 시계열 데이터 수집 및 저장
  • 클라이언트 라이브러리: 애플리케이션 통합용 (Micrometer 등)
  • Push Gateway: 일시적 서비스 데이터 수집
  • 익스포터: MySQL/Kafka 등 외부 서비스 모니터링
  • 경고 관리자: 웹훅 통합 경고 시스템

Micrometer 지표 수집

자바 애플리케이션 모니터링을 위한 핵심 도구로 Timer, Counter, Gauge 등 다양한 지표 유형을 제공합니다.

Grafana 시각화

다양한 데이터 소스를 지원하는 시각화 플랫폼으로:

  1. 데이터 소스 설정 (Prometheus/DB 등)
  2. 쿼리 방식 구성 (PromQL/SQL 등)
  3. 대시보드에서 차트/그래프로 시각화

Prometheus 배포

Windows:

  1. 공식 패키지 다운로드 후 압축 해제
  2. prometheus.yml 설정 파일 수정
  3. 실행 파일 실행 (기본 포트 9090)

CentOS:

wget https://github.com/prometheus/prometheus/releases/download/v2.30.0/prometheus-2.30.0.linux-amd64.tar.gz
tar -xvf prometheus-2.30.0.linux-amd64.tar.gz
nohup ./prometheus --config.file=prometheus.yml &

Grafana 배포

Windows:

  1. 공식 패키지 다운로드
  2. conf/defaults.ini 설정 수정
  3. 실행 파일 실행 (기본 포트 3000)

CentOS:

wget https://dl.grafana.com/oss/release/grafana-8.1.5-1.x86_64.rpm
yum install -y grafana-8.1.5-1.x86_64.rpm
systemctl start grafana-server

자바 애플리케이션 모니터링

Spring Boot 2.x 통합:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
  <groupId>io.micrometer</groupId>
  <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

설정 예시:

management.endpoints.web.exposure.include=prometheus
management.metrics.tags.app=${spring.app.name}
spring.app.name=my-service

Prometheus 설정

scrape_configs:
  - job_name: 'java-app'
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['app-server:8080']

설정 적용:

curl -X POST http://prometheus-host:9090/-/reload

서버 모니터링

Windows Exporter 설치 후 prometheus.yml에 타겟 추가:

- job_name: 'windows'
  static_configs:
    - targets: ['win-server:9182']

대시보드 커스터마이징

Grafana에서 데이터 소스 선택 → PromQL 쿼리 작성 → 시각화 유형 설정으로 사용자 정의 패널 생성 가능

태그: prometheus Grafana Micrometer SpringBoot JVM

7월 23일 19:14에 게시됨