프로메테우스??
애플리케이션에서 발생한 메트릭을 그 순간만 확인하는 것이 아니라 과거 이력까지 함께 확인하려면 메트릭을 보관하는 DB가 필요한데 이렇게 하려면 어디선가 메트릭을 지속해서 수집하고 DB에 저장해야 한다. 프로메테우스가 바로 이런 역할을 담당한다고 합니다.
출처: https://prometheus.io/docs/introduction/overview/
내가 사용하는 애플리케이션과 연동을 하려면 프로메테우스 포멧에 맞추어야 한다고 한다.
그리고 수집설정을 하면된다고 한다.
프로메테우스 - 애플리케이션 설정
build.gradle 추가
implementation 'io.micrometer:micrometer-registry-prometheus' //추가
실행
http://localhost:8080/actuator/prometheus
json 형태에서 포맷이 변경 된 모습으로 나온다.
# HELP tomcat_threads_config_max_threads
# TYPE tomcat_threads_config_max_threads gauge
tomcat_threads_config_max_threads{name="http-nio-8080",} 200.0
# HELP tomcat_sessions_alive_max_seconds
# TYPE tomcat_sessions_alive_max_seconds gauge
tomcat_sessions_alive_max_seconds 0.0
# HELP tomcat_cache_access_total
# TYPE tomcat_cache_access_total counter
tomcat_cache_access_total 0.0
# HELP jvm_info JVM version info
# TYPE jvm_info gauge
jvm_info{runtime="OpenJDK Runtime Environment",vendor="JetBrains
...
프로메테우스 - 수집 설정
prometheus.yml에다가
#추가
- job_name: "spring-actuator"
metrics_path: '/actuator/prometheus'
scrape_interval: 1s
static_configs:
- targets: ['localhost:8080']
앞의 띄어쓰기 2칸에 유의
job_name : 수집하는 이름이다. 임의의 이름을 사용하면 된다.
metrics_path : 수집할 경로를 지정한다.
scrape_interval : 수집할 주기를 설정한다.
targets : 수집할 서버의 IP, PORT를 지정한다.
이렇게 설정하면 프로메테우스는 다음 경로를 1초에 한번씩 호출해서 애플리케이션의 메트릭들을 수집한다.
보통 수집 주기는 10초에서 1분정도로 한다고 합니다.
설정이 끝났으면 프로메테우스 서버를 종료하고 다시 실행하자.
프로메테우스 연동 확인
- 프로메테우스 메뉴 Status Configuration 에 들어가서 prometheus.yml 에 입력한 부분이 추가되어 있는지 확인해보자. http://localhost:9090/config
- 프로메테우스 메뉴 -> Status Targets 에 들어가서 연동이 잘 되었는지 확인 http://localhost:9090/targets
참고
기본기능: https://prometheus.io/docs/prometheus/latest/querying/basics/
연산자: https://prometheus.io/docs/prometheus/latest/querying/operators/
함수: https://prometheus.io/docs/prometheus/latest/querying/functions/
그라파?
프로메테우스의 단점은 한눈에 들어오는 대시보드를 만들어보기 어렵다는 점이다. 이 부분은 그라파나를 사용하면 된다.
대시보드의 껍데기 역할이라고 생각하면 되는듯하다.
'프레임워크 > 스프링' 카테고리의 다른 글
Mockito와 BDDMockito (0) | 2024.03.20 |
---|---|
[Spring] MockMvc (0) | 2024.03.18 |
[Spring] actuator (0) | 2024.02.15 |
[SpringBoot] 라이브러리 관리 (0) | 2023.03.11 |
[Spring] AOP 프록시와 내부 호출 문제 해결 방안 3가지 (0) | 2023.01.22 |