Frage Der einfachste Weg, um den EC2-Speicherplatz automatisch zu prüfen und zu alarmieren, wenn der Speicherplatz knapp wird?


Ausführen des Amazon Linux AMI. Es scheint, dass CloudWatch nicht nach freiem Speicherplatz sucht. Ich habe eine Reihe von Servern und möchte idealerweise nicht jeden mit einem Mail-Server konfigurieren müssen, Skript, um Speicherplatz usw. zu überprüfen

Gibt es einen einfacheren Weg, dies zu tun?


23
2018-05-08 10:28


Ursprung




Antworten:


Amazon bietet dafür ab März 2012 Skripte an:

Amazon CloudWatch Monitoring-Skripte für Linux: http://aws.amazon.com/code/8720044071969977


12
2018-02-11 22:56



Die Skripts sehen ziemlich direkt aus. Die Sache, die mich beunruhigt, ist, dass sie ein bekanntes Paar AWS-Zugangsschlüssel und -geheimnis benötigt. Weiß jemand, ob es auch in der EC2-Instanzrolle aussehen wird, um ein temporäres Paar zu bekommen, oder ob ich das selbst programmieren muss? - sergiopereira
Um meine eigene Frage zu beantworten. Ja! Die Skripts verwenden die IAM-Rolle der EC2-Instanz (falls vorhanden). Der Haken dabei ist, dass die ausgewählte Rolle über die erforderlichen CloudWatch-Berechtigungen verfügen muss. - sergiopereira


Es gibt keine Möglichkeit für die EC2-Kontroll- und Überwachungswerkzeuge, Ihnen diese Daten zu geben, weil Das Dateisystem Ihrer Instanzen ist NUR für die Instanz selbst zugänglich. Sowohl die grundlegende Architektur der Hardware als auch das Sicherheitsmodell erfordern diese Einschränkung. Denken Sie darüber nach, wie schlimm es wäre, wenn Software außerhalb Ihres Computers die Dateien auf Ihren Festplatten durchsuchen könnte!

Hier ist eine einfache Möglichkeit, cron (auf den meisten Systemen installiert) diese Daten regelmäßig zu überprüfen. Ihre Systeme sollten die Mindestanforderungen für die Verarbeitung von Root-Mail-Benachrichtigungen erfüllen. Ich empfehle, mindestens einen materialistischen Agenten für ausgehende E-Mails zu haben und den Root- oder Administrator-Alias ​​zu konfigurieren, der auf allen von Ihnen verwalteten Systemen an Sie weitergeleitet wird. Viele Programme einschließlich cron erwarte diese Konfiguration.

Sie könnten dies Ihrer Crontab hinzufügen:

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

Um das zu brechen, das

  • Erstellt einen Job, der einmal täglich um 00:00 Uhr runzelt.
  • Cron übernimmt automatisch die E-Mail an den Systemadministrator mit der Ausgabe von Jobs. Dieser Job erzeugt nur Ausgaben, wenn ein Fehler auftritt oder wenn der Speicherplatz knapp ist
  • Das test Befehl richtet einen einfachen Shell - Vergleich mit dem -lt kleiner als der Operator und ein fester Wert, der 1Gb freiem Speicherplatz entspricht.
  • Das df Befehl testet freien Speicherplatz auf dem / Dateisystem
  • Das grep bekommt Sie nur die Zeile der Ausgabe, die Sie anstelle der Header benötigen df beinhaltet.
  • Das awk Get 's ist nur die vierte Spalte in der Ausgabe, die freie Speicherplatznummer.
  • Das && sagt, dass der nächste Befehl nur ausgeführt wird, wenn der erste (der test x -lt y) gibt wahr zurück.

4
2018-05-09 11:58





Ich schrieb ein Skript, als ich mehrere Server in meiner EC2-Gruppe überprüfen musste. Es benötigt eine Datei mit einer Liste jedes Server-IP / Domain-Namens in einer einzelnen Zeile.

#! /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

4
2018-05-10 07:47



Die "Amazon CloudWatch Monitoring Scripts für Linux" können die Festplattennutzung in CloudWatch als benutzerdefinierte Messwerte übertragen. docs.amazonwebservices.com/AmazonCloudWatch/latest/... - Laurion Burchall
@LaurionBurchall bitte als Antwort darauf. IMO, das ist die richtige Antwort, da es die Möglichkeit gibt, CloudWatch-Warnungen zu verwenden. - Joe Constant


Schritt für Schritt Anleitung zum Einrichten einer EC2 Instanz mit CloudWatch:

http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/mon-scripts.html


1
2017-12-08 16:34





Ich benutze dieses Skript: http://nixcraft.com/shell-scripting/3238-shell-script-check-disk-space-remote-systems.html


0
2018-05-10 21:20





Cron ist dein Freund. Legen Sie diese Datei in Ihre /etc/cron.daily  Verzeichnis und es wird einmal pro Tag ausgeführt:

#!/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

HINWEIS: Dieses Skript sagt, dass gemountete CD-ROMs voll sind.


0
2017-08-16 23:10





Dies ist ein kurzes PowerShell-Skript, das ich geschrieben habe, das auf unserem DC in AWS ausgeführt wird und eine E-Mail an eine Gruppe von Empfängern sendet, wenn ein Laufwerk voll ist. Es dauert eine CSV mit 2 Spalten - ein Titel mit einem Computernamen und ein Titel mit einem Laufwerksbuchstaben. Wir haben keinen Mail-Server in unserer AWS-Umgebung, also habe ich ihn so konfiguriert, dass er über SES versendet wird. Sie können das Skript auch leicht ändern, um nur gelegentlich einen Bericht über die Laufwerksnutzung zu senden. Ich dachte nur, dass ich das hier posten würde, da alle Lösungen, die ich gefunden habe, für Linux-Instanzen waren.

$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
    } 


}

0
2017-09-28 17:36