回答:
一方AWSは、少なくともLinuxを実行しているAmazon EC2インスタンスのメモリとディスク容量の使用状況を監視するための独自のサンプルスクリプトを提供しています。新しいAmazon CloudWatch監視スクリプトを参照してください。
これらのスクリプトをインスタンスで実行し、メモリおよびディスク領域の使用状況メトリックスをAmazon CloudWatchに報告するように構成できます。メトリクスがCloudWatchに送信されると、CloudWatchコンソールまたはCloudWatch APIを介して、グラフを表示し、統計を計算し、それらにアラームを設定できます。
[...]
インストール、セットアップ、構成など、スクリプトの使用方法の詳細については、Amazon CloudWatch開発者ガイドの「Linux用Amazon CloudWatchモニタリングスクリプト」にアクセスしてください。
ただし、一般的なサードパーティの監視ソリューションの多くは、メモリとディスク領域の使用状況の監視のためのそれぞれのサンプルまたは完全なソリューションをすでに提供しているため、通常、ホイールを再発明する必要はありません。AWSが提供するスクリプトは、かなりまともで広大でもあります。つまり、浮かぶほとんどのカスタムの1回限りのスクリプトよりもユースケースを完全にカバーしています。
いいえ、これは(まだ)不可能です。関連する質問cloudwatch for memory usageの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
これをcronジョブに入れると、アラームを設定できるメトリックが得られます。ボリューム自体を監視するのではなく、パーセンテージとインスタンス固有のマウントポイントを使用することにしました。インスタンスを再起動するよりも、ボリュームのサイズを変更して切り替える傾向があります。あなたのマイレージは異なる場合があります。
Amazonのサンプルスクリプトや、Perlベースのコマンドラインツールを使用するさまざまなサードパーティのスクリプトに不満があるため、Pythonで独自のスクリプトaws-cloudwatch-linux-metricsを作成しました。
単一ファイルで、依存関係はなく、任意のPythonインタープリターで実行されます。
/proc
ファイルシステムから直接データを読み取り、ディスクスペースの使用率に加えて、外部からは観測できない他のシステムメトリックをレポートします。
インスタンスIDとイメージIDの両方に関してこれらのメトリックを報告します。
質問があった後、AWSはディスクの使用状況を報告するオプションを備えたスクリプトを提供しました。
このスクリプトをcrontabで実行して、利用可能なディスク容量をCloudWatchに報告できます。ディスクパスを含めることを忘れないでください。
*/5 * * * * ~/aws-scripts-mon/mon-put-instance-data.pl --disk-space-util --disk-path=/ --from-cron
ドキュメントには、オプションの完全なリストと例がここに記載されています。