제목: "Spring Boot + Prometheus + Grafana를 이용한 모니터링(2/3)"
작성자: tistory(devbksheen)
작성자 수정일: 2021년12월14일
링크: https://devbksheen.tistory.com/entry/Spring-Boot-Prometheus-Grafana%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%8123-1?category=900285
작성일: 2022년9월27일
제목: "[Prometheus] Prometheus 설치하기"
작성자: tistory(yoo11052)
작성자 수정일: 2022년7월27일
링크: https://yoo11052.tistory.com/201
작성일: 2022년9월27일
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
들을 활성화한다.info
, health
를 제외하고는 모두 disabled
처리 되어있다.endpoints.{id}
가 아닌 endpoint.{id}
로 설정해야 한다.management.endpoints.web.exposure.include:{id},{id},{id}
{id} endpoint
들을 활성화한다.management.endpoints.web.exposure.exclude
를 사용해서 제외시킬 수 도 있다.metrics.tags.application: {application name}
테스트해볼 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는 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 \
-p 9090:9090 \
-v {%상위경로%}/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus
컨테이너가 생성되고 실행됐으면 http://localhost:9090
으로 접속해보면 Prometheus 홈페이지가 나올것이다.
혹은 직접 설치를 해도 된다.
https://prometheus.io/download/
wget https://github.com/prometheus/prometheus/releases/download/v2.37.0/prometheus-2.37.0.linux-amd64.tar.gz
tar xzvf prometheus-2.37.0.linux-amd64.tar.gz
압축을 풀고 ./prometheus로 실행한다.
위 두가지 방법으로 실행 가능하고, 실행 후 9090포트로 접속하여 Status -> Targets 로 접속하면 아래와 같은 화면을 볼 수 있다.
global
scrape_interval
evaluation_interval
alerting
rule_files
scrape_configs
job_name
static_configs
targets