-
[AWS 비용 절감 2] 메모리 사용량 모니터링 설정Infra 2025. 2. 23. 16:37
배경
- AWS 요금 절감을 위해서 EC2 스펙을 다운그레이드를 계획하고 있음
- 이를 위해 CPU 및 메모리 사용량을 분석하여, 리소스 사용량을 기반으로 최적의 인스턴스 크기를 결정하려고 함
평균적인 메모리 사용량을 확인하기 위해서 EC2 에 CloudeWatchAgent 를 설치하고 메로리 관련 로그를 CloudeWatch 에서 확인하는 방법을 사용했습니다.
1. IAM 설정
새롭게 권한을 생성하여 기존에 사용하고 있던 IAM 역할을 대체할 수도 있지만 보다 간단하게 기존 역할에 정책을 추가하는 방법을 사용했다.
기존 사용중인 인스턴스 > 보안 > IAM 역할 수정 > 권한 추가 > "CloudwatchAgentServerPolicy" 추가
2. CloudeWatch Agent 설치 및 설정
1. EC2 인스턴스에 SSH 접속
2. cloudwatch agent 설치 > sudo yum install amazon-cloudwatch-agent -y
3. cloudwatch agent 파일 설정 > sudo vi /opt/aws/amazon-cloudwatch-agent/bin/config.json
- 메모리가 크게 변동하지 않는 경우라면 인터벌을 늘려 추가 비용을 절약할 수 있습니다.
더보기{
"metrics": {
"append_dimensions": {
"InstanceId": "${aws:InstanceId}"
},
"metrics_collected": {
"mem": {
"measurement": [
"mem_used_percent"
],
"metrics_collection_interval": 60
}
}
}
}4. agent 설정 파일 적용 > sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \ -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s
3. 메모리 사용량 분석 및 발견 이슈
- 위 설정을 완료 하면 기존에 보이지 않았던 CWAgent 스페이스가 생김
- mem_used_percent 값을 통해 메모리 값 확인 할 수 있음
CloudWatch에서 수집된 데이터를 분석한 결과, 예상과 다른 패턴이 발견되었습니다.
- 예상: m5.large는 더 많은 메모리를 사용하지만, RAM이 크기 때문에 사용 비율은 상대적으로 낮을 것.
- 결과: 오히려 m5.large의 메모리 사용률(mem_used_percent)이 t2.micro보다 더 높음!
주황 -1GB(dev) / 파랑-8GB(prod) 명확한 분석을 위해 메모리 사용량 뿐 아닌 추가 정보를 각 인스턴스에서 조회 해보았다.
dev 메모리 분석 prod 메모리 분석 Swap
- Dev 서버(t2.micro) → Swap을 647MB 사용 중
- Prod 서버(m5.large) → Swap을 거의 사용하지 않음
조회 결과 예상했던 것 처럼 dev 에서는 swap 이 상당히 일어나고 있었습니다.
그것도 647 MB 로 메모리 부족상태인 것을 확인할 수 있었습니다.
Buff/Cache
- 운영체제(OS)가 자주 사용되는 파일, 디스크 블록, 네트워크 데이터를 RAM에 캐시하여 성능을 최적화하는 공간.
- Dev(t2.micro) Buff/Cache: 232MB
- Prod(m5.large) Buff/Cache: 2009MB
추가로 주목할 만한 점은 Prod 의 buff/cache 값이다. buff/cache 를 2GB 나 쓰고 있었고, 여유 메모리를 더욱 적극적으로 사용하고 있는 모습이었다.
4. 적정 메모리 판단
적정 메모리 사용률과 CPU 사용률에 대한 글들을 찾아봤지만 공신력이 있는 곳일 수록 정확한 수치를 언급하지 않으려하고 AWS 와 같은 클라우드 서비스를 제공하는 업체의 경우에는 보수적인 수치를 제공하고 있는듯 했다.
- GPT 는 80% 이상 사용률일때 부족, 70퍼센트 미만일 경우 안정적이라고 말하고 있다.
- AWS 에서는 CPU 와 메모리 사용률이 40퍼센트 이하일 경우 절반짜리 스펙으로 낮출 수 있다고 한다.
Tips for Right Sizing - Right Sizing: Provisioning Instances to Match Workloads
Thanks for letting us know this page needs work. We're sorry we let you down. If you've got a moment, please tell us how we can make the documentation better.
docs.aws.amazon.com
그러나 위에서도 언급했다싶이 단순 메모리 사용량만으로 적정 메모리를 판단 할 수 없다. 스왑, 버퍼/캐시, 여유분 등을 종합적으로 고려하여만 지금 렘이 어떤 상태로 운용 되고 있는지 명확히 판단 할 수 있었다
5. 참고: CPU 사용량 확인
CPU 사용량은 CloudWatch 에서 CPU 관련 Metric 을 추가하거나 대시보드 카테고리에 자동 대시보드를 통해서 기본으로 제공됩니다
'Infra' 카테고리의 다른 글
[AWS 비용절감 4] AWS Saving Plans 적용 과정 (0) 2025.04.08 [AWS 비용 절감 3] 최적의 EC2 인스턴스 유형 선택하기 (0) 2025.03.07 [CI/CD] 모바일 CI/CD 1편 (0) 2025.02.24 [AWS 자동화] 임시 등록 보안 규칙 IP 자동으로 삭제하기 (0) 2025.02.21 [AWS 비용 절감1] AWS 사용 현황 분석 및 요금 절감 전략 수립 (0) 2025.02.13