Найпростіший спосіб автоматично перевірити простір на диску 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.