본문 바로가기

[Spring] Grafana와 Prometheus로 서버 모니터링 하기

민이(MInE) 2023. 7. 7.
반응형

개발자가 되어 프로그램을 개발할 때 개발하는 과정도 중요하지만 개발하고 난 후 프로그램의 오류가 발생했을 때 바로바로 인지하여 고치는 것 등 서비스 운영도 매우 중요합니다~

프로그램을 안정적으로 운영하기 위해서는 모니터링 시스템이 필요한데 모니터링 툴중에서 Spring을 할 때 많이 사용한다는 Actuator, Prometheus, Grafana에 대해서 알아보겠습니다!


Actuator

 

Spring Boot는 서버의 여러 지표들을 제공하는 Actuator라는것을 제공합니다. Actuator 메모리, CPU 사용량, 에러가 난 횟수처럼 서비스를 운영하는 데 도움이 되는 정보들을 제공하고 Grafana와 Prometheus와도 쉽게 연동할 수 있게 되어있습니다. 이러한 정보들은 API 형태로 호출 가능하고, json 형태로 보여집니다.

 

build.gradle에 의존성을 추가하고 http://localhost:8080/actuator를 호출하면 아래와 같이 엔드포인트들이 보이게 됩니다.

implementation 'org.springframework.boot:spring-boot-starter-actuator'
{"_links":{
	"self":{
		"href":"http://localhost:8080/actuator",
        "templated":false},
	"health-path":{
    	"href":"http://localhost:8080/actuator/health/{*path}",
        "templated":true},
	"health":{
    	"href":"http://localhost:8080/actuator/health",
        "templated":false}
       	}}

 


Prometheus

 

Actuator는 엔드포인트가 호출된 순간의 지표를 반환하지, 지속적으로 수집하고 저장하는 것이 아닙니다. 

여기서 지표를 지속적으로 수집하고 저장하게 해주는 것이 Prometheus입니다.

우선 개발머신에 Prometheus를 설치합니다.

저는 Homebrew를 이용해서 설치를 했습니다~

brew install prometheus

설치가 완료되면 prometheus를 실행시켜 줍니다.

brew services start prometheus

그리고 localhost:9090으로 prometheus에 접근할 수 있습니다.

 

 

다음으로 Spring Boot와 prometheus를 연동시켜 줄겁니다.

우선 의존성을 추가해줍시다~

implementation 'io.micrometer:micrometer-registry-prometheus'

그리고 application.properties에 아레 내용을 추가해줍니다. 모든 actuator 기능을 활성화하는 것입니다.

management.endpoints.web.exposure.include=*

그리고 서버를 재실행하고 다시 localhost:8080/actuator를 호출하여 확인해보면 prometheus관련 엔드포인트가 추가되어 있습니다!

 

"prometheus":{"href":"http://localhost:8080/actuator/prometheus","templated":false}

 


 

Grafana

프로메테우스에 저장된 지표들을 보기편하게 시각화해주는 툴이 바로 Grafana입니다.

Grafana설치도 Prometheus와 똑같이 해줍니다.

brew install grafana

그리고 prometheus와 마찬가지로 실행시켜줍니다.

brew services start grafana

그리고 localhost:3000 을 호출하하고 id:admin, pw:admin 을 입력해주면 grafana의 초기화면을 볼 수 있습니다.

Add your first data source을 눌러 Prometheus를 클릭해주고 URL에 http://localhost:9090을 입력하고 save&test를 눌러줍니다.

 

그리고 대시보드로 들어가 Import 로 들어가주고 https://grafana.com/grafana/dashboards/4701-jvm-micrometer/(많이 사용하는 대시보드)를 로드해줍니다

 

그럼 아래와 같이 여러 지표들을 보여주는 대시보드가 생성됩니다.

 


참고 자료

https://velog.io/@juhyeon1114/Spring-%EC%95%B1-%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81%ED%95%98%EA%B8%B0-w.-%ED%94%84%EB%A1%9C%EB%A9%94%ED%85%8C%EC%9A%B0%EC%8A%A4-%EA%B7%B8%EB%9D%BC%ED%8C%8C%EB%82%98

 

Spring 앱 모니터링하기 (w. 프로메테우스, 그라파나)

스프링 서버 감시하기 🧐

velog.io

 

반응형

댓글