FastAPI 애플리케이션이 안정적으로 운영되려면 요청 수, 응답 시간, 오류율과 같은 핵심 성능 지표를 지속적으로 모니터링해야 한다.
단순한 로그 분석만으로는 실시간 데이터 추적과 시각화가 어렵기 때문에, Prometheus와 Grafana를 활용하면 보다 효율적인 모니터링 환경을 구축할 수 있다.
Prometheus는 API 성능 데이터를 실시간으로 수집하고, Grafana를 통해 이를 직관적으로 분석할 수 있다.
또한, 임계값 초과 시 경고(Alert)를 설정할 수 있어 장애 대응도 용이하다.
이 글에서는 FastAPI에 Prometheus와 Grafana를 적용하여 성능을 모니터링하는 방법을 설명한다.
시계열(time-series) 데이터 저장 및 조회를 위한 오픈소스 모니터링 도구.
Prometheus 데이터를 시각적으로 표현하는 대시보드 도구.
Prometheus를 이용하면 FastAPI의 요청 수, 응답 시간, 오류율 등을 모니터링할 수 있다.
Grafana를 사용하면 Prometheus에서 수집한 데이터를 직관적으로 시각화할 수 있다.
운영 환경에서 실시간 트래픽 분석과 장애 대응이 가능해진다.
from fastapi import FastAPI
from prometheus_fastapi_instrumentator import Instrumentator
app = FastAPI()
# Prometheus 메트릭 수집기 등록
Instrumentator().instrument(app).expose(app)
Prometheus 설정 파일(prometheus.yml):
global:
scrape_interval: 15s
scrape_configs:
- job_name: "fastapi"
static_configs:
- targets: ["localhost:8000"]
prometheus --config.file=prometheus.ymlPrometheus 웹 UI (http://localhost:9090)에서 http_requests_total 등의 메트릭을 조회할 수 있다.
docker run -d -p 3000:3000 --name=grafana grafana/grafanaGrafana 웹 UI (http://localhost:3000)에 접속하여 설정을 진행한다.
rate(http_request_duration_seconds_sum{method="GET"}[5m])
/ rate(http_request_duration_seconds_count{method="GET"}[5m])
Grafana에서 위 데이터를 Line Chart로 표현하면 실시간 응답 시간 모니터링이 가능하다.
sum(rate(http_requests_total{status=~"5.."}[5m]))
/ sum(rate(http_requests_total[5m]))
Grafana에서 5xx 오류율을 Bar Chart로 표현하고, 임계값(예: 1%)을 초과할 경우 Alert 설정을 할 수 있다.