Spring Boot + Prometheus + Grafana를 이용한 모니터링(2/3)

Spring Boot + Prometheus + Grafana를 이용한 모니터링(2/3)

반응형

Prometheus, Grafana에 대한 것은 이전 블로그글에서 확인하면 된다.

Spring Boot Project 생성 및 설정

Spring Boot Project(Gradle)를 생성하고 build.gradle에 의존성을 주입해준다.

dependencies { ... implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'io.micrometer:micrometer-core' implementation 'io.micrometer:micrometer-registry-prometheus' ... }

application.yml에 다음과 같이 설정한다.

spring: application: name: monitoring management: endpoint: metrics: enabled: true prometheus: enabled: true endpoints: web: exposure: include: health, info, metrics, prometheus metrics: tags: application: ${spring.application.name}

management.endpoint.{id}.enabled: true

endpoint들을 활성화 한다.

web 과 관련된 endpoint 들은 info , health 를 제외하고는 모두 disabled 처리 되어있다.

Boot 2.0 이상에서는 endpoints.{id}가 아닌 endpoint.{id}로 설정해야 한다.

management.endpoints.web.exposure.include: {id}, {id}, {id}

{id} endpoint들을 활성화한다.

management.endpoints.web.exposure.exclude 를 사용해서 제외시킬 수 도 있다.

metrics.tags.application: {application name}

metic application 정보를 설정한다.

테스트해볼 endpoint를 만들고 서버를 가동시킨다.

@RestController public class MetricsController { @GetMapping("/end-point1") public String endPoint1() { return "Metrics for endPoint1"; } @GetMapping("/end-point2") public String endpoint2() { return "Metrics for endPoint2"; } }

Prometheus 설치

Prometheus는 docker로 설치할 것 이다.

prometheus.yml을 생성해 다음과 같이 작성한다.

global: scrape_interval: 10s # 10초마다 매트릭을 수집 default 1분 evaluation_interval: 1m # 1분마다 규칙을 평가 default 1분 external_labels: # 외부 시스템에 표시할 이 서버의 레이블 monitor: 'devbeekei-monitor' rule_files: # 규칙을 로딩하고 evaluation_interval 설정에 따라 정기적으로 평가한다. # - "first.rules" # - "second.rules" scrape_configs: - job_name: 'monitoring-app' # 잡 이름 metrics_path: '/actuator/prometheus' # 메트릭을 수집할 path 설정 static_configs: - targets: ['host.docker.internal:8080'] # 도커 인스턴스 내부 호스트:8080

Spring boot Application이 기본 포트인 8080으로 가동하고 있기 때문에 targets을 8080으로 잡아준다.

이제 도커로 Prometheus를 설치한다.

$ docker run -d -p 9090:9090 -v {prometheus.yml 파일 경로}/prometheus.yml --name prometheus prom/prometheus

도커의 명령어가 낯설다면 이전 도커 블로그 글을 참고하면 된다.

컨테이너가 생성되고 실행됬으면 http://localhost:9090으로 접속해보면 Prometheus 홈페이지가 나올것이다.

Status -> Targets으로 접속해보면 prometheus.yml에 설정한대로 활성화 된 것을 확인할 수 있다.

아까전에 만들었던 Test Endpoint에 접속한 후 http_server_requests_seconds_max를 검색해 메트릭을 잘 수집되고 있는지 확인해보자.

Prometheus만 사용하여 모니터링하기엔 너무나 역부족이다.

이 메트릭 정보들을 Grafana를 이용해 시각화하여 볼것이다.

Grafana의 사용예제는 다음 블로그글에 정리하겠다.

반응형

from http://devbksheen.tistory.com/182 by ccl(A) rewrite - 2021-12-14 18:27:40