본문 바로가기
프로젝트/개인 프로젝트 리팩토링

[개인프로젝트 리팩토링] Actuator, Prometheus, Grafana 구축

by dal_been 2024. 8. 3.
728x90

이미 어느정도 모듈로 나누고 코드를 80%이상 짠 상태라서 모니터링 환경을 구축해보았다.

 


구조

 

구조라고 말하기에 애매하지만 Spring boot의 메트릭정보를 Prometheus가 수집하여 해당 내용을 Grafana가 시각화한다.

 

1. 디펜던시 추가

implementation 'org.springframework.boot:spring-boot-starter-actuator'
runtimeOnly 'io.micrometer:micrometer-registry-prometheus'

 

이후 localhost:{포트}/actuator에 접속해보면 

요렇게 제공하는 엔드포인트들이 나온다.

Prometheus에서 사용되는 메트릭을 노출시키기 위해 밑의 내용을 yml에 추가한다.

management:
  endpoints:
    web:
      exposure:
        include: prometheus

 

추가하게 되면 prometheus라는 엔드포인트가 노출된다. 해당 포인트로 들어가보면 밑밑 그림처럼 수집해갈 메트릭정보들이 나온다.

 

 

 

2. Prometheus 설치

 

메트릭 수집하고 저장하기 위해 Prometheus를 설치해보자. Prometheus라 Grafana 모두 docker를 이용해볼것이다.

나의 경우 docker desktop을 이용하여 yml을 수정하였다. (다만 그것보다는 파일로 해서 하는 것이 좋을듯..)

 

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: prometheus
  	metric_path: '/actuator/prometheus'
    static_configs:
      - targets: ['<springboot-app-host>:<springboot-app-port>']

 

  • scrape_interval : 메트릭을 수집할 주기
  • metric_path: 메트릭을 수집할 엔드포인트
  • targets : 메트릭을 수집할 호스트 정보
docker run -d -p 9090:9090 --name prometheus prom/prometheus

 

 

3. Grafana 설치

docker run --name grafana -d -p 9091:3000 grafana/grafana

 

 

접속하면 username과 password가 초기에 admin, admin으로 되어있다.

 

 

나는 이미 해서 되어있지만 Connections -> Add new data source를 클릭하고 Prometheus를 선택한다.

 

 

이후 Prometheus URL를 입력하고 (name은 맘대로) 하단에 save & test를 클릭하여 저장한다. (클릭시 실패 혹은 성공이 뜬다.)

 

이제 대시보드를 설정하기 위해 Dashboards -> New의 Import를 클릭한다.

내가 사용할 대시보드의 디자인의 url과 Id를 복붙한다.

대시보드는 https://grafana.com/grafana/dashboards/?search=spring+  여기로 들어가면 여러가지를 볼 수 있다.

 

 

다음 페이지에서 Prometheus에 방금 추가한 Prometheus Data Source를 선택하고 Import를 클릭한다.

 

 

그럼 선택한 대시보드로 메트릭정보들이 이쁘게 나올 것이다.

 


일단 그라파나랑 프로메테우스 어떻게 구축하는지 알아보았다.

내계획상 배포하게 된다면 하나의 인스턴스를 모니터링관련된것만 돌릴 것이다. 해당 모니터링 인스턴스가 셧다운 되도 다른 중요 인스턴스에 영향이 가면 안되기도 하고 사실 모니터링 중요하지만 인스턴스 스펙이 낮아도 될것같기 때문이다.