본문 바로가기
[AWS-DR]/CloudWatch

[참고][CloudWatch #3] Cloudwatch Agent 설치[Memory/Disk 수집]

by METAVERSE STORY 2024. 6. 4.
반응형
728x170

 

 

 

Cloudwatch Agent란?

클라우드워치 에이전트는 AWS의 모니터링 서비스인 Amazon CloudWatch와 함께 사용되는 소프트웨어입니다. Cloudwatch에서 기본으로 제공하는 모니터링 외에 추가로 메모리, 디스크 사용량 등 더 많은 지표들을 수집하려면 Cloudwatch Agent를 설치해야 됩니다.  Cloudwatch Agent를 사용하면 추가비용이 들지만 더 많은 지표들을 추가할 수 있어 클라우드, 온프레미스에서의 원활한 모니터링과 운영에 도움이 되는 소프트웨어 입니다. 

 

 

Cloudwatch Agent 설치

  • IAM Role 생성
  • EC2 인스턴스에 IAM Role 연결
  • EC2 인스턴스에 CloudWatch Agent 설치
  • CloudWatch Agent로 메모리 사용량 확인
  • 부하테스트
  • Disk 사용량 확인

 

 

IAM Role 생성

EC2에서 Cloudwatch Agent의 지표들을 수집할 수 있게 정책을 생성해줍니다.

생성한 정책은 EC2에 연결을 해줍니다.

IAM > 역할 > 역할 만들기를 선택해줍니다.

 

 

AWS 서비스 > 일반 사용 사례 EC2 선택

 

>"CloudWatchAgentServerPolicy"를 검색해서 해당 정책을 추가해줍니다.

> 역할이름을 지정해준 뒤 역할 생성

 

이렇게 해당 정책이 생성 됐습니다. 

다음으로 모니터링할 인스턴스에 해당 정책을 연결 해주겠습니다.

 

 

EC2 인스턴스에 IAM Role 연결

EC2에 Role을 연결을 안하면 Cloudwatch agent를 설치해도 모니터링 항목이 안뜹니다.

보안 > IAM 역할 수정으로 이동해 줍니다.

 

 

위에서 만들었던 정책을 선택하고 IAM 역할 업데이트늘 선택해 줍니다.

 

 

 

EC2 인스턴스에 CloudWatch Agent 설치

Cloudwatch Agent를 설치하기 위해 EC2에 SSH 접속을 합니다.

// 해당 명령어를 입력하여 CloudWatch Agent를 설치해 줍니다.
sudo yum install -y amazon-cloudwatch-agent

// Cloudwatch Agent가 설치된 경로로 이동해서 설치된 파일을 실행시켜 줍니다.
cd /opt/aws/amazon-cloudwatch-agent/bin/
sudo ./amazon-cloudwatch-agent-config-wizard

 

 

 

Cloudwatch Agent 환경설정 목록입니다.

해당 환경설정은 자신이 필요로 하는 설정들을 추가,해제하여 설정해 줍니다.

해당 설정파일은 /opt/aws/amazon-cloudwatch-agent/bin/config.json 위치에 저장됩니다. 필요한 경우 이 파일을 직접 편집하여 설정을 수정할 수 있습니다.

만약 설정이 잘못되서 다시 설정해야 된다면 config.json파일을 편집기로 들어가서 수정하거나 삭제한 다음 다시 환경설정을 해주는 방법도 있습니다.

Cloudwatch Agent config wizard

 

 

Cloudwatch 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


해당 로그는 CloudWatch Agent를 구성하고 시작하는 과정을 보여줍니다.

 

1. CloudWatch Agent 구성 가져오기 : /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 명령어를 사용하여 CloudWatch Agent 구성을 가져오고, Agent를 시작합니다. 이 명령어는 앞에서 생성한 구성 파일을 사용합니다.

 

2. 구성 검증: 가져온 구성이 유효한지 검사합니다. 이는 두 단계로 수행되며, 첫 번째 단계에서는 입력된 JSON 구성의 스키마가 유효한지, 두 번째 단계에서는 toml 파일의 구성이 유효한지 확인합니다.

 

3. Agent 시작: 마지막으로, 구성 검증이 성공한 후에 Amazon CloudWatch Agent가 시작됩니다. 이전에 실행 중이던 Agent는 먼저 중지되며, 새로운 Agent가 시작됩니다. CloudWatch Agent가 성공적으로 시작되면, 이제 CloudWatch 콘솔에서 이 인스턴스의 메트릭을 볼 수 있게 됩니다.

 

사용자가 앞에서 선택한 메트릭에 따라 다르며, CPU 사용량, 디스크 사용량, 네트워크 통계 등을 포함할 수 있습니다.

 

 

CloudWatch Agent로 메모리 사용량 확인

이제 Cloudwatch로 EC2의 메모리를 확인해 보겠습니다.

Cloudwatch > 대시보드 > 대시보드 생성

 

 

위젯추가는 자신이 원하는 그래프 타입을 선택해 주시면 됩니다.

 

 

대시보드를 생성하면 빈 그래프가 생성되는데 네임스페이스에 보시면 CWAgent가 우리가 EC2에 설치한 Cloudwatch Agent 입니다. 

 

 

수집할 EC2 ID를 검색해 줍니다 > CWAgent > "Imageld, Instanceid, InstanceType"을 선택해 줍니다.

 

 

4가지의 지표가 보이는데 그 중 mem_used_percent가 메모리 사용률 입니다.

보시면 제가 EC2를 생성한지 얼마 안되서 수집된 지표가 별로 없습니다.

참고로 cloudwatch로 지표가 수집되는데 5분정도가 소요됩니다.

> 위젯생성 > 저장을 하시면 대시보드 생성 완료입니다.

 

 

 

부하테스트

메모리에 부하를 줘서 그래프가 상승하는지 확인해 보겠습니다.

부하테스트를 위해 메모리에 부하를 주는 stress라는 유틸리티를 설치해 줍니다.

sudo yum install -y stress

 

 

부하를 주기 전 사용 가능한 메모리의 크기를 확인합니다.

free -h

 

 

저는 사용가능한 메모리가 614M입니다. 그래서 최대 600M로 부하를 주겠습니다.

 

stress --vm 1 --vm-bytes 600M --timeout 600s
  • --vm 1: 가상 메모리 부하 테스트를 실행하는 worker의 수를 지정합니다.
  • --vm-bytes 600M: 각 worker가 할당하려는 메모리 양을 지정합니다.
  • --timeout 600s: 부하를 주고 이를 600초 동안 유지합니다.

 

 

메모리에 부하를 줬더니 Cloudwatch가 지표를 수집해서 그래프가 상승하는 것을 볼 수 있습니다.

 

 

조금 더 큰 부하를 주니 세션이 끊어졌습니다.

메모리 부하를 너무 크게 가하게 되면, 시스템이 느려지거나, 네트워크 연결이 끊어지거나, 운영 체제가 Out of Memory (OOM) Killer를 활성화하여 프로세스를 강제로 종료할 수 있습니다. 이 때문에 원격에서 연결이 끊어질 수 있다.

 

 

메모리 부하를 줬을 때 CPU 그래프도 같이 상승한 걸 볼 수 있습니다.

 'stress' 명령어를 실행하면, 메모리에 대한 요청이 생성되고, 이 요청들을 처리하기 위해 CPU 자원이 사용됩니다. 따라서 메모리에 부하를 주면 CPU 사용률이 상승하는 것이 일반적입니다

실제로, 컴퓨터 시스템에서 메모리는 CPU와 함께 가장 중요한 리소스 중 하나입니다. 메모리를 사용하여 데이터를 읽고 쓰는 것은 CPU에서 수행하는 작업의 일부입니다. 따라서 메모리 사용량이 증가하면, CPU는 그에 따라 더 많은 작업을 수행하게 되어 CPU 사용률이 증가합니다.

 

 

Disk 사용량 확인

 

 

이렇게 디스크 사용량도 확인해 볼 수 있습니다.

 

 

오늘은 이렇게 Cloudwatch Agent를 설치해서 메모리, disk 사용률을 모니터링해보는 실습을 해봤습니다

감사합니다 :)

 

 

출처 : https://bigco-growth-diary.tistory.com/40

반응형
그리드형

댓글