01 / 06
아키텍처
Prometheus + Grafana 모니터링 아키텍처 구성, ECS-discovery 컨테이너 연동, MySQL Exporter 구성
Architecture
아키텍처 개요
ECS Fargate 환경에서 JVM 메트릭을 수집하기 위해 Prometheus + Grafana 기반 모니터링 아키텍처를 구성했다. Fargate Task 내 Spring Boot 애플리케이션이 Actuator를 통해 메트릭을 노출하고, ecs-discovery 컨테이너가 ECS Task 목록을 자동 탐지하여 Prometheus가 수집할 수 있도록 연결한다.

Monitoring Flow
Instance: [Company] Replica DB
ECS Cluster
Fargate
Spring App (Actuator)* 회사명, IP 등 민감 정보는 일반화하여 표시했습니다
Components
구성 요소
ECS Cluster / Fargate
Spring Boot 애플리케이션이 Fargate Task로 실행된다. 각 Task는 awsvpc 네트워크 모드로 고유 ENI를 할당받으며, Actuator 엔드포인트를 통해 JVM 메트릭을 노출한다.
Spring App (Actuator)
Spring Boot Actuator의 /actuator/prometheus 엔드포인트를 활성화하여 Micrometer 기반 JVM 메트릭(Heap, GC, Thread, CPU 등)을 Prometheus 형식으로 노출한다.
ecs-discovery
ECS API를 주기적으로 호출하여 실행 중인 Task 목록을 조회하고, Docker Labels를 파싱하여 Prometheus가 읽을 수 있는 ecs_file_sd.yml 파일을 생성한다. Fargate Task의 동적 IP 변경에 자동 대응한다.
Prometheus
ecs_file_sd.yml을 기반으로 Fargate Task의 메트릭 엔드포인트를 자동 탐지하고 주기적으로 스크래핑한다. EC2 인스턴스([Company] Replica DB)에서 실행되며, MySQL Exporter 메트릭도 함께 수집한다.
Grafana
Prometheus를 데이터 소스로 연결하여 JVM 메모리, GC, Thread 등의 대시보드를 구성한다. 동일한 EC2 인스턴스([Company] Replica DB)에서 실행된다.
MySQL Exporter
MariaDB 11.4에 연결하여 데이터베이스 메트릭(쿼리 수, 커넥션 수, 슬로우 쿼리 등)을 Prometheus 형식으로 변환하여 노출한다.
MariaDB 11.4
애플리케이션의 주 데이터베이스로, MySQL Exporter를 통해 DB 레벨 메트릭이 Prometheus로 수집된다. [Company] Replica DB 인스턴스에서 운영된다.
Data Flow
데이터 흐름
메트릭 노출
Spring App이 Actuator /actuator/prometheus 엔드포인트를 통해 JVM 메트릭을 노출
Task 탐지
ecs-discovery가 ECS API를 호출하여 실행 중인 Fargate Task IP를 탐지하고 ecs_file_sd.yml 생성
메트릭 수집
Prometheus가 ecs_file_sd.yml 기반으로 각 Task의 메트릭 엔드포인트를 스크래핑
DB 메트릭 수집
MySQL Exporter가 MariaDB 11.4에 연결하여 DB 메트릭을 Prometheus로 전달
시각화
Grafana가 Prometheus를 데이터 소스로 연결하여 JVM 대시보드를 렌더링