IMG-LOGO
공지사항 :

Grafana & Prometheus

lmkfox - 2025-03-07 07:10:37 19 Views 0 Comment

Grafana & Prometheus 개요

GrafanaPrometheus는 IT 인프라 및 애플리케이션 모니터링을 위한 오픈 소스 솔루션이다. Prometheus는 시계열(time-series) 데이터를 수집하고 저장하는 모니터링 시스템이며, Grafana는 이를 시각적으로 표현하는 대시보드 역할을 한다. 두 솔루션은 함께 사용되며, 클라우드, 컨테이너(Kubernetes), 서버, 네트워크 등 다양한 환경에서 활용된다.


1. Prometheus란?

Prometheus는 **Cloud Native Computing Foundation (CNCF)**에서 관리하는 오픈 소스 시계열 데이터베이스 및 모니터링 시스템이다.

주로 **컨테이너 기반 환경(Kubernetes, Docker Swarm)**에서 많이 사용되며, HTTP Pull 방식을 사용해 메트릭 데이터를 수집한다.

1.1 Prometheus의 주요 특징

시계열(time-series) 데이터 저장: 시계열 DB를 기반으로 데이터를 저장 및 분석.

Pull 방식 데이터 수집: Prometheus 서버가 대상(exporter)에서 주기적으로 데이터를 가져옴.

다양한 Exporter 지원: Node Exporter (서버 모니터링), Blackbox Exporter (URL 상태 체크), cAdvisor (컨테이너 모니터링) 등.

PromQL (Prometheus Query Language): SQL과 유사한 쿼리 언어로 데이터 분석 가능.

Alertmanager와 연동 가능: 특정 조건을 충족할 경우 알림 전송(Slack, 이메일, PagerDuty 등).

1.2 Prometheus 아키텍처

Prometheus의 기본 아키텍처는 다음과 같다:

1. Target (모니터링 대상): Prometheus가 데이터를 수집할 서버, 애플리케이션, 네트워크 장비 등.

2. Exporter: Prometheus가 데이터를 수집할 수 있도록 메트릭을 노출하는 모듈.

3. Prometheus Server: Exporter에서 데이터를 Pull 방식으로 가져와 시계열 데이터베이스에 저장.

4. PromQL: 수집된 데이터를 쿼리하여 분석 및 시각화 수행.

5. Alertmanager: PromQL 기반 알람을 설정하고, 특정 조건 발생 시 Slack, Email 등으로 알림 전송.

6. Grafana: Prometheus의 데이터를 시각화하여 대시보드를 생성하는 도구.


2. Grafana란?

Grafana오픈 소스 데이터 시각화 및 분석 도구로, Prometheus를 포함한 다양한 데이터 소스를 기반으로 대시보드를 생성할 수 있다.

2.1 Grafana의 주요 특징

다양한 데이터 소스 지원: Prometheus, InfluxDB, MySQL, PostgreSQL, Elasticsearch 등과 연동 가능.

대시보드 및 패널 기능: 실시간 데이터 모니터링을 위한 그래프, 테이블, 차트 제공.

사용자 정의 경고(Alerts) 설정: 특정 임계값을 넘으면 알람 발생.

사용자 역할 및 권한 관리: 조직 내 여러 사용자가 대시보드를 공유하고 협업 가능.

플러그인 확장 지원: 다양한 플러그인을 추가하여 기능 확장 가능.

2.2 Grafana 아키텍처

Grafana는 다음과 같은 구조로 동작한다:

1. Data Source: Prometheus, MySQL, Elasticsearch 등의 데이터를 읽어옴.

2. Query Engine: PromQL, SQL 등의 쿼리를 실행하여 데이터 처리.

3. Visualization Layer: 데이터를 그래프, 차트, 테이블 형태로 표현.

4. Alerting System: 특정 이벤트가 발생하면 알림을 보내는 기능.

5. User Management: 사용자의 접근 권한을 관리하는 시스템.


3. Grafana + Prometheus 연동

3.1 Prometheus 설치 (Ubuntu 20.04 기준)

# Prometheus 사용자 생성
sudo useradd -M -r -s /bin/false prometheus

# Prometheus 다운로드 및 압축 해제
cd /usr/local
sudo wget https://github.com/prometheus/prometheus/releases/latest/download/prometheus-linux-amd64.tar.gz
sudo tar -xvf prometheus-linux-amd64.tar.gz
sudo mv prometheus-linux-amd64 prometheus
cd prometheus

3.2 Prometheus 실행

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

웹 UI 확인: http://<서버 IP>:9090


3.3 Grafana 설치 (Ubuntu 20.04 기준)

# Grafana 패키지 다운로드 및 설치
sudo apt-get install -y software-properties-common
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
sudo wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo apt-get update
sudo apt-get install grafana

3.4 Grafana 실행 및 웹 UI 접속

sudo systemctl enable grafana-server
sudo systemctl start grafana-server

웹 UI 접속: http://<서버 IP>:3000

• 기본 로그인 정보: admin / admin


3.5 Prometheus와 Grafana 연동

1. Grafana 웹 UI 접속 후 Settings → Data Sources → Add Data Source 선택.

2. Prometheus 선택 후 다음 정보 입력:

URL: http://localhost:9090

Access: Server

• 저장 후 테스트(Test Connection) 버튼 클릭.

3. 대시보드 생성 → PromQL을 활용한 차트 추가.


4. 주요 사용 사례

4.1 서버 및 인프라 모니터링

Node Exporter를 활용하여 CPU, 메모리, 디스크 사용량 모니터링.

• 특정 서버의 과부하 발생 시 알림을 설정하고 대응.

4.2 애플리케이션 성능 모니터링

• 웹 서버(Nginx, Apache) 요청 수, 응답 시간, 오류율 모니터링.

• 데이터베이스 쿼리 성능 및 트랜잭션 상태 분석.

4.3 컨테이너 & 쿠버네티스(Kubernetes) 모니터링

cAdvisor & kube-state-metrics를 사용하여 Kubernetes 클러스터 상태 모니터링.

• 컨테이너별 CPU, 메모리, 네트워크 사용량 추적.


5. 장점과 단점

5.1 Prometheus의 장점

✅ 시계열 데이터에 최적화된 경량 모니터링 시스템

✅ PromQL을 활용한 강력한 데이터 분석 기능

✅ 독립적인 데이터 저장 방식 (외부 DB 불필요)

✅ 다양한 Exporter 및 플러그인 제공

5.2 Prometheus의 단점

❌ 장기 데이터 저장이 어려움 → 외부 스토리지 연동 필요

❌ 고가용성(HA) 구성이 복잡함

❌ 대량의 데이터를 처리할 때 성능 이슈 발생 가능

5.3 Grafana의 장점

✅ 강력한 데이터 시각화 기능 제공

✅ 다양한 데이터 소스와 연동 가능

✅ 알람 및 경고 시스템을 손쉽게 설정 가능

5.4 Grafana의 단점

❌ 대량의 실시간 데이터를 처리할 경우 성능 문제 발생 가능

❌ 데이터베이스가 아닌 시각화 도구이므로 데이터 저장 불가


6. 결론

Prometheus와 Grafana는 함께 사용될 때 가장 효과적인 모니터링 및 시각화 솔루션이다. Prometheus가 데이터를 수집하고 분석하는 역할을 수행하는 반면, Grafana는 이를 직관적인 대시보드로 표현한다. 클라우드, 컨테이너, 서버 환경에서 성능 모니터링, 알람 시스템 구축을 원하는 경우, 두 솔루션을 함께 사용하는 것이 가장 이상적이다.


댓글