Search

Prometheus 특징 구성 요소

Publish Date
2024/12/09
Category
Tags
Status
Done
1 more property
Prometheus
Prometheus는 시계열 데이터 수집과 모니터링 환경 구축에 최적화된 도구로, Kubernetes 및 클라우드 네이티브 환경에서 시스템 상태를 안정적으로 관리하고 분석할 수 있는 강력한 솔루션을 제공한다.

Prometheus

Prometheus는 오픈소스 기반의 시스템 모니터링 도구로, 주로 시계열 데이터(Time Series Data)를 수집하고 저장하는 데 사용된다. 2012년 SoundCloud에서 처음 개발된 이후, 2016년 Cloud Native Computing Foundation(CNCF)의 두 번째 프로젝트로 채택되며 널리 사용되고 있다.

주요 특징

1.
다차원 데이터 모델
metric namelabel(key-value 쌍)으로 데이터를 식별한다.
http_requests_total{method="GET", status="200"} - 메트릭이름: http_requests_total - 라벨: method, status
Java
복사
2.
PromQL (Prometheus Query Language)
시계열 데이터를 쿼리하기 위한 전용 언어로, 데이터 분석과 처리를 가능하게 한다.
- http_requests_total: 전체 요청 횟수 - rate(http_requests_total[5m]): 지난 5분 동안의 요청 속도 - sum(http_requests_total) by (method): 요청을 메서드별로 그룹화해 합계 계산
Plain Text
복사
3.
독립적 저장 구조
Prometheus는 분산 스토리지에 의존하지 않고, 각 서버가 독립적으로 동작한다.
4.
Pull 방식 데이터 수집
Prometheus는 HTTP를 통해 모니터링 대상의 엔드포엔트에서 데이터를 직접 끌어오는 방식으로 동작한다.
5.
서비스 디스커버리: ← 프로메테우스 prometheus.yaml
동적으로 타겟 엔드포인트를 탐지하여 메트릭을 수집한다.
지원되는 횐경: Kubernetes, Consul, EC2 같은 환경 등
정적 구성 (Static Configuration): 수집할 대상(예: IP, 포트)을 수동으로 지정
scrape_configs: - job_name: 'example-service' static_configs: - targets: ['localhost:8080', 'localhost:8081']
YAML
복사
6.
시각화 및 대시보드 지원
Prometheus 데이터를 Grafana와 같은 시각화 도구와 통합하여 대시보드 생성 및 분석.

구성 요소

Prometheus 생태계를 여러 구성 요소로 이루어져 있으며, 일부는 선택적으로 사용 가능하다.
구성요소
설명
Prometheus 서버
메트릭 데이터를 스크랩하고 저장하며, 쿼리와 알림 처리 담당
클라이언트 라이브러리
애플리케이션 코드에 메트릭을 삽입하기 위한 라이브러리
Pushgateway
단기 실행 작업(배치 작업, 스크립트)의 데이터를 Prometheus에 전달 // push 방식
Exporter
MySQL, Redis, HAProxy와 같은 서비스의 메트릭 데이터를 변하여 제공 // Pull 방식
Grafana
Grafana와 통합하여 데이터를 대시보드에 시각화
Alertmanager
정의된 조건에 따라 경고를 생성하고 이메일, Slack 등으로 알림 전송
프로메테우스는 DNS 서비스 디스커버리 기능을 사용해 DNS조회 결과로 모든 IP주소를 대상으로 한다. DNS 응답 중에서 가장 앞에 오는 IP주소를 사용하므로 도커 엔진이 DNS응답을 통해 로드 밸런싱을 적용한 경우 컨테이너 모두에서 측정값을 받아올 수 있다.
프로메테우스는 다음과 같은 방식으로 동작한다.
1.
메트릭 수집: Prometheus는 Pull 방식으로 모니터링 대상(Target)의 /metrics 엔드포인트에서 데이터를 스크래핑
2.
데이터 저장: 수집된 메트릭은 로컬 저장소에 시계열 데이터로 저장
3.
쿼리 및 분석: PromQL을 사용하여 데이터를 분석하고 처리
4.
시각화: Grafana와 통합하여 데이터를 대시보드에 시각화
5.
경고 관리: Alertmanager를 통해 알림을 설정하고 전송

메트릭(Metric)

메트릭은 숫자 데이터를 의미하며, 시계열 데이터는 시간이 지남에 따라 기록된 변화를 나타낸다. 메트릭은 애플리케이션의 상태를 이해하고 문제를 진단하는 데 중요한 역할을 한다. 예를 들어, 요청 수가 증가하면 애플리케이션이 느려질 수 있으며, 이를 해결하기 위해 서버수를 늘리는 등의 조치를 취할 수 있다.
예:
웹서버: 요청 수, 응답 시간
데이터베이스: 활성 연결 수, 실행 중인 쿼리 수
메트릭 수집 엔드포인트:
애플리케이션이 /metrics/actuator/prometheus와 같은 HTTP 엔드포인트를 제공
이 엔드포인트는 Prometheus와 호환되는 형식으로 메트릭 데이터를 노출
구조 예: Prometheus는 이 데이터를 정기적으로 "스크래핑(scrape)"하여 저장한다.
# HELP http_requests_total Total HTTP requests # TYPE http_requests_total counter http_requests_total{method="GET",status="200"} 1024 http_requests_total{method="POST",status="500"} 3
Plain Text
복사

Q&A

데이터 수집 방식 : Pull 방식 vs Push 방식
프로메테우스에서 데이터를 수집하는 방식은 무엇인가요?
프로메테우스에서의 메트릭 유형에는 어떤 것들이 있나요?
프로메테우스를 사용하여 애플리케이션의 성능 지표를 어떻게 측정하나요?
프로메테우스와 그라파나를 통합하여 데이터를 시각화하는 방법은 무엇인가요?

추가 질문

프로메테우스의 scrape_interval 설정은 무엇을 의미하나요?
프로메테우스에서 sum() 쿼리는 무엇을 의미하며, 어떻게 사용되나요?
프로메테우스의 job_namemetrics_path는 어떤 역할을 하나요?
프로메테우스에서 DNS 서비스 디스커버리 기능을 사용하는 이유는 무엇인가요?
PrometheusPushgateway의 차이점은 무엇인가요?
Search
Main PageCategoryTagskkogggokkAbout MeContact