Просто продолжайте отправлять им подробные счета, содержащие все дополнительное время, необходимо было потратить работу вокруг их глупых требований. Если управление не поддержит Вас, найдите другое задание.
Нет никакого пути к управлению EC2 и контролирующим инструментам, чтобы дать Вам эти данные, потому что файловая система Ваших экземпляров ТОЛЬКО доступна самим экземпляром. И базовая архитектура аппаратных средств и модель обеспечения безопасности требуют этого ограничения. Думайте о том, как плохо это было бы, если программное обеспечение вне Вашего компьютера могло бы ввести по абсолютному адресу вокруг в файлах на Ваших жестких дисках!
Вот сдержанный способ сделать крон (установленный в большинстве систем так или иначе), проверяют эти данные на Ваш периодически. Ваши системы должны иметь минимальные требования для обработки корневых почтовых уведомлений так или иначе. Я рекомендую иметь, по крайней мере, материалистический агент исходящей почты и настроить корень или псевдоним администратора, чтобы передать Вам во всех системах, которые Вы администрируете. Много программ включая cron
ожидайте эту конфигурацию.
Вы могли добавить это к своему crontab:
0 0 * * * test $(df / | grep ^/ | awk '{print $4}') -lt 1048576 && echo "Warning: Free disk space is less than 1G on /"
Сломать это, это
test
наборы команд простое сравнение оболочки с помощью -lt
меньше, чем оператор и фиксированное значение, эквивалентное свободному пространству на 1 ГБ.df
управляйте тестирует свободное пространство на /
файловая системаgrep
получает Вас просто строка вывода, в котором Вы нуждаетесь вместо заголовков df
включает.awk
get's просто четвертый столбец в выводе, числе свободного пространства.&&
говорит для выполнения следующей команды только если первая ( test x -lt y
) возвращает true.Я записал сценарий, поскольку я должен был проверить несколько серверов в своей группе EC2. Этому нужен файл со списком каждого IP/доменного имени сервера на одной строке.
#! /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
Я использую этот сценарий: http://nixcraft.com/shell-scripting/3238-shell-script-check-disk-space-remote-systems.html
Крон - ваш друг. Поместите этот файл в свой каталог /etc/cron.daily , и он будет запускаться один раз в день:
#!/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
ПРИМЕЧАНИЕ. Этот сценарий сообщит, что смонтированные компакт-диски заполнены.
Amazon provides scripts for this as of march 2012:
Amazon CloudWatch Monitoring Scripts for Linux: http://aws.amazon.com/code/8720044071969977
Пошаговые инструкции по настройке для экземпляра EC2 в CloudWatch:
http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/mon-scripts.html
Это быстрый сценарий PowerShell, который я написал и который запускается на нашем контроллере в AWS и рассылает электронное письмо группе получателей, если диск переполнен. Он занимает csv с 2 столбцами - одно заглавное имя с именем компьютера и один заглавный диск с буквой диска. У нас нет почтового сервера в нашей среде 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
}
}