[Grafana] 프로메테우스와 그라파나에 대하여(Prometheus, Grafana)

gomzu·2024년 5월 5일
post-thumbnail

포스트와 다른 의견은 언제나 환영입니다 👍

Intro

회사에서 새로운 기능에 대한 프로젝트를 진행하는데 TPS, Latency 등을 팔로우하기위해 메트릭을 수집하고 시각화하는 작업을 진행하려 합니다. 회사에서는 Prometheus, Grafana 로 메트릭 수집 및 모니터링 하고 있습니다. 제가 아직 두 서비스에 대한 배경지식이 별로 없기 때문에 지식도 채워보고 Spring boot 환경의 간단한 예제로 구현해볼까 합니다.
그럼 시작❗️



Prometheus

프로메테우스(Prometheus) 란 오픈소스 시스템 모니터링 및 경고 솔루션 입니다. 데이터의 모니터링을 위해 다양한 기능 및 쿼리 언어를 제공합니다. 후에 설명하겠지만 Grafana 라는 모니터링 도구와 연동하여 데이터를 수집 및 시각화할 수 있습니다.
Spring Boot 프로젝트에서 프로메테우스를 활용하여 메트릭을 수집하고 Grafana로 수집한 메트릭을 시각화합니다. 다음 사진과 같은 형태로 이루어지죠.

출처


특징

지금부터는 프로메테우스의 특징에 대해 설명해보겠습니다!
(설명하다가 이러저리 샐 수 있음 주의❗️)

다차원 데이터 모델

수집한 시계열 데이터를 다차원 레이블로 저장이 가능합니다.

  • 시계열 데이터란

    일정 시간 간격으로 측정된 값들이 시간순으로 기록된 데이터 입니다.
    시간을 X축으로, 측정값을 Y축으로 구성하여 보여집니다.
    시계열 데이터의 예시로는 주식가격, 날씨데이터, 네트워크 트래픽 등이 있죠. 
    특징 : 시간순서대로, 데이터간의 간격이 일정
  • 다차원 레이블이란

    시계열 데이터를 식별하고 그룹화하기 위해 프로메테우스에서 사용되는 개념입니다.
    각 시계열 데이터에 레이블을 부여해서 데이터를 필터링하고 원하는 방식으로 데이터를 볼 수 있습니다.
    
    (예시) Http 요청 시계열 데이터의 레이블
    - method(http 요청 메서드)
    - status(http 상태코드)
    - endpoint(요청 endpoint) 

풍부한 쿼리 언어

PromQL 이라는 쿼리 언어를 제공합니다.


유연한 알림 설정

프로메테우스에서는 사용자가 정의한 규칙에 따라 경고를 설정할 수 있습니다.
원하는 방식으로 알림을 설정하고 미리 시스템의 상태를 유연하게 감지하고 조치를 취할 수 있습니다.


다양한 수집 대상 지원

다양한 환경에서 사용할 수 있는 Exporter 를 통해 다양한 유형의 메트릭 수집이 가능합니다.
Exporter 는 수집한 데이터를 프로메테우스가 사용할 수 있는 형식으로 변환하여 노출하는 역할을 합니다.
다양한 종류의 Exporter들이 있으나 이 포스트에서 해볼 예제에서는 Exporter를 따로 구성할 필요는 없습니다.

그 이유는 Spring boot 에서 제공하는 Spring Boot Actuator 를 사용할 것이기 때문입니다.
Spring Boot Actuator 는 이미 프로메테우스 형식의 메트릭을 제공합니다.
프로메테우스가 Actuator의 엔드포인트로부터 메트릭을 스크랩하여 수집합니다.
다만 Spring boot 환경이 아니라면 작업하시는 프로젝트에서 Prometheus 모니터링을 지원하는지 확인해보고, 지원하지 않는다면 적절한 Exporter를 찾아서 적용해야 합니다.

Spring boot에서 메트릭을 수집하는 방법은 Actuator 만 있느냐? 그건 또 아닙니다.
회사에서는 Actuator가 아닌 프로메테우스가 제공하는 라이브러리인 simpleclient 를 사용하여 메트릭을 수집하더라구요.

시각화 및 대시보드

프로메테우스는 자체적인 시각화 기능은 제공하지 않습니다.
Grafana 같은 도구를 사용하여 모니터링 데이터를 시각적으로 표현할 수 있습니다.



Grafana

Grafana오픈소스 데이터 시각화 및 모니터링 도구입니다.
대시보드를 통해 사용자가 데이터를 유용하게 모니터링하고 분석할 수 있도록 지원해줍니다.


특징

지금부터는 Grafana의 특징에 대해 설명해보겠습니다!

다양한 데이터 소스 지원

Grafana는 Prometheus, InfluxDB, Elasticsearch, Graphite 등의 데이터베이스와 같은 다양한 데이터 소스로부터 데이터를 수집할 수 있는 환경을 지원합니다.


다양한 시각화 옵션

그래프, 표, 패널, 히트맵, 게이지 등 다양한 시각화 옵션을 제공하여 데이터를 시각적으로 표현할 수 있습니다.


대시보드

Grafana는 대시보드를 통해 사용자가 데이터를 모니터링하고 분석할 수 있도록 지원합니다.
사용자는 대시보드를 사용하여 여러 데이터 소스에서 데이터를 시각적으로 표현하고, 필터링하고, 그룹화 할 수 있습니다.


알람 및 경고

Grafana는 데이터에 기반한 알람 및 경고 기능을 제공합니다.
사용자는 특정 조건이나 임계값을 초과하는 경우에 대한 알람을 설정할 수 있습니다.



마치며

이번 포스트에서는 PrometheusGrafana의 개념과 특징에 대해서 살펴보았습니다.
정리하면,

  • Prometheus는 오픈소스 시스템 모니터링 및 경고 솔루션 이다
  • Prometheus에는 몇가지 특징이 있는데 다차원 데이터 모델, 풍부한 쿼리 언어, 유연한 알림 설정,
    다양한 수집 대상 지원, 시각화 및 대시보드
    등이 있다.
  • Grafana는 오픈 소스 데이터 시각화 및 모니터링 도구이다.
  • Grafana에는 몇가지 특징이 있는데 다양한 데이터 소스 지원, 다양한 시각화 옵션,
    대시보드, 알람 및 경고
    등이 있다.

profile
Log Of The Day

0개의 댓글