Найпростіший спосіб автоматично перевірити простір на диску EC2 та отримати сповіщення про його низький рівень?


25

Запуск AMI Amazon Linux. Здається, CloudWatch не перевіряє вільний простір на диску. У мене є декілька серверів, і в ідеалі не хочу налаштовувати кожного з поштовим сервером, сценарієм для перевірки місця на диску і т.д.

Чи є простіший спосіб зробити це?

Відповіді:


13

Amazon надає сценарії для цього станом на березень 2012 року:

Сценарії моніторингу Amazon CloudWatch для Linux : http://aws.amazon.com/code/8720044071969977


Сценарії виглядають досить прямо вперед. Мене хвилює те, що йому потрібна відома пара ключа та секрет доступу до AWS. Хтось знає, чи буде він також виглядати в ролі екземпляра EC2, щоб отримати тимчасову пару, чи мені доведеться сам це кодувати?
sergiopereira

Щоб відповісти на моє власне запитання. Так! Сценарії використовуватимуть роль IAM для екземпляра EC2 (якщо вона присутня.) Зрозуміло, що обрана вами роль повинна мати необхідні дозволи CloudWatch.
sergiopereira

5

Інструменти контролю та моніторингу EC2 не можуть надати вам ці дані, оскільки файлова система ваших примірників доступна ТІЛЬКИ самим екземпляром . Як основна архітектура обладнання, так і модель безпеки вимагають цього обмеження. Подумайте, як це було б погано, якби програмне забезпечення поза вашим комп’ютером могло б тикатися на файли на ваших жорстких дисках!

Ось непростий спосіб змусити cron (встановлений у більшості систем у будь-якому випадку) періодично перевіряти ці дані. Ваші системи в будь-якому разі повинні мати мінімальні вимоги для обробки повідомлень про кореневу пошту. Я рекомендую мати принаймні матеріалістичний агент вихідної пошти та налаштувати псевдонім root або адміністратора для передачі вам у всіх системах, якими ви керуєте. Багато програм, включаючи cronочікують такої конфігурації.

Ви можете додати це у свій crontab:

0 0 * * * test $(df / | grep ^/ | awk '{print $4}') -lt 1048576 && echo "Warning: Free disk space is less than 1G on /"

Щоб зламати це, це

  • Створює роботу, яка руниться раз на день о 00:00.
  • Cron автоматично обробляє електронну пошту системному адміністратору з виведенням завдань. Це завдання дає результат лише в тому випадку, якщо є помилка або якщо місце на диску мало
  • У testкоманді встановлює просте порівняння оболонки з використанням -ltменш ніж оператора і значенням equivolent фіксованого 1 Гб вільного простору.
  • dfКоманда перевіряє вільний простір на /файлову систему
  • grepОтримує вас тільки рядок виводу вам потрібно замість заголовків dfвключають в себе.
  • awkПрибуде тільки четвертий стовпець у висновку, вільний простір номер.
  • &&Каже , щоб запустити наступну команду , тільки якщо перша одна ( test x -lt y) повертає істину.

4

Я написав сценарій, як мені потрібно було перевірити декілька серверів у моїй групі 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

2
"Сценарії моніторингу Amazon CloudWatch для Linux" можуть підштовхувати використання диска до CloudWatch як власні показники. docs.amazonwebservices.com/AmazonCloudWatch/latest/…
Laurion Burchall

@LaurionBurchall будь ласка, поставте це як відповідь. IMO - це правильна відповідь, оскільки дає можливість використовувати сповіщення CloudWatch.
Джо Констант,



0

Крон - твій друг. Помістіть цей файл у свою /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

ПРИМІТКА. Цей скрипт скаже, що встановлені CDROM заповнені.


0

Це швидкий сценарій PowerShell, який я написав, що працює на нашому DC в 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
    } 


}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.