본문 바로가기
  • 테크에 관한 모든 것.
IT

Prometheus & Grafana : 모니터링과 시각화의 완벽한 조합

by @TA 2024. 4. 9.
Prometheus(프로메테우스)와 Grafana(그라파나)는 모니터링 및 시각화의 완벽한 조합을 제공하여 시스템 및 서비스의 성능을 향상하고 문제를 신속하게 해결할 수 있도록 도와줍니다.

이번 포스팅에서는 이를 사용하여 뛰어난 모니터링 환경을 구축하고, 시스템의 안정성과 신뢰성을 높이는 방법에 대해 알아보겠습니다 :)

 

프로메테우스

프로메테우스(Prometheus)는 클라우드 및 온프레미스 환경에서 시스템 및 서비스를 모니터링하고 경고를 생성하는 데 사용되는 오픈 소스 모니터링 및 경고 도구입니다. SoundCloud에서 개발되었으며, CNCF(Cloud Native Computing Foundation)의 프로젝트로서 현재는 커뮤니티에 의해 개발 및 유지보수되고 있습니다.

 

프로메테우스는 다음과 같은 주요 특징을 갖고 있습니다.

다차원 데이터 모델
프로메테우스는 데이터를 메트릭으로 수집합니다. 메트릭은 이름-값 쌍으로 표현되는 시계열 데이터입니다. 이러한 다차원 데이터 모델은 데이터를 강력하게 쿼리하고 집계하는 데 유용합니다.

PromQL 쿼리 언어
프로메테우스는 PromQL이라는 자체 쿼리 언어를 제공합니다. 이를 사용하여 메트릭 데이터를 쿼리하고 집계할 수 있습니다. PromQL은 강력한 쿼리 기능을 제공하여 데이터를 다양한 방법으로 분석할 수 있습니다.

다양한 서비스 지원
프로메테우스는 다양한 서비스와 시스템을 모니터링할 수 있습니다. 이를 위해 다양한 Exporter를 통해 서비스에서 메트릭을 수집할 수 있습니다. 또한, 커뮤니티에서는 다양한 Exporter가 개발되어 있습니다.

플러그인 기반 아키텍처
프로메테우스는 플러그인 기반 아키텍처를 사용하여 확장이 가능합니다. 이를 통해 사용자는 필요에 따라 프로메테우스 기능을 확장하고 사용자 정의할 수 있습니다.

동적 서비스 디스커버리
프로메테우스는 다양한 클라우드 및 컨테이너 환경에서 동적으로 서비스를 발견할 수 있는 기능을 제공합니다. 이를 통해 새로운 서비스가 추가되거나 변경되는 환경에서도 쉽게 모니터링을 유지할 수 있습니다.

경고 및 알림 관리
프로메테우스는 메트릭에 대한 경고 규칙을 정의하고 경고를 생성할 수 있는 기능을 제공합니다. 이를 통해 시스템의 이상을 신속하게 감지하고 대응할 수 있습니다.

프로메테우스와 그라파나

프로메테우스(Prometheus)와 그라파나(Grafana)는 모두 시스템 및 서비스의 모니터링에 사용되는 도구입니다. 그러나 두 도구는 목적과 기능 측면에서 다소 차이가 있습니다. 아래에서 두 도구의 공통점과 차이점을 설명하겠습니다.

 

공통점

시각화 및 대시보드

프로메테우스와 그라파나 모두 메트릭 데이터를 시각화하고 대시보드를 만드는 기능을 제공합니다. 이를 통해 사용자는 모니터링 데이터를 시각적으로 분석하고 이해할 수 있습니다.

 

다양한 데이터 소스 지원

두 도구 모두 다양한 데이터 소스와 통합하여 데이터를 시각화할 수 있습니다. 예를 들어, 프로메테우스는 자체 데이터베이스를 사용할 수 있지만, 그라파나는 InfluxDB, Elasticsearch, MySQL 등 다른 데이터베이스와도 통합할 수 있습니다.

경고 및 알림

프로메테우스와 그라파나 모두 사용자가 정의한 경고 규칙에 따라 경고를 생성하고 알림을 보낼 수 있는 기능을 제공합니다. 이를 통해 사용자는 시스템의 이상을 신속하게 파악하고 대응할 수 있습니다.

 

차이점

모니터링 시스템의 역할
프로메테우스는 시스템 및 서비스의 모니터링에 중점을 두고 있습니다. 메트릭 데이터를 수집하고 저장하는 기능을 제공하며, 경고 및 알림을 관리합니다.
그라파나는 주로 시각화 및 대시보드 기능에 중점을 두고 있습니다. 데이터를 시각적으로 표현하고 사용자가 이를 이해할 수 있는 형태로 제공하는 것이 주된 역할입니다.

