Notice
Recent Posts
Recent Comments
Link
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

코딩 이래요래

AWS ECS Prometheus + Grafana로 모니터링 하기 본문

Trouble Shooting

AWS ECS Prometheus + Grafana로 모니터링 하기

강범호 2025. 7. 8. 15:41

AWS ECS로 자동 배포중인 application은 지난 번 과금 이슈로 CloudWatch 로그 수집을 비활성화 했다.

그 후로 새로운 모니터링 대안을 찾아야 했는데, 지난 번 적용해 보았던 Prometheus와 Grafana로 모니터링을 해보려 한다.

 

전체 구조

  • 로컬 Docker 컨테이너 2개
    • container 1: Prometheus (localhost:9090)
    • container 2: Grafana (localhost:3000)
  • Prometheus가 ECS 인스턴스의 Spring Boot /actuator/prometheus 엔드포인트에 pull
  • Grafana는 Prometheus에 쿼리를 날려 대시보드를 구성

자세한 연동 방법은 이전 포스팅을 참고하자.

 

Spring Boot + Prometheus + Grafana 대시보드 만들기

1. 프로메테우스(Prometheus)?시간의 흐름에 따라 변동 되는 데이터를 메트릭(Metric)이라고 한다.SpringBoot는 Actuator가 metric 수집을 담당하고 있다.문제는, 메트릭은 시간이 흐를수록 대량의 데이터가

kh-coding.tistory.com


Grafana 대시보드 중 JVM 메모리 사용량

JVM Heap

눈에 띄는 건, 약 5분 간격으로 GC(Garbage Collection)가 실행되고 있다는 점. 

  • 메모리는 꾸준히 증가하다가 일정 지점에서 뚝 떨어지며 정리되는 패턴을 반복함.
  • 이는 GC가 정상적으로 작동 중이라는 뜻.
  • Memory Leak(메모리 누수)처럼 사용량이 계속 증가하는 모습은 보이지 않는다.

며칠 전, 포스팅 한 것처럼 ECS 태스크가 계속 실패했던 이슈가 있었다.

 

AWS ECS 중지됨: TaskFailedToStart: RESOURCE:MEMORY

Spring Application을 AWS를 이용하여 배포를 진행하면서 겪은 상황을 얘기해보려 한다...아래는 간단한 배포 다이어그램이다. Spring boot application amd/64 기반으로 빌드하여 ECR에 Docker image pushaccess key, sec

kh-coding.tistory.com

그때는 containerDefinitions 생각도 하지 못한 채 여러 고민했었고,

JVM 메모리 문제일 수도 있겠다 생각했었는데..

 

이번 대시보드 확인을 통해

JVM 메모리는 안정적으로 관리되고 있었고, GC 역시 주기적으로 정상 동작하고 있었다.

 

결과적으로, ECS 태스크 실패 원인은 애플리케이션 성능 문제나 메모리 누수가 아닌,

ECS 태스트 정의에서 설정된 메모리 리소스 부족 때문이었다.

 

Prometheus와 Grafana를 통해 시각적으로 직관적인 모니터링을 구축할 수 있었다. 

 

 

'Trouble Shooting' 카테고리의 다른 글

AWS CloudWatch 과금  (4) 2025.07.07
AWS ECS 중지됨: TaskFailedToStart: RESOURCE:MEMORY  (1) 2025.07.07
TimeZone😤  (2) 2025.06.23