-
스프링 부트 모니터링 (3) - 프로메테우스와 그라파나 활용하기Web/환경설정 관련 2024. 5. 14. 18:23
프로메테우스란?
- 시간이 지남에 따라 추이가 변하는 데이터를 메트릭이라고 한다.
- 대표적으로 CUP 사용량, 메모리 사용량등을 생각할 수 있는데, SpringBoot는 메트릭의 수집을
- MicroMeter 모듈을 내장한 엑추에이터가 담당한다.
- 이때, 메트릭은 시간이 흐를수록 계속 쌓이게 되고, Application 메모리가 증가하여, 지속적으로 쌓이는 메트릭을 모두 커버할 수 없다.
- 따라서 메트릭 전용 외부 DB를 연결해 두는데, 이것이 프로메테우스이다.
- 프로메테우스는 마이크로미터가 수집한 메트릭 데이터를 일정시간 간격으로 PULL해서 DB에 수집한다.
- 이때, MicroMeter Prometheus구현체가 필요하다. 왜냐면, 마이크로미터는 수집한 메트릭을 JSON 형식으로 전달하지만,
- 프로메테우스는 JSON 데이터를 처리하지 못하기 때문이다. 따라서 중간에 메트릭을 변환해 줄 구현체가 필요하고, 이 역할을 MicroMeter Prometheus가 수행한다.
그라파나란?
- 오픈소스 메트릭 데이터 시각화 도구이다. 메트릭 분석 플랫폼으로 사용된다.
- 다양한 데이터 소스를 지원하고, 여러 시각화 대시보드를 제공하며, 경고 및 알림 기능을 제공한다.
- 이외에도 다양한 장점을 가지고 있다.
1. 측정 지표 프로메테이스로 수집
- 먼저 프로메테우스를 다운받아서 실행하자
- https://prometheus.io/download/
- 다운 받아서 압축을 푼 후에, prometheus.exe를 실행하자
- 후에 localhost:9090으로 접속하면 프로메테우스 대시보드에 접속할 수 있다.
- 프로메테우스 설치하고 압축을 푼 폴더에서 prometheus.yml파일을 찾아서 수정한다.
- 프로메테우스가 http://localhost:8080/actuator/prometheus와 같은 특정 경로 바라보도록 설정하는 단계이다.
#아래 내용 맨 밑에 추가 - job_name: "spring-actuator" metrics_path: '/actuator/prometheus' scrape_interval: 5s static_configs: - targets: ['localhost:8080']
- 전체 설정 예시는 아래와 같다
# my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: # - "first_rules.yml" # - "second_rules.yml" # A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: 'prometheus' # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ['localhost:9090'] - job_name: 'spring-actuator' metrics_path: '/actuator/prometheus' scrape_interval: 5s static_configs: - targets: ['localhost:8080']
- 위와 같이 입력 완료 후에 다시 프로메테우스를 키고 localhost:9090으로 이동해서
- Status -> Targets에 들어가면 아래와 같이 잘 연결 된 것을 볼 수 있다.
- 프로메테우스 DB에 쿼리를 한번 날려보자
- http_server_requests_seconds_count{uri="/actuator/prometheus"}
- 해당 경로로 http request가 요청한 횟수를 반환한다 (프로메테우스도 계속 요청을 날리기 때문에 꽤 많이 찍힌다)
- 그래프 탭을 통해 위와 같이 그래프 형식으로 볼 수 도 있다.
- 프로메테우스에서 사용하는 쿼리에 관한 내용은 다음 공식 문서를 참고하자
- https://prometheus.io/docs/prometheus/latest/querying/basics/
2. 그라파나 설치
- 아래 사이트에 들어가서 OS에 맞는 그라파나를 설치한다.
- 설치 완료 후 localhost:3000포트에 접속하면 그라파나 대시보드를 확인할 수 있다.
- admin, admin을 입력하고, 비밀번호를 알맞게 다시 설정하자
- 이와 같은 그라파나 홈에 접속할 수 있다.
3. 그라파나 프로메테우스 연동
- Add your first data source를 클릭
- 프로메테우스 선택
- 일단 설정 기본값으로 두고, 프로메테우스 url만 잘 입력한 후 save&Test를 누르자
- 다음으로 대시보드를 생성해보자
- 대시보드 생성을 누른 다음에 프로메테우스를 선택하면
- 아래와 같은 빈 화면이 나온다.
- 오른쪽 최상단에 Time series를 클릭하면, 보고 싶은 시각화 좌표를 선택할 수 있다.
- 그 하단에 Panel options에서 해당 대시보드에 대한 정보를 적을 수 있다.
- 화면 왼쪽에
- 밑에 메트릭을 고를 수 있다. 메트릭을 고른 후 쿼리를 작성할 수 있고,
- 옵션을 누르면, Format도 지정할 수 있다. 모두 지정한 후에 run queries를 실행하면, 시각화를 시작한다.
- 대시보드 구성 완료 후에 save를 하면, 해당 지표를 추적하고, 시각화하는 대시보드 완성이다!
대시보드 구성에 대한 더 자세한 사항은
https://grafana.com/docs/grafana/latest/getting-started/build-first-dashboard/
공식 문서를 참고하자
참고자료
https://lordofkangs.tistory.com/327
https://www.yes24.com/Product/Goods/122002340
'Web > 환경설정 관련' 카테고리의 다른 글
스프링 부트 모니터링(2.2) - Info 엔드포인트 탐구 (0) 2024.05.14 스프링 부트 모니터링(2.1) - Health 엔드포인트 탐구 (0) 2024.05.14 스프링 부트 모니터링 (1) - 액추에이터 기본 설정 (0) 2024.05.14 스프링 부트 - 실패 분석기 (0) 2024.05.14 스프링 부트 구성 - @Import, @Conditional 활용 (0) 2024.05.13