데이터 소스 및 쿼리 언어
프로메테우스는 자체 데이터베이스를 사용하며, PromQL이라는 자체 쿼리 언어를 사용하여 데이터를 쿼리 합니다.
그라파나는 다양한 데이터 소스를 지원하며, 각 데이터 소스에 맞는 쿼리 언어를 사용하여 데이터를 쿼리합니다. 예를 들어, InfluxDB와 같은 타임 시리즈 데이터베이스에서는 InfluxQL을 사용할 수 있습니다.

확장성 및 유연성
프로메테우스는 대규모 시스템 및 서비스의 모니터링에 적합한 확장성과 유연성을 제공합니다. 자체 데이터베이스를 사용하므로 데이터의 저장 및 관리를 자체적으로 처리합니다.
그라파나는 대시보드 및 시각화 도구로서의 유연성이 뛰어나며, 다양한 데이터 소스와 통합하여 사용할 수 있습니다. 그러나 그라파나 자체로는 모니터링 데이터를 수집하거나 저장하지 않습니다.

 

이러한 차이점을 고려하여 프로메테우스와 그라파나를 조합하여 모니터링 및 시각화 솔루션을 구축할 수 있습니다. 프로메테우스는 모니터링 데이터의 수집과 저장에, 그라파나는 데이터의 시각화와 대시보드 생성에 사용됩니다.


프로메테우스 설치 및 데이터 수집

프로메테우스를 서버에 초기 설치하고 데이터를 수집하고 저장하는 과정을 단계별로 설명하겠습니다.

 

1. 프로메테우스 다운로드 및 설치

# 프로메테우스 다운로드
wget https://github.com/prometheus/prometheus/releases/download/v2.30.1/prometheus-2.30.1.linux-amd64.tar.gz

# 압축 해제
tar -xvzf prometheus-2.30.1.linux-amd64.tar.gz

# 디렉토리 이동
cd prometheus-2.30.1.linux-amd64/

 

2. 프로메테우스 구성 파일 생성

# 기본 설정 파일 복사
cp prometheus.yml prometheus.yml.backup

# 설정 파일 편집
nano prometheus.yml

 

편집기에서 다음과 같이 작성합니다.

global:
  scrape_interval: 15s  # 메트릭 수집 간격

scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['localhost:9100']  # 노드 지표 수집

 

3. 프로메테우스 실행

./prometheus --config.file=prometheus.yml

 

4. 데이터 수집 및 저장 확인

웹 브라우저에서 http://localhost:9090으로 접속하여 프로메테우스 대시보드를 열고 데이터 수집 및 저장 상태를 확인합니다. 프로메테우스는 기본적으로 자체 데이터베이스에 메트릭을 저장하며, 설정 파일에 정의된 대로 각각의 장치 및 서비스로부터 메트릭을 수집합니다.

위의 단계를 따라 수행하면 프로메테우스를 서버에 초기 설치하고 데이터를 수집하고 저장할 수 있습니다.


프로메테우스, 그라파나 연동

프로메테우스와 그라파나를 연동하는 과정을 단계별로 요약 설명하겠습니다. 

 

1. 프로메테우스 구성

 1-1. 프로메테우스 설정 파일 수정 : 프로메테우스 설정 파일(prometheus.yml)을 열고, 그라파나를 타깃으로 추가합니다.

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']  # 프로메테우스 서버 주소
  - job_name: 'node'
    static_configs:
      - targets: ['localhost:9100']  # 노드 지표 수집 (옵션)

 

 1-2. 프로메테우스 재시작 : 설정 파일을 저장하고 프로메테우스를 재시작합니다.

 

2. 그라파나 구성

 2-1. 그라파나에 데이터 소스 추가 : 그라파나 대시보드에서 데이터 소스를 추가합니다.

  - 데이터 소스 유형 : Prometheus
  - URL : 프로메테우스 엔드포인트 주소
  - Access : Browser

 

 2-2. 대시보드 생성 : 그라파나 대시보드를 생성하고 프로메테우스에서 수집된 메트릭을 시각화합니다.
  - 대시보드에서 "New Dashboard"를 선택하고 원하는 시각화를 추가합니다.
  - 각 시각화에서 "Query" 탭으로 이동하여 데이터 소스를 선택하고 PromQL 쿼리를 작성합니다.

 

이러한 과정을 거치면 프로메테우스에서 수집된 메트릭은 그라파나를 통해 시각화되어 사용자에게 제공됩니다.

반응형