본문 바로가기

데이터베이스/ELK

Elastic APM을 이용한 FastAPI 모니터링 연동

1. Docker

docker-compose.yml과  Dockerfile 세팅은 Django 연동할 때와 동일하기에 참고 바람.

 

 

2. FastAPI

(1) 라이브러리 설치

먼저 해당 패키지를 다운받아야 한다.

pip install elastic-apm

or 

poetry add elastic-apm

 

(2) FastAPI 설정

from elasticapm.contrib.starlette import make_apm_client, ElasticAPM

# Elastic APM
# https://medium.com/squad-engineering/how-to-optimize-elastic-apm-6f7f6d58bed5
apm_config = {
    "SERVICE_NAME": "FastAPI",
    "SERVER_URL": "http://apm-server:8200",
    "ENVIRONMENT": "dev",
    "GLOBAL_LABELS": "platform=Platform, application=Application",
    "TRANSACTION_MAX_SPANS": 250,
    "STACK_TRACE_LIMIT": 250,
    "TRANSACTION_SAMPLE_RATE": 0.5,
    "APTURE_HEADERS": "true"
}

apm = make_apm_client(apm_config)
app.add_middleware(ElasticAPM, client=apm)

 

위와 같이 apm 설정을 해주고, FastAPI 미들웨어를 추가한다.

 

설정을 하고 RUN중인 Elastic Kibana 서버로 들어가서 왼쪽 사이드바에서 APM 항목을 들어가면 된다.