Print
카테고리: [ Amazon Web Services ]
조회수: 31362

1. 실습 - AWS CloudWatch Agent로 메모리, 디스크 사용량 지표, 로그 기록하기

AWS는 별도의 설정을 하지 않아도 기본적으로 EC2 인스턴스에 대한 여러 지표를 기록해 주지만, 메모리, 디스크 사용량은 제공하지 않는다. 이 지표들은 OS 내에서만 확인이 가능한데, 이는 AWS에서 지표를 위해 사용자들의 OS에 임의로 접근할 수 없기 때문이다.

하지만 이는 중요한 지표이기 때문에 AWS에서는 [사용자 지정 지표]로 쉽게 저장할 수 있는 방법들을 제공한다.

1-1. IAM 역할 추가 및 Agent 설치

1. IAM 서비스 이동 -> 역할 -> 역할 만들기

-. [AWS 서비스]를 선택하고 [EC2] 선택 -> [CloudWatchAgentServerPolicy] 정책 검색 후 선택 -> 생성 완료.

-. 역할 이름 : exercise-cloudwatch-agent-service-role 으로 진행하겠습니다.

 

2. EC2 서비스 이동 -> exercise-instance 우클릭 -> 인스턴스 설정 -> IAM 역할 연결/바꾸기 -> 생성한 역할 부여.

 

3. EC2에 Agent 설치.

-. EC2 기동 후 접속 후 아래 내용대로 진행 합니다.

#소스 경로로 이동
cd /sorc001

#스크립트 묶음 받기
wget https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm

sudo rpm -ivh amazon-cloudwatch-agent.rpm

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
#답변순서
# OS : linux
# EC2 선택
# 실행user : ec2-user
# StatsD daemon : no (어플리케이션에서 사용자 지정 지표를 쉽게 기록할 수 있게 하는 프로토콜 - 자세한 설명은 AWS 공식 가이드에서 확인 가능)
# CollectD daemon : no (StatsD와 마찬가지)
# Cpu, Memory monitor : yes
# Cpu core 별 기록 : no
# add ec2 dimensions : yes
# 지표기록 주기 : 60's(4번) (주기가 짧을 수록 더 높은 해상도의 지표가 기록 되지만 그만큼 더 많은 비용이 발생)
# default metrics : Standard
# 구성된 JSON을 보여준다. 문제가 없다면 yes (1번)로 진행
# 지금까지가 지표에 관한 설정이였다면 이제 로그에 대한 설정을 진행한다. 다음에 나오겠지만 한 번에 설정하도록 하겠다.
# 기존에 설정된 CloudWatch Logs 설정 파일이 있는가? : no
# 로그 파일 모니터링 : no
# SSM parameter store 설정 : no
# 끝으로 Program exits now. 라는 문구와 함께 종료.

-. 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

-. Agent 기동 확인

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status

위와 같은 문구가 보이면 제대로 기동하고 있는 것입니다.

* CloudWatch Agent는 서비스로 자동으로 등록되어 종료되기 이전에 성공적으로 실행됐다면 시스템이 시작될 때 자동으로 실행 됩니다.

 

1-2. 기록된 지표 확인

1. CloudWatch 서비스 이동 -> 지표 -> CWAgent라는 이름의 네임스페이스가 사용자 지정 네임스페이스에 추가돼 있음을 확인.

 

2. CWAgent 클릭 -> [Imageld, InstanceId, InstanceType] 클릭

미약하지만 기록이 잘 되고 있음을 확인 할 수 있다.

1-3. CloudWatch 대시보드 생성

지표의 종류가 많아지고 중요한 지표가 생길 수 있으며 시간이 지날수록 그래프를 하나하나 확인하기에는 무리가 있다.

CloudWatch에서는 대시보드를 생성해서 지표들을 더 쉽게 한눈에 볼 수 있도록 해준다.

대시보드의 요금은 https://aws.amazon.com/ko/cloudwatch/pricing/?nc1=h_ls 에서 확인할 수 있다.

1. CloudWatch 서비스 -> [대시보드] -> [대시보드 생성] 을 클릭. 이름은 마음대로 설정하겠습니다.

2. 위젯 유형은 일반적인 그래프를 표현하는 [행]을 선택하겠습니다.

3. CWAgent 외에도 생성한 ELB지표도 선택할 수 있습니다.

-. 그래프에서 개수의 값이 이상하게 보임을 확인할 수 있습니다. 이는 현재 설정이 시간당 평균값으로 계산하고 있기 때문입니다.

  [그래프로 표시된 지표] 탭을 클릭하여 [평균] -> [합계]로 바꿔주면 제대로 표시가 됩니다.

-. 결과

 

2. 참고

2-1. CloudWatch Agent의 미리 정의된 지표 목록

Basic

메모리 사용량(used_percent)

Swap 사용량(used_percent)

Standard

Basic의 내용

CPU 사용량(usage_idle, usage_iowait, usage_user, usage_system)

Disk 사용량(used_persent, inodes_free, io_time)

Advanced

Standard의 내용

Diskio(write_bytes, read_bytes, writes, reads)

Netstat(tcp_established, tcp_time_wait)

 

자세한 내용은 AWS 공식 문서(https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create-cloudwatch-agent-configuration-file-wizard.html)에서 확인할 수 있습니다.
 

2-2. CloudWatch Agent의 명령어와 주요 파일 위치

-. 특정 설정 파일을 사용해 CloudWatch Agent 서비스를 시작

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:[설정파일] -s
예시로 사용한 설정파일은 /opt/aws/amazon-cloudwatch-agent/bin/config.json 임을 알 수 있다.

-. CloudWatch Agent 서비스 시작 

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a start

-. CloudWatch Agent 서비스 중지

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a stop

-. CloudWatch Agent 서비스 상태 조회

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status

-. CloudWathc Agent 설정 파일의 위치

#Wizard로 생성한 파일 위치
/opt/aws/amazon-cloudwatch-agent/bin/config.json

#실제로 CloudWatch Agent가 사용하는 설정 파일 위치
/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json

-. CloudWatch Agent 로그 파일 위치

/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log