728x90
prometheus_client 라이브러리는 Prometheus와 함께 사용할 수 있는 클라이언트 라이브러리로, 애플리케이션의 메트릭을 수집하고 노출하는 데 사용됨
이 라이브러리를 통해 다양한 유형의 메트릭을 생성하고 관리할 수 있음
이 라이브러리에서 메트릭 수집을 위하여 주로 사용되는 Counter, Gauge, Histogram 클래스에 대해 알아봄
Counter
Counter는 단조 증가하는 메트릭을 나타냄
주로 이벤트의 발생 횟수를 측정하는 데 사용됨
한 번 증가하면 줄어들지 않음
from prometheus_client import Counter
# Counter 메트릭 생성
requests_total = Counter('requests_total', 'Total number of requests')
# 메트릭 증가
requests_total.inc() # 1 증가
requests_total.inc(5) # 5 증가
Gauge
Gauge는 값이 증가하거나 감소할 수 있는 메트릭을 나타냄
현재 온도, 메모리 사용량 등과 같이 상태를 나타내는 데 사용됨
from prometheus_client import Gauge
# Gauge 메트릭 생성
temperature = Gauge('temperature', 'Current temperature')
# 메트릭 설정 및 변경
temperature.set(25.3) # 값 설정
temperature.inc() # 1 증가
temperature.dec(2.3) # 2.3 감소
Histogram
Histogram은 값의 분포를 관찰하는 데 사용됨
요청 시간, 응답 크기 등의 분포를 측정하는 데 유용함
from prometheus_client import Histogram
# Histogram 메트릭 생성
request_latency = Histogram('request_latency_seconds', 'Request latency')
# 메트릭 관찰
request_latency.observe(0.5) # 0.5초의 지연 시간 관찰
request_latency.observe(1.2) # 1.2초의 지연 시간 관찰
종합 예제
Counter, Gauge, Histogram을 사용하여 간단한 웹 애플리케이션에서 메트릭을 수집하고 노출하는 예제
from prometheus_client import Counter, Gauge, Histogram, start_http_server
import time
import random
# 메트릭 정의
REQUESTS = Counter('requests_total', 'Total number of requests')
TEMPERATURE = Gauge('temperature', 'Current temperature')
LATENCY = Histogram('request_latency_seconds', 'Request latency')
# 메트릭 수집 및 노출 시작
start_http_server(8000)
while True:
# Counter 증가
REQUESTS.inc()
# Gauge 설정
TEMPERATURE.set(random.uniform(20.0, 30.0))
# Histogram 관찰
latency = random.uniform(0.1, 1.0)
LATENCY.observe(latency)
# 대기 시간
time.sleep(1)
결론
- Counter: 단조 증가 메트릭
- Gauge: 값이 증가하거나 감소할 수 있는 메트릭
- Histogram: 값의 분포를 관찰하는 메트릭
이러한 구성 요소를 사용하여 애플리케이션의 다양한 성능 지표를 수집하고 Prometheus 서버에 노출할 수 있음
728x90
'Python > Web' 카테고리의 다른 글
FastAPI 개발자가 직접 개발한 FastAPI backend DB 초기화 방법 (1) | 2024.03.25 |
---|---|
FastAPI 개발자가 직접 개발한 FastAPI backend 설정파일 config.py (0) | 2024.03.16 |
FastAPI 개발자가 직접 개발한 FastAPI backend 데이터모델 models.py (0) | 2024.03.16 |
FastAPI 개발자가 직접 개발한 FastAPI backend alembic (1) | 2024.03.12 |
Flask-Migrate 테이블 초기 데이터 관리 (0) | 2024.03.10 |