
📍 Spring Actuator란?
📍 Spring Boot 모니터링 설정 구현
Prometheus, Grafana란? (+구현)을 읽고 오시면 이해가 3배 더 잘됩니다.
Spring Boot Actuator는 애플리케이션의 상태를 모니터링하고 관리하는 데 사용되는 라이브러리입니다.
Actuator를 사용하면 애플리케이션의 헬스 체크나 메트릭 등의 다양한 엔드포인트를 쉽게 노출할 수 있습니다.
애플리케이션의 상태와 성능을 모니터링하려면 헬스 체크가 필요합니다.
Actuator를 사용하면 애플리케이션의 상태를 쉽게 확인할 수 있고, Prometheus가 메트릭을 수집하여 Prometheus + Grafana 환경에서 시각화할 수 있습니다.
health 엔드포인트를 사용하여 애플리케이션의 상태를 확인할 수 있습니다.
이를 통해 애플리케이션의 가용성을 빠르게 파악할 수 있습니다.

Spring Boot 프로젝트에 Spring Actuator를 추가하여 수집한 메트릭을 Prometheus로 전달합니다. Prometheus에서 수집한 데이터들을 Grafana로 전달하여 시각화 하는 방식입니다.
Spring Boot는 로컬 노트북에서, Prometheus와 Grafana는 Docker 환경에서 실행했습니다.

Spring Boot에서 Spring Actuator와 Prometheus를 사용하려면 build.gradle 의존성에 각각을 추가해줘야합니다.

어느 endpoint를 허용할건지를 설정해주는 작업입니다.

prometheus.yml을 작성할 때 주의할 점은 static_configs의 targets에서 localhost:8080 으로 작성하면 안된다는 점입니다!
위의 프로젝트 구조에서 보신 것처럼 Spring Boot는 로컬 노트북에서, Prometheus와 Grafana는 Docker 환경에서 실행되기 때문에 localhost:8080으로 작성을 하면 컨테이너 내부의 8080 포트로 인식하게 됩니다.
따라서 위의 코드처럼 host.docker.internal:8080 으로 작성해야 합니다.

도커를 간편하게 실행하기 위해 docker compose를 사용했습니다.
특별한 설정은 없습니다.

잘 따라오셨다면 postman으로 http://localhost:8080/actuator를 치면 200 OK가 뜨는 것을 확인할 수 있습니다.

또 http://localhost:9090/targets를 치면 Prometheus에 타겟(spring-actuator)이 잘 설정된 것을 확인할 수 있습니다.
이제 Prometheus에서 가져온 데이터를 Grafana에서 시각화 해보겠습니다.
먼저 localhost:3000을 쳐서 Grafana에 접속합니다.
접속하면 로그인 화면이 뜨는데, 초기 아이디와 비밀번호는 모두 admin입니다.

왼쪽 바에 Connections > Data sources 를 클릭하고 Prometheus를 추가합니다.

그후 url에 prometheus:9090를 작성해줍니다.
이제 Grafana에서 대시보드를 추가해보겠습니다.

왼쪽 바에서 Dashboards> New > Import를 누릅니다.

Find and import dashboards for common application at grafana.com/dashboards 라고 뜨는데 어떤 대시보드를 import 할 지 고르라는 의미입니다.

Grafana Labs에 들어가면 위와 같이 여러 종류의 대시보드를 선택할 수 있습니다.
원하는 대시보드를 선택하고 해당 ID를 작성한 후 Load를 눌러줍니다.
먼저 Spring Boot 3.x Statistics 대시보드를 적용해보겠습니다.
Heap 사용량, CPU 사용량, HTTP 통계 등을 확인할 수 있습니다.
두 번째 사진은 /hello 컨트롤러를 만들어서 테스트를 해보았습니다.
위와 같은 명령어를 작성해주면 요청을 보낼 수 있습니다.
다음으로 Spring HTTP Example 대시보드를 적용해보겠습니다.

HTTP 응답에 관한 정보들을 확인할 수 있습니다.