回答:
Amazonは、2012年3月現在、このためのスクリプトを提供しています。
Linux用Amazon CloudWatchモニタリングスクリプト:http : //aws.amazon.com/code/8720044071969977
インスタンスのファイルシステムはインスタンス自体によってのみアクセス可能であるため、EC2制御および監視ツールがこのデータを提供する方法はありません。ハードウェアの基本アーキテクチャとセキュリティモデルの両方で、この制限が要求されます。お使いのコンピューターの外部のソフトウェアがハードドライブ上のファイルをぶらぶらしているとしたら、どれほど悪いか考えてみてください!
cron(とにかくほとんどのシステムにインストールされている)に定期的にこのデータを確認させるための重要な方法は次のとおりです。システムには、とにかくルートメール通知を処理するための最小要件が必要です。少なくとも重要な送信メールエージェントを用意し、管理するすべてのシステムで転送するようにルートまたは管理者のエイリアスを構成することをお勧めします。を含む多くのプログラムはcron
、この構成を想定しています。
これをcrontabに追加できます。
0 0 * * * test $(df / | grep ^/ | awk '{print $4}') -lt 1048576 && echo "Warning: Free disk space is less than 1G on /"
それを壊すために、これ
test
コマンドは、小-lt
なり演算子と1Gbの空き領域に相当する固定値を使用して、単純なシェル比較を設定します。df
コマンドは、/
ファイルシステムの空き領域をテストしますgrep
あなたはちょうどあなたが必要とする出力の行の代わりに、ヘッダを取得df
含まれています。awk
GETは、出力のちょうど4列目、フリースペース番号です。&&
最初の(場合にのみ、次のコマンドを実行すると言うtest x -lt y
)がtrueを返します。EC2グループ内の複数のサーバーを確認する必要があるため、スクリプトを作成しました。各サーバーのIP /ドメイン名のリストを1行で含むファイルが必要です。
#! /bin/bash
ADMIN="serveralerts@youraddress.com"
ALERT=85
for SERVER in `cat ~/scripts/servers.txt` do
ssh -i ~/.ssh/yourkey.pem $SERVER df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output;
do
echo $output
usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1 )
partition=$(echo $output | awk '{ print $2 }' )
if [ $usep -ge $ALERT ]; then
echo "Running out of space \"$partition ($usep%)\" on $SERVER as on $(date)" |
mail -s "Alert: Almost out of disk space $usep" $ADMIN
fi
done done
CloudWatchを使用してEC2インスタンスでこれを設定するための手順を追った説明:
http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/mon-scripts.html
クロンはあなたの友達です。このファイルを/etc/cron.daily ディレクトリに配置すると、1日に1回実行されます。
#!/bin/sh
# this script is /etc/cron.daily/diskAlert.cron
ADMIN="jdoe@maildomain.com"
ALERT=90
df -PkH | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $6 }' | while read output;
do
usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1 )
partition=$(echo $output | awk '{print $2}' )
if [ $usep -ge $ALERT ]; then
echo "Running out of space \"$partition ($usep%)\" on $(hostname) as on $(date)" |
mail -s "Alert: Almost out of disk space $usep%" $ADMIN
fi
done
注:このスクリプトは、マウントされたCDROMがいっぱいであることを示します。
これは、AWSのDCで実行され、ドライブがいっぱいの場合に受信者のグループに電子メールを送信する、簡単なPowerShellスクリプトです。これには、2つの列を持つcsvが必要です。1つは名前がコンピューター名で、もう1つはドライブ名がドライブ文字です。AWS環境にはメールサーバーがないため、SESを介して送信するように構成しました。必要に応じて、ドライブの使用率のレポートを頻繁に送信するようにスクリプトをわずかに変更することもできます。見つけたソリューションはすべてLinuxインスタンス用であるため、ここに投稿すると思いました。
$CSVPath = "c:\Scripts\computerNames.csv"
$computerName = new-object System.Data.DataSet
$computerName = Import-CSV $CSVPath
$AwsUn = ""
$AwsPw = ConvertTo-SecureString "" -AsPlainText -Force
$cred = New-Object -typename System.Management.Automation.PSCredential -ArgumentList $AwsUn, $AwsPw
Foreach($name in $computerName)
{
$dl = $name.drive
$Utilization = Get-WmiObject win32_Volume -ComputerName $name.computerName -Filter "DriveLetter = '$($dl)'"| Foreach{ “{0:N2}” -f ((1-$_.FreeSpace / $_.Capacity)*100) }
if($Utilization -gt 90)
{
Send-MailMessage -From Sender to Recipients -subject (
"$($name.computerName) Disk utilization" )-Body "The $dl drive on the AWS instance $($name.computerName) has $utilization% disk utilization. Please log in and delete log files or contact the Network Operations team to increase the storage allocated to this instance" -SmtpServer email-smtp.us-west-2.amazonaws.com -Credential $cred -useSSL -port 25
}
}