답변:
한편 AWS는 Linux 를 실행하는 Amazon EC2 인스턴스에서 메모리 및 디스크 공간 사용량을 모니터링하기위한 자체 샘플 스크립트를 제공합니다. 새로운 Amazon CloudWatch 모니터링 스크립트를 참조하십시오 .
인스턴스에서 이러한 스크립트를 실행하고 메모리 및 디스크 공간 사용량 지표를 Amazon CloudWatch에보고하도록 구성 할 수 있습니다. 지표가 CloudWatch에 제출되면 CloudWatch 콘솔 또는 CloudWatch API 를 통해 그래프를보고 통계를 계산하고 경보를 설정할 수 있습니다 .
[...]
설치, 설정 및 구성을 포함하여 스크립트를 사용하는 방법에 대한 자세한 내용은 Amazon CloudWatch Developer Guide의 " Linux 용 Amazon CloudWatch 모니터링 스크립트 "를 참조하십시오.
그러나 많은 인기있는 타사 모니터링 솔루션은 이미 메모리 및 디스크 공간 사용량 모니터링을 위해 각각의 샘플 또는 완전한 솔루션을 제공하므로 일반적으로 휠을 재발 명 할 필요가 없습니다. AWS가 제공 한 스크립트는 상당히 훌륭하고 광범위합니다. 즉, 대부분의 사용자 정의 스크립트가 떠 다니는 것보다 더 철저한 사용 사례를 다루고 있습니다.
아니요, 아직 불가능합니다. 메모리 사용 에 대한 관련 질문 cloudwatch에 대한 AWS 직원의 답변을 참조하십시오 .
[...] 현재 인스턴스를 모니터링하기 위해 AMI에 어떤 것도 배포 할 필요가 없습니다. 메모리 사용률 및 디스크 공간과 같은 지표는 인스턴스에서 실행중인 OS를 조사해야하므로 이러한 중요한 지표가없는 이유입니다.
우리는 OS 및 응용 프로그램에 대한 더 많은 통찰력을 제공하는 방법을 모색하고 있으며 계획을 세울 때 더 자세한 정보를 제공 할 것입니다.
필요한 크로스 플랫폼 에이전트 기능을 전용 모니터링 솔루션을 이미 제공하는 다른 공급 업체에서 쉽게 사용할 수 있기 때문에이 기능이 곧 나타날 것으로 의심됩니다. 물론 AWS에 직접 내장 된 지원.
다음은 인스턴스에 연결된 볼륨을 검색하고 각 볼륨의 사용량을보고하는 동일한 스크립트의 더 나은 버전입니다.
/ dev / sd에 대한 / dev / xvd의 대체에 주목
또한 이러한 작업을 수행하려면 인증서와 함께 ec2-api 도구 및 Cloudwatch 도구가 설치되어 있어야합니다.
#!/bin/bash
export JAVA_HOME=
export AWS_CREDENTIAL_FILE=
export EC2_CERT=
export EC2_PRIVATE_KEY=
export EC2_HOME=
export AWS_CLOUDWATCH_HOME=
INSTANCE_ID=$(wget -q -O - http://169.254.169.254/latest/meta-data/instance-id)
VOLUME_LIST=$($EC2_HOME/bin/ec2-describe-volumes | grep ${INSTANCE_ID} | awk '{ print $2 ";" $4}')
for VOLUME_LINE in $(echo $VOLUME_LIST); do
VOLUME_NAME=${VOLUME_LINE%;*}
DEVICE_NAME=/dev/xvd${VOLUME_LINE#*;/dev/sd}
USAGE=$(df $DEVICE_NAME | perl -ne 'print "$1" if /(\d+)\%/')
$AWS_CLOUDWATCH_HOME/bin/mon-put-data -v $USAGE -d "Volume=$VOLUME_NAME" -m UsedStoragePercentage -u Percent -n "NAMESPACE" --show-request
done
커스텀 Cloudwatch 지표를 사용하여 bash 스크립트를 작성했습니다.
http://aws.typepad.com/aws/2011/05/amazon-cloudwatch-user-defined-metrics.html
XXXX를 자신의 가치로 대체
#!/bin/sh
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export AWS_CREDENTIAL_FILE=XXXX
export AWS_CLOUDWATCH_HOME=XXXX
INSTANCE_ID=$(wget -q -O - http://169.254.169.254/latest/meta-data/instance-id)
$AWS_CLOUDWATCH_HOME/bin/mon-put-data -v $(df / | perl -ne 'print "$1" if /(\d+)\%/') -d "InstanceId=$INSTANCE_ID,Volume=root" -u Percent -m UsedStoragePercentage -n "XXXX" --show-request
이것을 크론 작업에 넣으면 알람을 켤 수있는 메트릭이 생깁니다. 필자의 요구에 맞는 볼륨 자체를 모니터링하는 대신 백분율 및 인스턴스 별 마운트 포인트를 사용하기로 결정했습니다. 인스턴스를 다시 시작하는 것보다 볼륨을 조정하고 볼륨을 바꾸는 경향이 있습니다. 귀하의 마일리지가 다를 수 있습니다.
Amazon의 샘플 스크립트 또는 Perl 기반 명령 줄 도구를 사용하는 다양한 타사 스크립트에 만족하지 않아 Python에서 자체 스크립트 인 aws-cloudwatch-linux-metrics를 작성했습니다 .
단일 파일, 종속성이 없으며 모든 파이썬 인터프리터에서 실행됩니다.
/proc
파일 시스템 에서 직접 데이터를 읽고 외부에서 관찰 할 수없는 다른 시스템 메트릭과 함께 디스크 공간 활용도 를 보고 합니다.
인스턴스 ID와 이미지 ID 모두와 관련하여 이러한 지표를보고합니다.
질문이 있은 후, AWS는 디스크 사용량을보고하는 옵션을 스크립트에 제공했습니다.
crontab에서이 스크립트를 실행하여 사용 가능한 디스크 공간을 CloudWatch에보고 할 수 있습니다. 디스크 경로를 포함시키는 것을 잊지 마십시오.
*/5 * * * * ~/aws-scripts-mon/mon-put-instance-data.pl --disk-space-util --disk-path=/ --from-cron
문서는 전체 옵션 목록과 예제를 제공합니다 .