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 접속했을 때 수집되는 메트릭 정보들을 볼 수 있다.