Prometheus 아키텍처
Prometheus는 모니터링 및 경고 시스템으로 다음과 같은 핵심 구성 요소를 가집니다:
- 서버: 시계열 데이터 수집 및 저장
- 클라이언트 라이브러리: 애플리케이션 통합용 (Micrometer 등)
- Push Gateway: 일시적 서비스 데이터 수집
- 익스포터: MySQL/Kafka 등 외부 서비스 모니터링
- 경고 관리자: 웹훅 통합 경고 시스템
Micrometer 지표 수집
자바 애플리케이션 모니터링을 위한 핵심 도구로 Timer, Counter, Gauge 등 다양한 지표 유형을 제공합니다.
Grafana 시각화
다양한 데이터 소스를 지원하는 시각화 플랫폼으로:
- 데이터 소스 설정 (Prometheus/DB 등)
- 쿼리 방식 구성 (PromQL/SQL 등)
- 대시보드에서 차트/그래프로 시각화
Prometheus 배포
Windows:
- 공식 패키지 다운로드 후 압축 해제
- prometheus.yml 설정 파일 수정
- 실행 파일 실행 (기본 포트 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:
- 공식 패키지 다운로드
- conf/defaults.ini 설정 수정
- 실행 파일 실행 (기본 포트 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 쿼리 작성 → 시각화 유형 설정으로 사용자 정의 패널 생성 가능