본문 바로가기

Study Information Technology

Spring Boot와 Prometheus Grafana 통합 실시간 모니터링과 시각화

728x90
반응형

Spring Boot와 Prometheus, Grafana 통합: 실시간 모니터링과 시각화

Overview

Spring Boot 애플리케이션의 모니터링과 성능 분석은 개발 및 운영에 있어 매우 중요한 요소입니다. Prometheus와 Grafana는 이 과정을 더욱 원활하게 만들어주는 두 가지 강력한 도구입니다. Prometheus는 메트릭 수집 및 저장을 담당하며, Grafana는 이 데이터를 시각화하여 대시보드를 구성합니다. 이번 포스팅에서는 Spring Boot 애플리케이션에 Prometheus와 Grafana를 통합하는 방법을 자세히 설명하겠습니다.

1. Spring Boot 애플리케이션 설정

Spring Boot 애플리케이션에 Prometheus 메트릭스를 통합하기 위해서는 먼저 Spring Actuator와 Micrometer 라이브러리를 사용해야 합니다. Micrometer는 다양한 모니터링 시스템과의 통합을 위한 API를 제공합니다.

1.1. 의존성 추가

Maven을 사용하는 경우, pom.xml 파일에 아래의 의존성을 추가합니다.

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

Gradle을 사용하는 경우, build.gradle 파일에 아래의 의존성을 추가합니다.

implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'io.micrometer:micrometer-registry-prometheus'

1.2. 프로퍼티 설정

application.yml 또는 application.properties 파일에 Prometheus 관련 설정을 추가합니다.

management:
endpoints:
web:
exposure:
include: 'prometheus'
metrics:
export:
prometheus:
enabled: true

위 설정으로 Prometheus 엔드포인트를 노출하고, 메트릭스를 Prometheus가 수집할 수 있도록 합니다.

2. Prometheus 설치 및 설정

Prometheus는 메트릭 수집기를 설정하는 데 사용됩니다. Prometheus를 설치하고 설정 파일을 구성하는 과정은 다음과 같습니다.

2.1. Prometheus 다운로드

Prometheus의 공식 웹사이트에서 최신 버전을 다운로드합니다. Prometheus 다운로드

2.2. 설정 파일 작성

Prometheus의 설정 파일인 prometheus.yml을 작성합니다. 아래는 예시입니다.

global:
scrape_interval: 15s # 메트릭 수집 주기

scrape_configs:
- job_name: 'spring-boot-app'
static_configs:
- targets: ['localhost:8080'] # Spring Boot 애플리케이션이 실행 중인 주소

이 파일에서 scrape_interval은 Prometheus가 메트릭을 수집하는 주기를 설정합니다. Spring Boot 애플리케이션이 localhost:8080에서 실행 중이라는 가정하에 작성된 설정입니다.

2.3. Prometheus 실행

명령줄에서 Prometheus를 실행합니다.

./prometheus --config.file=prometheus.yml

3. Grafana 설치 및 설정

Grafana는 Prometheus로부터 수집한 메트릭을 시각화하는 도구입니다. Grafana 설치 및 대시보드 구성은 다음과 같습니다.

3.1. Grafana 다운로드

Grafana의 공식 웹사이트에서 설치 파일을 다운로드합니다. Grafana 다운로드

3.2. Grafana 실행

Grafana를 설치한 후, 서버를 실행합니다. 기본적으로 localhost:3000에서 실행됩니다.

systemctl start grafana-server

3.3. 데이터 소스 추가

  1. Grafana 웹 인터페이스에 로그인합니다 (기본 사용자명과 비밀번호는 admin/admin).
  2. 사이드바에서 Configuration -> Data Sources를 선택합니다.
  3. Add data source 버튼을 클릭한 후, Prometheus를 선택합니다.
  4. Prometheus의 URL을 입력합니다 (예: http://localhost:9090).
  5. Save & Test 버튼을 클릭하여 연결이 성공적으로 이루어졌는지 확인합니다.

4. 대시보드 구성

이제 Grafana에서 Spring Boot 애플리케이션의 메트릭을 시각화할 준비가 되었습니다. 대시보드를 구성하는 과정은 아래와 같습니다.

4.1. 새 대시보드 생성

  1. 사이드바에서 + 아이콘을 클릭하고 Dashboard를 선택합니다.
  2. Add new panel을 클릭하여 새로운 패널을 추가합니다.

4.2. 메트릭 쿼리 작성

패널에서 Prometheus 쿼리를 작성하여 원하는 메트릭을 선택합니다. 예를 들어, 애플리케이션의 HTTP 요청 수를 모니터링하고 싶다면 아래와 같은 쿼리를 사용할 수 있습니다.

http_server_requests_seconds_count

4.3. 시각화 설정

패널의 시각화 유형을 선택하고, 색상, 축, 레이블 등을 설정하여 원하는 형태로 데이터를 시각화합니다. 모든 설정이 완료되면 Apply 버튼을 클릭하여 대시보드에 추가합니다.

5. 에러 처리 및 문제 해결

모니터링 과정에서 발생할 수 있는 몇 가지 일반적인 에러와 그 해결 방법을 소개합니다.

5.1. Prometheus 메트릭 수집 실패

Prometheus가 Spring Boot 애플리케이션의 메트릭을 수집하지 못하는 경우, 다음과 같은 점을 확인해야 합니다.

  • Spring Boot 애플리케이션이 정상적으로 실행되고 있는지 확인합니다.
  • prometheus.yml 파일의 targets에 올바른 주소와 포트가 설정되어 있는지 확인합니다.
  • curl 명령어로 http://localhost:8080/actuator/prometheus 엔드포인트에 접근하여 메트릭이 정상적으로 노출되고 있는지 확인합니다.

5.2. Grafana에서 메트릭 불러오기 실패

Grafana에서 메트릭이 불러와지지 않는 경우, 다음 사항을 점검합니다.

  • Grafana의 데이터 소스 설정에서 Prometheus의 URL이 올바른지 확인합니다.
  • Prometheus가 정상적으로 실행되고 있는지 확인하고, 쿼리가 올바른지 검토합니다.

결론

Spring Boot와 Prometheus, Grafana를 통합하여 실시간으로 애플리케이션의 메트릭을 모니터링하고 시각화하는 것은 매우 유용합니다. 이 과정은 애플리케이션의 성능을 분석하고 문제를 조기에 발견하는 데 큰 도움을 줍니다. 이러한 도구들을 활용하면 더욱 효과적으로 애플리케이션을 운영할 수 있습니다.

참고문서

반응형