Grafana와 Prometheus를 이용한 모니터링

2024. 5. 4. 23:21프로젝트/[EATceed] 몸무게 증량 어플

728x90

 

모니터링은 시스템, 네트워크 그리고 서비스의 상태 및 성능을 지속적으로 감시 및 기록하는 프로세스이다.

모니터링 환경을 구축하는 이유가 많겠지만, 필자가 모니터링 환경을 구축한 이유는 시스템의 성능을 추적하기 위해서다.

 

 

모니터링 환경을 구축하는 방법을 알기 전에 구성요소들의 개념을 알아야한다.

 

Metric

Metric이란 모니터링을 위해 수집되는 측정 항목이나 지표를 말합니다. Metric은 CPU, 메모리 그리고 디스크 I/O 등의 지표는 물론 사용자가 특정 비즈니스 메트릭을 커스텀하게 만들 수도 있습니다.

 

Actuator

Actuator는 Spring Boot에서 제공하는 라이브러리로 여러 endpoint를 제공하여 애플리케이션을 쉽게 관리할 수 있도록 도와준다.

Atuator의 MicroMeter는 애플리케이션 내부의 다양한 Metric을 수집한다.

 

예를 들어, /actuator 로 요청을 보내면 여러 endPoint들이 나옵니다.

 

{
    "_links": {
        "self": {
            "href": "<http://localhost:8080/actuator>",
            "templated": false
        },
        "prometheus": {
            "href": "<http://localhost:8080/actuator/prometheus>",
            "templated": false
        },
        "health": {
            "href": "<http://localhost:8080/actuator/health>",
            "templated": false
        },
        "info": {
            "href": "<http://localhost:8080/actuator/info>",
            "templated": false
        },
        "conditions": {
            "href": "<http://localhost:8080/actuator/conditions>",
            "templated": false
        },
        "configprops-prefix": {
            "href": "<http://localhost:8080/actuator/configprops/{prefix}>",
            "templated": true
        },
        "loggers": {
            "href": "<http://localhost:8080/actuator/loggers>",
            "templated": false
        },
        "heapdump": {
            "href": "<http://localhost:8080/actuator/heapdump>",
            "templated": false
        },
        "threaddump": {
            "href": "<http://localhost:8080/actuator/threaddump>",
            "templated": false
        },
        
       	...
        
    }
}


이에 관한 상세한 설명은 공식문서에 제공되어 있습니다.

Production-ready Features

 

Production-ready Features

You can enable recording of HTTP exchanges by providing a bean of type HttpExchangeRepository in your application’s configuration. For convenience, Spring Boot offers InMemoryHttpExchangeRepository, which, by default, stores the last 100 request-response

docs.spring.io

 

Prometheus

 

Prometheus는 Actuator의 MicroMeter가 수집한 Metric Data를 일정 시간 간격으로 Pull 을 하여 저장한다.

여기서 중요한 것은 MicroMeter는 Metric 데이터를 JSON 형식으로 전달하지만 Prometheus는 JSON 데이터를 처리하지 못 하여 변환하는 과정이 필요하다.


따라서, Prometheus 처리할 수 있는 데이터 형식으로 바꿔주는 것이 필요하다.

 

Grafana

Grafana는 Prometheus에서 수집한 Meric 데이터를 시각화해주는 오픈 소스이다.

구체적으로는, Prometheus에게 쿼리를 날리면 Prometheus에 저장된 Metric 데이터를 가지고 시각화를 해준다.

Grafana에서는 원하는 DashBoards를 Import 하여 사용할 수 있다.

 

아래는 필자가 Import한 DashBoards 캡쳐본이다.




흐름 정리

 

1. SpringBoot Application에서 Actuator의 MicroMeter는  Metric Data들을 수집한다.

2. Prometheus는 Metric Data를 일정 시간 간격으로 Pull해 저장한다.

3. Grafana는 Prometheus의 데이터를 시각화 한다.

 

 

 

지금까지 구축할 모니터링 환경에 대한 간단한 개념을 알아보았습니다.

다음 포스팅에서는 Docker를 사용하여 모니터링 환경을 구축하는 법을 다루겠습니다.

 

감사합니다~

 

 

728x90