Monitoring

FastAPI + Prometheus + Grafana 연동으로 모니터링 환경 구축하기 ( Grafana )

코줍 2025. 6. 8. 22:29

 

https://kojub.tistory.com/52

 

FastAPI + Prometheus + Grafana 연동으로 모니터링 환경 구축하기 ( Prometheus )

프로젝트 init을 마친 후, prometheus + grafana 조합의 모니터링 시스템을 구축했다.이왕 만들 거, 추후에 API 상태 모니터링을 통해 좀 더 안정적인 서비스를 운영해보고자 연동을 해보았는데, 그 과정

kojub.tistory.com

 

앞전에 FastAPI 프로젝트에 Prometheus를 연동해 보았다.

설정한 prometheus를 시각화 해서 보여주기 위한 Grafana 연동도 해보자.

Grafana 컨테이너 실행 및 접속 방법

요즘엔 Grafana에서 자동으로 Prometheus 데이터 소스 플러그인이 내장되어 있다.

이 플러그인을 통해서 Prometheus와 Grafana를 연동할 수 있고, 수집된 데이터들을 기반으로 한 대시보드를 생성할 수 있다.

 

1. docker 위에 grafana라는 컨테이너 이름으으로 grafana를 띄운다.

docker run -d -p 3000:3000 --name=grafana grafana/grafana

 

이미 생성된 컨테이너가 있다면, 

docker start grafana

 

localhost:3000으로 접속했을 때, Grafana로 된 대시보드에 접속할 수 있는 걸 확인할 수 있으며,  초기 아이디/비밀번호는 admin/admin 이다.

 

로그인이 완료되면, 비밀번호 변경하라고 아래와 같이 뜬다. 


Grafana와 Prometheus 연동

1. Add data source > Prometheus 클릭

 

2. DataSource 기본설정 + Save and Test

  • Name ✅
  • Connection ( 연결할 Prometheus Server URL ) ✅
  • Authentication (선택)

💡 Prometheus server URL에 localhost 대신 host.docker.internal을 사용하는 이유

 

Docker 컨테이너 내부에서 호스트 ( 내 MacBook )에 접근하려고 할때, 

localhost는 컨테이너 내에서 자기 컨테이너를 가르키기 때문에 Prometheus가 호스트 머신에서 실행 중인데, 컨테이너 내 Grafana가 자기 컨테이너를 찾으려고 해서 연결이 되지 않기 때문이다.

 

그래서 host.docker.internal 은 컨테이너가 자기 호스트 머신( 내 MacBook )으로 통신할 수 있게 해주는 특별한 DNS 이름이라고 보면 된다. ( 브릿지 주소 ) 구조는 아래와 같이 보면 될 것 같다.

 

그러나, 컨테이너 이름이나 Docker 네트워크 내부 IP를 통해 서로 바로 연결하는 게 더 좋다고 한다. ( 대충 이유는 추측되지만, 더 자세한 건 다음 시간에.. )

 

 

아무쪼록 기본설정을 마친 후 Save and Test를 클릭해서 내가 설정한 메트릭 수집 URL을 Grafana와 연결하여 시각화 준비가 거의 완성되었다!


Grafana 대시보드 생성

1. Add new Panel > 방금 연동한 datasource 클릭

 

2. 원하는 메트릭을 Query에 추가한다.

 

시각화를 위해 아무거나 추가해봤지만, 추후에 서버 배포하고 나서 본격적인 메트릭을 추가해보자.

 

 

1차적인 모니터링 환경은 구축했다.

 

앞서 이야기 했듯 Prometheus랑 Grafana 모두 Docker로 띄워져있으나, 서로 다른 컨테이너기 때문에 같은 docker network로 통신하게 만들어주는 게 좋다. 구성이 단순하고, 그만큼 유지보수도 쉬워지기 때문인데 요건 차주 중으로 처리해봐야겠다.