Grafana & Prometheus 개요
Grafana와 Prometheus는 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는 이를 직관적인 대시보드로 표현한다. 클라우드, 컨테이너, 서버 환경에서 성능 모니터링, 알람 시스템 구축을 원하는 경우, 두 솔루션을 함께 사용하는 것이 가장 이상적이다.