반응형
Prometheus는 오픈 소스 모니터링 및 경고 도구로, 시계열 데이터베이스를 기반으로 시스템 및 애플리케이션의 메트릭을 수집, 분석, 시각화합니다. 이 가이드는 Prometheus의 구성 및 운영을 단계별로 설명합니다.
1. Prometheus란?
Prometheus는 다음과 같은 주요 기능을 제공합니다:
- 데이터 수집: 다양한 애플리케이션 및 시스템에서 메트릭 수집.
- 시계열 데이터 저장: 효율적인 데이터 저장소를 제공.
- 쿼리 및 분석: PromQL(Prometheus Query Language)을 사용해 데이터를 쿼리.
- 경고 시스템: 조건에 따라 경고를 생성.
Prometheus는 Pull 기반으로 작동하며, 메트릭을 수집하기 위해 애플리케이션에 Exporter를 사용합니다.
2. Prometheus 설치
1) 사전 요구사항
- 운영체제: Linux, macOS, 또는 Docker.
- CPU 및 메모리: 소규모 클러스터에는 최소 2 vCPU와 4GB 메모리 권장.
2) Prometheus 설치
- 바이너리 설치:
- Prometheus 웹 UI는 기본적으로 http://localhost:9090에서 접근 가능.
- wget https://github.com/prometheus/prometheus/releases/download/v2.46.0/prometheus-2.46.0.linux-amd64.tar.gz tar -xvzf prometheus-2.46.0.linux-amd64.tar.gz cd prometheus-2.46.0.linux-amd64 ./prometheus --config.file=prometheus.yml
- Docker를 이용한 설치:
- docker run -d --name prometheus -p 9090:9090 -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
3. 기본 구성
Prometheus의 핵심은 prometheus.yml 파일입니다. 기본 설정 예제는 다음과 같습니다:
global:
scrape_interval: 15s # 메트릭 수집 주기
evaluation_interval: 15s # 규칙 평가 주기
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- scrape_interval: 메트릭 수집 주기.
- job_name: 작업의 이름.
- targets: 메트릭을 수집할 대상(예: Prometheus 서버 자체).
4. Exporter 설정
Prometheus는 다양한 Exporter를 통해 메트릭을 수집합니다.
1) Node Exporter (시스템 메트릭)
Node Exporter는 CPU, 메모리, 디스크 사용량 등의 메트릭을 제공합니다.
- 설치:
- wget https://github.com/prometheus/node_exporter/releases/download/v1.6.0/node_exporter-1.6.0.linux-amd64.tar.gz tar -xvzf node_exporter-1.6.0.linux-amd64.tar.gz ./node_exporter
- Prometheus에 Node Exporter 추가:
- scrape_configs: - job_name: 'node' static_configs: - targets: ['localhost:9100']
2) Kubernetes Metrics (kube-state-metrics)
- Kubernetes 클러스터의 메트릭 수집을 위해 kube-state-metrics와 cAdvisor를 사용.
- Helm 설치:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm install prometheus prometheus-community/prometheus
5. 경고 및 알림 구성
Prometheus는 Alertmanager를 통해 경고를 처리하고 알림을 보냅니다.
1) Alertmanager 설치
- Docker로 설치:
- docker run -d --name alertmanager -p 9093:9093 prom/alertmanager
- Alertmanager 구성 파일(alertmanager.yml):
- global: smtp_smarthost: 'smtp.example.com:587' smtp_from: 'alert@example.com' route: receiver: 'email-alert' receivers: - name: 'email-alert' email_configs: - to: 'user@example.com'
2) Prometheus와 Alertmanager 통합
- Prometheus 설정(prometheus.yml):
alerting: alertmanagers: - static_configs: - targets: ['localhost:9093']
6. 시각화
Prometheus는 기본적인 시각화 기능을 제공하지만, Grafana와 통합하면 더욱 강력한 대시보드를 사용할 수 있습니다.
Grafana 설치
- Docker:
docker run -d --name=grafana -p 3000:3000 grafana/grafana
Prometheus와 통합
- Grafana 웹 UI에 접속: http://localhost:3000
- 데이터 소스 추가: Prometheus
- URL: http://localhost:9090
대시보드 생성
- 기존 대시보드 가져오기:
- Grafana에서 "Import" 클릭.
- Grafana Dashboards에서 대시보드 ID 복사.
- Prometheus 데이터 소스 선택 후 "Import".
7. 트러블슈팅
1) Prometheus 작동 문제
- 서비스 상태 확인:
systemctl status prometheus
- 로그 확인:
journalctl -u prometheus
2) 메트릭 수집 문제
- 대상에 접근 가능 여부 확인:
curl http://<target>:<port>/metrics
3) 경고 설정 문제
- Alertmanager와 연결 여부 확인:
curl http://localhost:9093
결론
Prometheus는 시스템과 애플리케이션 모니터링의 핵심 도구로, 다양한 환경에서 효율적으로 동작합니다. 설치와 기본 구성부터 시작해 Exporter 추가, Alertmanager 설정, Grafana 통합까지 학습하면 Prometheus의 모든 기능을 활용할 수 있습니다. 이를 통해 시스템 안정성을 유지하고 성능을 최적화하세요.
반응형