Monitoring
FastAPI + Prometheus + Grafana 연동으로 모니터링 환경 구축하기 ( Prometheus )
코줍
2025. 5. 31. 14:55
프로젝트 init을 마친 후, prometheus + grafana 조합의 모니터링 시스템을 구축했다.
이왕 만들 거, 추후에 API 상태 모니터링을 통해 좀 더 안정적인 서비스를 운영해보고자 연동을 해보았는데, 그 과정들을 살펴보자.
prometheus FastAPI 적용
1. docker desktop을 활성화 시킨 뒤, prometheus의 docker 이미지를 로컬에 다운로드 한다.
docker pull prom/prometheus
2. 루트경로에 prometheus_data 폴더를 생성한 뒤, 그 안에 promehteus 설정파일 (promehteus.yml)을 만들어준다.
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'bread-pilgrim'
static_configs:
- targets: [ 'web:8000' ]
scrape_interval : 15s - 전체 메트릭 수집 주기를 기본적으로 15초로 설정
scrape_configs : Prometheus가 어떤 서비스에서 메트릭을 수집할지 설정하는 scope인데,
- job_name: 'bread-pilgrim' - 수집작업의 이름을 설정
- static_configs.targets : 메트릭 수집할 서버 정의
- Prometheus 컨테이너 내부에선 http://web:8000/metrics로 접근
- 로컬 브라우저에서는 http://127.0.0.1:8080/metrics로 접근
3. Docker로 prometheus 실행
docker run -p 9090:9090 -v {로컬경로}/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
내가 만든 prometheus 설정파일을 docker환경에 마운트 하는 작업으로, 정상적으로 실행이 되면 아래와 같은 로그가 뜨고
http://localhost:9090으로 접속하면 Prometheus 웹 인터페이스가 보인다.
4. FastAPI 프로젝트에 prometheus-fastapi-instrumentator 설치
source myenv/bin/activate
poetry add prometheus-fastapi-instrumentator
5. prometheus가 데이터를 FastAPI 메트릭을 수집할 수 있도록 Instrumentator 구축
from fastapi import FastAPI
from prometheus_fastapi_instrumentator import Instrumentator
app = FastAPI(
title="빵지순례 API",
description="빵지순례 API",
)
Instrumentator().instrument(app).expose(app)
이렇게 하면, http://127.0.0.1:8080/metrics 접속했을 때 수집되는 메트릭 정보들을 볼 수 있다.