프로메테우스와 스프링 연결하기
애플리케이션 설정
스프링의 마이크로미터가 프로메테우스가 사용하는 포멧에 맞추어 메트릭을 만들어 준다.
각각의 메트릭들은 내부에서 마이크로미터 표준 방식으로 측정되고 있기 때문에 우리는 어떤 구현체를 사용할지 지정만 해주면 된다.
- build.gradle에 다음 내용 추가
마이크로미터 프로메테우스 구현 라이브러리를 추가하여 어떤 구현체를 사용할지 지정해준다.
이러면 스프링 부트와 액츄에이터가 자동으로 마이크로미터 프로메테우스 구현체를 등록해서 동작하도록 설정해준다.
implementation 'org.springframework.boot:spring-boot-starter-actuator' // 엑츄에이터
implementation 'io.micrometer:micrometer-registry-prometheus' // 프로메테우스
이제 엑츄에이터에 프로메테우스 메트릭 수집 엔드포인트( /actuator/prometheus )가 자동으로 추가된다.
/actuator/prometheus 엔드포인트로 들어가보면 모든 메트릭이 프로메테우스 포멧으로 만들어져 있다.
엑츄에이터와 프로메테우스 포멧 차이
- 프로메테우스는 . 대신에 _ 포멧을 사용한다. ( jvm.info → jvm_info )
- 로그수 처럼 지속해서 숫자가 증가하는 메트릭을 카운터라 한다. 프로메테우스는 카운터 메트릭의 마지막에는 관례상 _total 을 붙인다. ( logback.events → logback_events_total )
프로메테우스 수집 설정
프로메테우스가 애플리케이션의 /actuator/prometheus 를 호출해서 메트릭을 주기적으로 수집하도록 설정해보자.
1. 다운로드 받은 프로메테우스 폴더에 있는 prometheus.yml 파일을 수정
2. 파일을 열어서 다음 코드를 추가
- job_name : 수집하는 이름. ( 임의의 이름을 사용하면 된다. )
- metrics_path : 수집할 경로를 지정.
- scrape_interval : 수집할 주기를 설정.
- targets : 수집할 서버의 IP, PORT를 지정
지금은 테스트용도로 매트릭을 빠르게 확인하기 위해서 수집주기를 1초로 설정했다.
하지만 수집 주기가 너무 짧으면 애플리케이션 성능에 영향을 줄 수 있으므로 운영에서는 10s ~ 1m 정도를 권장한다.
3. 설정이 끝났다면 파일을 저장하고 프로메테우스를 재시작하고 프로메테우스에 접속해 추가한 설정 정보가 반영되어 있는지 확인한다. ( 프로메테우스 메뉴 → status )
4. 확인했다면 우리가 연동한 애플리케이션의 메트릭 정보가 있는 것을 확인하자. (프로메테우스 메뉴 → status → targets)
State 가 UP 으로 되어 있으면 정상, DOWN 으로 되어 있으면 연동 X
더 알아보기
[Grafana] 그라파나란? 대쉬보드 만들기 및 활용
참고자료 : 스프링 부트 - 핵심 원리와 활용
'◼ Spring' 카테고리의 다른 글
[Spring] Google OAuth 로그인 API 키 발급 및 구글 소셜 로그인 구현 (8) | 2023.05.30 |
---|---|
[Spring] 메트릭(matric) 직접 등록하기 (0) | 2023.05.24 |
[Spring] 마이크로미터(Micrometer)와 메트릭(Matric) 확인 (0) | 2023.05.23 |
[Spring] 스프링부트 엑츄에이터(Actuator)란? (0) | 2023.05.23 |
[Spring] @Profile - 각 환경마다 서로 다른 빈 등록 (0) | 2023.05.22 |