CloudWatchで空きディスク容量を取得するにはどうすればよいですか?


回答:


7

更新

一方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に直接組み込まれたサポートです。


「これは私の最初の回答で述べられた内容を変更しませんが...」-元の回答では、AWSはディスク使用量を報告できなかったが、AWSスクリプトはディスク使用量を報告するようになりました。したがって、OPの質問に対する答えは変わりました。
15年

3

インスタンスに接続されているボリュームを取得し、各ボリュームの使用状況を報告する同じスクリプトのより良いバージョンを次に示します。

/ 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

2

カスタムの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ジョブに入れると、アラームを設定できるメトリックが得られます。ボリューム自体を監視するのではなく、パーセンテージとインスタンス固有のマウントポイントを使用することにしました。インスタンスを再起動するよりも、ボリュームのサイズを変更して切り替える傾向があります。あなたのマイレージは異なる場合があります。


1

Amazonのサンプルスクリプトや、Perlベースのコマンドラインツールを使用するさまざまなサードパーティのスクリプトに不満があるため、Pythonで独自のスクリプトaws-cloudwatch-linux-metricsを作成しました

単一ファイルで、依存関係はなく、任意のPythonインタープリターで実行されます。

/procファイルシステムから直接データを読み取り、ディスクスペースの使用率に加えて、外部からは観測できない他のシステムメトリックをレポートします。

  • CPU負荷平均
  • ネットワーク接続(TCPおよびUDP)
  • ディスク容量使用率
  • メモリ使用率

インスタンスIDとイメージIDの両方に関してこれらのメトリックを報告します。


こんにちは、githubプロジェクトがなくなりました
Roco CTZ 2018

0

質問があった後、AWSはディスクの使用状況を報告するオプションを備えたスクリプトを提供しました。

このスクリプトをcrontabで実行して、利用可能なディスク容量をCloudWatchに報告できます。ディスクパスを含めることを忘れないでください。

*/5 * * * * ~/aws-scripts-mon/mon-put-instance-data.pl --disk-space-util --disk-path=/ --from-cron

ドキュメントには、オプションの完全なリストと例がここに記載されています

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.