코드의 여백

프로메테우스(Prometheus) & 그라파나(Grafana) 알아보기

by rowing0328

Intro

이번 포스팅에서는 Prometheus와 Grafana에 대해 간략히 알아보는 시간을 가지려고 한다.

Prometheus는 오픈소스 모니터링 시스템으로, 다양한 시스템의 상태를 추적하고 분석할 수 있는 강력한 도구다.

또한, Grafana는 Prometheus와 연동해 데이터를 시각화하는 데 최적화된 대시보드를 제공하는 도구다.

 

이 두 도구가 어떤 역할을 하고, 어떻게 활용할 수 있는지 기초적인 내용을 살펴보자.

 

 

‘불을 훔치는 프로메테우스’(1637년, 캔버스에 유채, 스페인 마드리드미술관 소장)

Prometheus란

Prometheus는 그리스 신화에서 불을 인간에게 선사해 문명을 이끈 티탄 신이다.

이 신화적인 이름을 딴 오픈소스 모니터링 시스템 Prometheus는

개발자의 예지력과 지성을 높여주는 유용한 도구로 자리 잡았다.

 

이 도구를 사용하면 웹, 서버, 데이터베이스 등 다양한 시스템의 상태를 쉽게 분석할 수 있다.

또한, 특정 조건이 발생하면 경고를 보내 장애를 미리 예방할 수 있다.

 

 

Prometheus 구조

일반적인 모니터링 시스템은 메트릭(Metric)을 수집할 때,

대상 서버에서 중앙 서버로 데이터를 전송하는 Push 구조를 사용한다.

 

반면, Prometheus는 중앙 서버가 대상 서버로부터 메트릭을 가져오는

Pull 구조를 채택하고 있다.

 

메트릭(Metric)

시간에 따라 변하는 데이터를 의미한다.

CPU, 메모리, 스레드 사용률 등 시간에 따른 추이를 추적할 가치가 있는 데이터를 메트릭이라고 한다.

 

메트릭의 구조

  • name
    메트릭 이름
  • baseUnit
    단위
  • measurements
    측정값
  • availableTags
    태그 정보

 

 

Prometheus는 왜 이러한 방식을 채택했는가

모니터링 대상 서버가 부하가 높은 상황에서, 메트릭 정보를 Push 하는 과정에서 예기치 못한 문제가 발생할 수 있다.

 

Prometheus는 이러한 문제를 해결하고 대상 서버의 부담을 줄이기 위해,

필요할 때만 메트릭을 Pull하는 구조를 선택했다.

 

다만, Pull 방식 역시 단점이 존재한다.

 

모니터링 대상 변경 문제와 해결 방안

모니터링 대상이 가변적으로 변경될 경우, 대상 서버의 IP 주소를 알 수 없는 문제가 발생할 수 있다.

 

이 문제를 해결하기 위해 Service Discovery 시스템을 활용할 수 있다.

서버마다 고유의 DNS를 지정하고, 현재 가동 중인 DNS 목록을 기반으로 IP를 폴링 하는 구조를 사용하면 이러한 문제를 효과적으로 해결할 수 있다.

 

내부 IP 기반 서버 관리 방안

내부 IP로 작동하는 서버들은 각 서버가 Pushgateway로 메트릭을 Push하고,

Prometheus가 이를 Pull 하는 방식으로 관리할 수 있다.

 

 

Pushgateway란

Pushgateway는 단발성 또는 배치성 작업에 대한 메트릭을 수집하기 위해 설계된 Push 기반 컴포넌트다.

 

단발성 작업

단발성 작업은 특정 시점에 일회성으로 수행되는 작업을 말한다.

이 작업은 짧은 시간 안에 완료되는 경우가 많으며, 작업 완료 시간이응답 시간과 같은 메트릭을 수집하는 데 초점을 맞춘다.

 

사용 예시

  • API 요청 처리 시간 측정
  • 서버 부팅 시간 기록

 

배치성 작업

배치성 작업은 일정 주기로 반복되거나 대량 데이터를 처리하는 작업을 말한다.

이 작업은 상대적으로 긴 시간 동안 실행되며, 처리량, 자원 사용률과 같은 장기적인 메트릭을 수집하는 데 중점을 둔다.

 

사용 예시

  • 대규모 로그 데이터 분석
  • 주기적인 백업 작업

 

 

Alert Manager란

Alert Manager는 Prometheus에서 발생한 알람을 수신하고 관리하는 도구다.

알람을 필터링하고 그룹화한 뒤, 다양한 알림 수단(Slack, Email 등)으로 전달한다.

 

알림 기준은 어떻게 정하는가

알림은 Prometheus의 yml 파일에 정의된 rule을 기반으로 생성된다.

PromQL을 사용해 메트릭 데이터의 조건을 정의하고, 조건이 충족되면 알림이 발생한다.

간단한 알람 규칙은 Grafana 플랫폼을 통해 시각적으로 설정할 수도 있다.

 

 

Grafana란

Grafana는 Prometheus에서 수집한 데이터를 분석하고 모니터링을 지원하기 위한 시각화 플랫폼이다.

시계열 메트릭 데이터를 시각화하는 데 최적화된 대시보드를 제공하며, 다양한 데이터베이스와 연동할 수 있다.

 

Grafana의 주요 장점은 다양한 대시보드 템플릿을 지원한다는 점이다.

원하는 템플릿은 공식 사이트에서 가져와 쉽게 Import 할 수 있으며,

그래프를 그리는 과정도 간단히 마우스 클릭으로 완료할 수 있다.

 

 

마무리

이번 포스팅에서는 Prometheus와 Grafana의

기본적인 역할과 특징을 간단히 알아봤다.

 

특히, Prometheus가 Pull 방식을 채택해

대상 서버의 부하를 줄이고 안정적으로 메트릭을 수집한다는 점이 인상적이었다.

 

이 방식은 모니터링 시스템의 신뢰성을 높이는 중요한 요소라고 느껴졌다.

 

 

참고 자료 :

Prometheus 공식 Docs

 

Overview | Prometheus

An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.

prometheus.io

 

Prometheus Monitoring - An Introduction For Beginners

 

Prometheus Monitoring: Features, Components, Architecture & Metrics

Prometheus is a monitoring tool used for capturing and processing any time-series that contains only numbers.

k21academy.com

 

Grafana 공식 Docs

 

Introduction | Grafana documentation

Getting started with managing your metrics, logs, and traces using Grafana In this webinar, we’ll demo how to get started using the LGTM Stack: Loki for logs, Grafana for visualization, Tempo for traces, and Mimir for metrics.

grafana.com

블로그의 정보

코드의 여백

rowing0328

활동하기