AWS

AWS - Cloudwatch custom metric을 이용한 Monitoring (Memory, Disk 사용량 확인)

KB.SEO 2020. 6. 4. 13:15
 
AWS에서 기본적으로 제공하는 모니터링 서비스인 Cloudwatch룰 이용하면 Memory, Disk 사용량을 보지 못하는 제한이 있기에
Custom metric을 이용하여서 상세 모니터링 필요
 
작업 정보
- Amazon Linux AMI를 이용
- 모니터링할 서버에 접속 후 진행
 
 
작업순서
  1. Packge 설치
  2. 모니터링 스트립트 다운
  3. AWS Credential 입력
  4. Cron 일정을 걸어 Cloudwatch에 주기적으로 지표전송
  5. Cron 재시작
 

 
1. Packge 설치
 
sudo yum install -y perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https perl-Digest-SHA.x86_64
 
 
2. 모니터링 스트립트 다운
curl https://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.2.zip -O
 
unzip CloudWatchMonitoringScripts-1.2.2.zip && \
rm CloudWatchMonitoringScripts-1.2.2.zip && \
cd aws-scripts-mon
 
 
3. AWS Credential 입력
cp awscreds.template awscreds.conf
 
3-1 )  awscreds.conf 파일 수정
AWSAccessKeyId= <my-access-key-id>
AWSSecretKey= <my-secret-access-key>
 
# 해당 access key와 secret key는 IAM 항목에서 발급 / 확인 가능합니다.
 
 
 
4. Cron 일정을 걸어 Cloudwatch에 주기적으로 지표전송
 
4-1 )  Crontab 편집
crontab -e
 
4-2)  5분마다 메모리 및 디스크 공간 사용량을 CloudWatch에 전송
*/5 * * * * /home/aws-scripts-mon/mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-avail --mem-util --swap-util
--disk-path=/ --disk-space-util --disk-space-avail --disk-space-used --from-cron
 
 
5. Cron 재시작
$ sudo service crond restart
Stopping crond:                                            [  OK  ]
Starting crond:                                            [  OK  ]
 
 
> AWS Console창에서 확인 했을 시 
사용자 지정 네임스페이스 항목에 새롭게 추가된 지표들을 확인 할 수 있습니다.
 


 


 
 
> Cron에 등록하지 않고 메모리 지표를 수집하고 CloudWatch로 보내려면
./mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-util --mem-used --mem-avail

