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