반응형
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의 사용예제는 다음 블로그글에 정리하겠다.
반응형
'Spring' 카테고리의 다른 글
Junit 테스트 시 테스트 목록 보이게 하기(IntelliJ IDEA) (0) | 2021.12.19 |
---|---|
Spring Boot + Prometheus + Grafana를 이용한 모니터링(3/3) (0) | 2021.12.14 |
Spring Boot + Prometheus + Grafana를 이용한 모니터링(1/3) (2) | 2021.12.14 |
Spring Boot + FCM 웹 푸시 사용하기 (0) | 2021.12.02 |
Spring Boot Validation 어노테이션 정리 (0) | 2021.11.10 |