문제 정의

t2.micro를 사용하는 EC2 서버가 과부하로 인해 서비스를 정상적으로 이용하지 못함.

원인

CPU 사용률이 임계점을 돌파하여 사용되는 경우 인스턴스의 크레딧이 모두 소모되어 성능에 제한을 걸기 때문이다.

t2.micro성능 순간 확장 가능 인스턴스로 평소에는 낮은 수준의 cpu 사용률을 제공하다가, cpu 사용률이 높아지면 크레딧을 사용하여 사용률을 높인다.

<aside>

💬 크레딧? (t2.micro 기준)

모니터링 구축

Node Exporter와 Micrometer를 사용하여 서버와 스프링 애플리케이션을 모니터링하고 Prometheus + Grafana로 분석 및 시각화할 예정이다.

Version

나는 서버에 Node Exporter를 설치하고 로컬에 Prometheus & Grafana를 설치하여 모니터링을 구축할 수 있는지 확인하였다. 실제론 Prometheus를 위한 ec2를 따로 추가할 생각이다. 프리티어를 사용하면 무료로 할 수 있기에.. 그리고 당연하지만 프로메테우스와 node exporter를 중간에 끄면 안된다! 테스트가 끝날 때 까지는 켜야한다.

작업할 공간에 아래 파일을 생성하고, 서버의 주소를 넣은 후 prometheus --config.file=prometheus.yml 로 실행하면 프로메테우스가 실행된다.

# prometheus.yml
scrape_configs:
  - job_name: 'node_exporter'
    scrape_interval: 5s   # ← 이게 수집 주기!
    static_configs:
      - targets: ['<EC2_ADDRESS>:9100'] # EC2의 퍼블릭 주소를 입력