추가적으로 Custom Metric 지표 옵션
> Custom Metric 지표 옵션
이름
설명
--aggregated[=only]
인스턴스 유형, AMI ID 및 리전 전체에 대한 집계 측정치를 추가합니다. =only 값은 선택 사항입니다. 이 값을 지정하면 스크립트는 집계된 메트릭만 보고합니다.
--auto-scaling[=only]
Auto Scaling 그룹에 대해 집계된 측정치를 추가합니다. =only 값은 선택 사항입니다. 이 값을 지정하면 스크립트는 Auto Scaling 메트릭만 보고합니다. 스크립트를 사용하여 IAM 계정 또는 역할과 연결된 IAM 정책에는 EC2 작업 DescribeTags를 호출할 권한이 있어야 합니다.
--aws-access-key-id=VALUE
호출자를 식별하는 데 사용할 AWS 액세스 키 ID를 지정합니다. --aws-secret-key 옵션과 함께 사용해야 합니다. 이 옵션은 --aws-credential-file 매개 변수와 함께 사용하지 마십시오.
--aws-credential- file=PATH
AWS 자격 증명이 들어 있는 파일의 위치를 제공합니다.
이 매개 변수는 --aws-access-key-id 및 --aws-secret-key 매개 변수와 함께 사용할 수 없습니다.
--aws-iam-role=VALUE
AWS 자격 증명을 제공하는 데 사용되는 IAM 역할을 지정합니다. =VALUE 값이 필요합니다. 자격 증명을 지정하지 않으면 EC2 인스턴스와 연결된 기본 IAM 역할이 적용됩니다. IAM 역할은 하나만 사용할 수 있습니다. IAM 역할이 없거나 IAM 역할이 두 개 이상 있는 경우 스크립트에서는 오류를 반환합니다.
이 옵션은 --aws-credential-file--aws-access-key-id 또는 --aws-secret-key 매개 변수와 함께 사용하지 마십시오.
--aws-secret-key=VALUE
CloudWatch에 대한 요청에 서명하는 데 사용할 AWS 보안 액세스 키를 지정합니다. --aws-access-key-id 옵션과 함께 사용해야 합니다. 이 옵션은 --aws-credential-file 매개 변수와 함께 사용하지 마십시오.
--disk-path=PATH
보고할 디스크를 선택합니다.
PATH는 보고해야 할 파일 시스템의 마운트 지점 또는 마운트 지점에 있는 모든 파일을 지정할 수 있습니다. 디스크를 여러 개 선택하는 경우 각 디스크에 대해 --disk-path=PATH를 지정합니다.
/ 및 /home에 마운트된 파일 시스템의 디스크를 선택하려면 다음 매개 변수를 사용하십시오.
--disk-path=/ --disk-path=/home
--disk-space-avail
선택한 디스크의 DiskSpaceAvailable 측정치를 수집하여 전송합니다. 이 측정치는 GB 단위로 보고됩니다.
Linux 운영 체제의 예약된 디스크 공간으로 인해 사용된 디스크 공간 및 사용 가능한 디스크 공간이 총 디스크 공간에 정확하게 더해지지 않을 수 있습니다.
--disk-space-units=UNITS
디스크 공간 사용량을 보고할 단위를 지정합니다. 단위를 지정하지 않으면 디스크 공간은 GB 단위로 보고됩니다. UNITS는 바이트, KB, MB, GB 중 하나입니다.
--disk-space-used
선택한 디스크의 DiskSpaceUsed 측정치를 수집하여 전송합니다. 기본적으로 이 측정치는 GB 단위로 보고됩니다.
Linux 운영 체제의 예약된 디스크 공간으로 인해 사용된 디스크 공간 및 사용 가능한 디스크 공간이 총 디스크 공간에 정확하게 더해지지 않을 수 있습니다.
--disk-space-util
선택한 디스크의 DiskSpaceUtilization 측정치를 수집하여 전송합니다. 이 측정치는 % 단위로 보고됩니다.
참고로, 이 스크립트로 계산되는 디스크 사용률 측정치는 df -k -l 명령으로 계산한 값과 다릅니다. df -k -l 명령으로 계산한 값이 더 유용하다고 생각하면 스크립트에서 계산 값을 변경할 수 있습니다.
--from-cron
Cron에서 스크립트를 호출하는 경우 이 옵션을 사용합니다. 이 옵션을 사용하면 모든 진단 결과가 표시되지 않지만 사용자 계정의 로컬 시스템 로그에 오류 메시지가 전송됩니다.
--help
사용 정보를 표시합니다.
--mem-avail
MemoryAvailable 측정치를 수집하여 전송합니다. 이때, MB 단위로 보고합니다. 이 지표는 애플리케이션 및 운영 체제에서 할당한 메모리만 사용량으로 계산하며, --mem-used-incl-cache-buff 옵션을 지정하는 경우 캐시 및 버퍼 메모리도 사용량에 포함시킵니다.
--mem-used
MemoryUsed 측정치를 수집하여 전송합니다. 이때, MB 단위로 보고합니다. 이 지표는 애플리케이션 및 운영 체제에서 할당한 메모리만 사용량으로 계산하며, --mem-used-incl-cache-buff 옵션을 지정하는 경우 캐시 및 버퍼 메모리도 사용량에 포함시킵니다.
--mem-used-incl-cache-buff
이 옵션을 추가하면 --mem-util--mem-used 및 --mem-avail의 지표를 보고할 때 현재 캐시 및 버퍼용으로 사용 중인 메모리가 "사용됨"으로 표시됩니다.
--mem-util
MemoryUtilization 측정치를 수집하여 % 단위로 보고합니다. 이 지표는 애플리케이션 및 운영 체제에서 할당한 메모리만 사용량으로 계산하며, --mem-used-incl-cache-buff 옵션을 지정하는 경우 캐시 및 버퍼 메모리도 사용량에 포함시킵니다.
--memory-units=UNITS
메모리 사용량을 보고할 단위를 지정합니다. 단위를 지정하지 않으면 메모리는 MB 단위로 보고됩니다. UNITS는 바이트, KB, MB, GB 중 하나입니다.
--swap-used
SwapUsed 측정치를 수집하여 전송합니다. 이때, MB 단위로 보고합니다.
--swap-util
SwapUtilization 측정치를 수집하여 전송합니다. 이때, % 단위로 보고합니다.
--verbose
스크립트가 수행한 작업에 대한 자세한 정보를 표시합니다.
--verify
측정치를 수집하는 스크립트 실행을 테스트하고, 전체 HTTP 요청을 준비하지만 데이터를 보고하기 위해 CloudWatch를 실제로 호출하지는 않습니다. 이 옵션 역시 자격 증명이 제공되었는지 확인합니다. 자세한 정보 표시 모드에서 실행 중인 경우 이 옵션은 CloudWatch에 전송될 측정치를 출력합니다.
--version
스크립트의 버전 번호를 표시합니다.
참고 URL
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/mon-scripts.html