Amazon Elastic Compute Cloud
Benutzerhandbuch für Linux-Instances

Überwachen von Arbeitsspeicher- und Datenträgermetriken für Amazon EC2 Linux-Instances

Sie können mit Amazon CloudWatch Metriken und Protokolle von den Betriebssystemen für Ihre EC2-Instances erfassen.

CloudWatch-Agent

Sie können den CloudWatch-Agenten verwenden, um sowohl Systemmetriken als auch Protokolldateien von Amazon EC2-Instances und lokalen Servern zu sammeln. Der Agent unterstützt sowohl Windows Server als auch Linux und ermöglicht Ihnen die Auswahl der zu erfassenden Metriken, einschließlich Sub-Ressourcen-Metriken wie z. B. pro CPU-Kern. Wir empfehlen, den Agenten anstelle der Überwachungsskripts zu verwenden, um Metriken und Protokolle zu erfassen. Weitere Informationen finden Sie unter Erfassen von Metriken und Protokollen von Amazon EC2-Instances und lokalen Servern mit dem CloudWatch-Agent im Amazon CloudWatch-Benutzerhandbuch.

CloudWatch-Überwachungsskripts

Wichtig

Wir empfehlen, den CloudWatch zu verwenden, um Metriken und Protokolle zu erfassen. Die Informationen zu den Überwachungsskripts werden Kunden zur Verfügung gestellt, die immer noch die alten Überwachungsskripts verwenden, um Informationen von ihren Linux-Instances zu sammeln.

Die Überwachungsskripts veranschaulichen, wie benutzerdefinierte Metriken für Amazon CloudWatch erstellt und genutzt werden. Diese Perl-Beispielskripts umfassen ein voll funktionsfähiges Beispiel, bei dem Speicher-, Auslagerungs- und Speicherplatz-Auslastungsmetriken für eine Linux-Instance gemeldet werden.

Es gelten die üblichen nutzungsabhängigen Amazon CloudWatch-Gebühren für benutzerdefinierte Metriken, wenn Sie diese Skripts verwenden. Weitere Informationen finden Sie in der Amazon CloudWatch-Preisliste.

Unterstützte Systeme

Die Überwachungsskripts wurden auf Instances unter Verwendung der folgenden Systeme getestet:

  • Amazon Linux 2

  • Amazon Linux AMI 2014.09.2 und höher

  • Red Hat Enterprise Linux 6.9 und 7.4

  • SUSE Linux Enterprise Server 12

  • Ubuntu Server 14.04 und 16.04

Erforderliche Berechtigungen

Stellen Sie sicher, dass die Skripts über die Berechtigung zum Aufrufen der folgenden Aktionen verfügen, indem Sie Ihrer Instance eine IAM-Rolle zuweisen:

  • cloudwatch:PutMetricData

  • cloudwatch:GetMetricStatistics

  • cloudwatch:ListMetrics

  • ec2:DescribeTags

Weitere Informationen finden Sie unter Arbeiten mit IAM-Rollen.

Installieren erforderlicher Pakete

Bei einigen Linux-Versionen müssen Sie zusätzliche Perl-Module installieren, bevor Sie die Überwachungsskripts verwenden können.

So installieren Sie die erforderlichen Pakete unter Amazon Linux 2 und Amazon Linux AMI

  1. Melden Sie sich bei Ihrer Instance an. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit Ihrer Linux-Instance.

  2. Installieren Sie die Pakete wie folgt über die Eingabeaufforderung:

    sudo yum install -y perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https perl-Digest-SHA.x86_64

So installieren Sie die erforderlichen Pakete unter Ubuntu

  1. Melden Sie sich bei Ihrer Instance an. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit Ihrer Linux-Instance.

  2. Installieren Sie die Pakete wie folgt über die Eingabeaufforderung:

    sudo apt-get update sudo apt-get install unzip sudo apt-get install libwww-perl libdatetime-perl

So installieren Sie die erforderlichen Pakete unter Red Hat Enterprise Linux 7

  1. Melden Sie sich bei Ihrer Instance an. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit Ihrer Linux-Instance.

  2. Installieren Sie die Pakete wie folgt über die Eingabeaufforderung:

    sudo yum install perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https perl-Digest-SHA --enablerepo="rhui-REGION-rhel-server-optional" -y sudo yum install zip unzip

So installieren Sie die erforderlichen Pakete unter Red Hat Enterprise Linux 6.9:

  1. Melden Sie sich bei Ihrer Instance an. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit Ihrer Linux-Instance.

  2. Installieren Sie die Pakete wie folgt über die Eingabeaufforderung:

    sudo yum install perl-DateTime perl-CPAN perl-Net-SSLeay perl-IO-Socket-SSL perl-Digest-SHA gcc -y sudo yum install zip unzip
  3. Führen Sie CPAN als Benutzer mit erweiterten Rechten aus:

    sudo cpan

    Betätigen Sie bei allen Aufforderungen die Eingabetaste, bis Sie die folgende Aufforderung sehen:

    cpan[1]>
  4. Führen Sie bei der CPAN-Aufforderung alle nachfolgenden Befehle aus: Führen Sie einen Befehl aus, warten Sie auf die Installation, kehren Sie zur CPAN-Aufforderung zurück, und führen Sie den nächsten Befehl aus. Betätigen Sie wie vorher die Eingabetaste, wenn Sie zum Fortsetzen des Prozesses aufgefordert werden:

    cpan[1]> install YAML cpan[2]> install LWP::Protocol::https cpan[3]> install Sys::Syslog cpan[4]> install Switch

So installieren Sie die erforderlichen Pakete unter SUSE

  1. Melden Sie sich bei Ihrer Instance an. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit Ihrer Linux-Instance.

  2. Auf Servern mit SUSE Linux Enterprise Server 12 müssen Sie ggf. zuerst das Paket perl-Switch herunterladen. Sie können dieses Paket mit den folgenden Befehlen herunterladen und installieren:

    wget http://download.opensuse.org/repositories/devel:/languages:/perl/SLE_12_SP3/noarch/perl-Switch-2.17-32.1.noarch.rpm sudo rpm -i perl-Switch-2.17-32.1.noarch.rpm
  3. Installieren Sie die erforderlichen Pakete wie folgt:

    sudo zypper install perl-Switch perl-DateTime sudo zypper install –y "perl(LWP::Protocol::https)"

Installieren von Überwachungsskripts

Die folgenden Schritte veranschaulichen, wie Sie die CloudWatch-Überwachungsskripts auf einer EC2 Linux-Instance herunterladen, entpacken und konfigurieren.

So laden Sie die Überwachungsskripts herunter und führen die Installation und Konfiguration durch

  1. Wechseln Sie an der Eingabeaufforderung zu einem Ordner, in dem Sie die Überwachungsskripts speichern möchten, und führen Sie den folgenden Befehl aus, um sie herunterzuladen:

    curl https://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.2.zip -O
  2. Führen Sie die folgenden Befehle aus, um die heruntergeladenen Überwachungsskripts zu installieren:

    unzip CloudWatchMonitoringScripts-1.2.2.zip && \ rm CloudWatchMonitoringScripts-1.2.2.zip && \ cd aws-scripts-mon

Das Paket für die Überwachungsskripts enthält folgende Dateien:

  • CloudWatchClient.pm – Freigegebenes Perl-Modul, mit dem das Aufrufen von Amazon CloudWatch aus anderen Skripts vereinfacht wird.

  • mon-put-instance-data.pl – Sammelt Systemmetriken auf einer Amazon EC2-Instance (Speicher, Auslagerung, Speicherplatzauslastung) und sendet sie an Amazon CloudWatch.

  • mon-get-instance-stats.pl – Führt eine Amazon CloudWatch-Abfrage durch und zeigt die neuesten Nutzungsstatistiken für die EC2-Instance an, auf der dieses Skript ausgeführt wird.

  • awscreds.template – Dateivorlage für AWS-Anmeldeinformationen, mit der Ihre Zugriffsschlüssel-ID und Ihr geheimer Zugriffsschlüssel gespeichert werden.

  • LICENSE.txt – Textdatei mit der Apache 2.0-Lizenz.

  • NOTICE.txt – Copyright-Vermerk.

mon-put-instance-data.pl

Das Skript sammelt Daten zum Speicher, zur Auslagerung und zur Speicherplatzauslastung auf dem aktuellen System. Anschließend erfolgt ein Remote-Aufruf von Amazon CloudWatch, um die gesammelten Daten als benutzerdefinierte Metriken zu melden.

Optionen

Name Beschreibung

--mem-util

Sammelt und sendet MemoryUtilization-Metriken als Prozentwerte. Diese Metrik zählt den von Anwendungen und dem Betriebssystem reservierten Speicherplatz, einschließlich des verwendeten Cache- und Pufferspeichers, wenn Sie die Option --mem-used-incl-cache-buff angeben.

--mem-used

Sammelt und sendet MemoryUsed-Metriken in Megabyte. Diese Metrik zählt den von Anwendungen und dem Betriebssystem reservierten Speicherplatz, einschließlich des verwendeten Cache- und Pufferspeichers, wenn Sie die Option --mem-used-incl-cache-buff angeben.

--mem-used-incl-cache-buff

Wenn Sie diese Option verwenden, wird aktuell für Cache und Puffer verwendeter Speicher als „genutzt“ gezählt, wenn die Metrik für --mem-util, --mem-used und --mem-avail gemeldet wird.

--mem-avail

Sammelt und sendet MemoryAvailable-Metriken in Megabyte. Diese Metrik zählt den von Anwendungen und dem Betriebssystem reservierten Speicherplatz, einschließlich des verwendeten Cache- und Pufferspeichers, wenn Sie die Option --mem-used-incl-cache-buff angeben.

--swap-util

Sammelt und sendet SwapUtilization-Metriken als Prozentwerte.

--swap-used

Sammelt und sendet SwapUsed-Metriken in Megabyte.

--disk-path=PATH

Wählt den Datenträger aus, für den Meldungen erfolgen sollen.

PATH kann einen Mountingpunkt oder eine beliebige Datei auf einem Mountingpunkt für das Dateisystem festlegen, für das Meldungen erfolgen sollen. Wenn Sie mehrere Datenträger auswählen möchten, müssen Sie für jeden einen --disk-path=PATH angeben.

Um einen Datenträger für die unter / und /home bereitgestellten Dateisysteme auszuwählen, müssen Sie einen der folgenden Parameter verwenden:

--disk-path=/ --disk-path=/home

--disk-space-util

Sammelt und sendet die DiskSpaceUtilization-Metrik für die ausgewählten Datenträger. Diese Metrik wird in Prozentwerten angegeben.

Beachten Sie, dass die von diesem Skript berechneten Datenträgernutzungsmetriken von den Werten abweichen, die vom Befehl „df -k -l“ berechnet wurden. Wenn Sie die Werte von „df -k -l“ hilfreicher finden, können Sie die Berechnungen im Skript ändern.

--disk-space-used

Sammelt und sendet die DiskSpaceUsed-Metrik für die ausgewählten Datenträger. Diese Metrik wird standardmäßig in Gigabyte angegeben.

Aufgrund von reserviertem Speicherplatz in Linux-Betriebssystemen ergibt die Summe aus verwendetem Speicherplatz und verfügbarem Speicherplatz u. U. nicht genau die Menge des gesamten Speicherplatzes.

--disk-space-avail

Sammelt und sendet die DiskSpaceAvailable-Metrik für die ausgewählten Datenträger. Diese Metrik wird in Gigabyte angegeben.

Aufgrund von reserviertem Speicherplatz in Linux-Betriebssystemen ergibt die Summe aus verwendetem Speicherplatz und verfügbarem Speicherplatz u. U. nicht genau die Menge des gesamten Speicherplatzes.

--memory-units=UNITS

Gibt die Einheiten an, in denen die Speichernutzung gemeldet wird. Liegt keine Angabe vor, wird die Speichernutzung in Megabyte angegeben. Folgende EINHEITEN sind möglich: Byte, Kilobyte, Megabyte, Gigabyte.

--disk-space-units=UNITS

Gibt die Einheiten an, in denen die Datenträgernutzung gemeldet wird. Liegt keine Angabe vor, wird die Datenträgernutzung in Gigabyte angegeben. Folgende EINHEITEN sind möglich: Byte, Kilobyte, Megabyte, Gigabyte.

--aws-credential- file=PATH

Gibt den Speicherort der Datei an, in der die AWS-Anmeldeinformationen enthalten sind.

Dieser Parameter kann nicht mit den Parametern --aws-access-key-id und --aws-secret-key verwendet werden.

--aws-access-key-id=VALUE

Gibt die AWS-Zugriffsschlüssel-ID zur Identifizierung des Aufrufers an. Muss gemeinsam mit der Option --aws-secret-key verwendet werden. Verwenden Sie diese Option nicht gemeinsam mit dem Parameter --aws-credential-file.

--aws-secret-key=VALUE

Gibt den geheimen AWS-Zugriffsschlüssel an, der zum Signieren der Anforderung an CloudWatch verwendet wird. Muss gemeinsam mit der Option --aws-access-key-id verwendet werden. Verwenden Sie diese Option nicht gemeinsam mit dem Parameter --aws-credential-file.

--aws-iam-role=VALUE

Gibt die IAM-Rolle an, die für die Bereitstellung der AWS-Anmeldeinformationen verwendet wird. Der Wert =VALUE ist erforderlich. Sind keine Anmeldeinformationen angegeben, wird die standardmäßig mit der EC2 Instance verknüpfte IAM-Rolle verwendet. Es kann nur eine IAM-Rolle verwendet werden. Werden keine IAM-Rollen gefunden oder wird mehr als eine IAM-Rolle gefunden, meldet das Skript einen Fehler.

Verwenden Sie diese Option nicht mit den Parametern --aws-credential-file, --aws-access-key-id oder --aws-secret-key.

--aggregated[=only]

Fügt aggregierte Metriken für Instance-Typ, AMI-ID und für die Region allgemein hinzu. Der Wert =only ist optional. Ist dieser Wert angegeben, meldet das Skript nur aggregierte Metriken.

--auto-scaling[=only]

Fügt aggregierte Metriken für die Auto Scaling-Gruppe hinzu. Der Wert =only ist optional. Ist dieser Wert angegeben, meldet das Skript nur Auto Scaling-Metriken. Die IAM-Richtlinie, die mit dem IAM-Konto oder der Rolle für die Skriptverwendung verknüpft ist, muss über die Berechtigung zum Aufrufen der EC2-Aktion verfügen DescribeTags.

--verify

Führt einen Testlauf des Skripts aus, das die Metriken sammelt, und bereitet eine vollständige HTTP-Anforderung vor, aber ruft CloudWatch nicht auf, um die Daten zu melden. Diese Option überprüft zudem, ob die Anmeldeinformationen vorliegen. Wenn diese Option im Verbose-Modus ausgeführt wird, gibt sie Metriken aus, die an CloudWatch gesendet werden.

--from-cron

Verwenden Sie diese Option, wenn Sie die Skripts über Cron aufrufen. Bei Verwendung dieser Option wird die gesamte Diagnostikausgabe unterdrückt, aber es werden Fehlermeldungen an das lokale Systemprotokoll des Benutzerkontos gesendet.

--verbose

Zeigt detaillierte Informationen dazu an, was mit dem Skript durchgeführt wird.

--help

Zeigt Nutzungsinformationen an.

--version

Zeigt die Versionsnummer des Skripts an.

Beispiele

In den folgenden Beispielen wird angenommen, dass Sie eine IAM-Rolle oder awscreds.conf-Datei bereitgestellt haben. Andernfalls müssen Sie die Anmeldeinformationen mithilfe der Parameter --aws-access-key-id und --aws-secret-key für diese Befehle angeben.

Beim folgenden Beispiel wird ein einfacher Testlauf durchgeführt, ohne Daten an CloudWatch zu senden.

./mon-put-instance-data.pl --mem-util --verify --verbose

Beim folgenden Beispiel werden alle verfügbaren Speichermetriken erfasst und an CloudWatch gesendet, wobei Cache- und Pufferspeicher als „genutzt“ gezählt werden.

./mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-util --mem-used --mem-avail

Beim folgenden Beispiel werden aggregierte Metriken für eine Auto Scaling-Gruppe gesammelt und an Amazon CloudWatch gesendet, ohne einzelne Instance-Metriken zu melden.

./mon-put-instance-data.pl --mem-util --mem-used --mem-avail --auto-scaling=only

Beim folgenden Beispiel werden aggregierte Metriken für Instance-Typ, AMI-ID und Region gesammelt und an Amazon CloudWatch gesendet, ohne einzelne Instance-Metriken zu melden.

./mon-put-instance-data.pl --mem-util --mem-used --mem-avail --aggregated=only

Um einen Cron-Plan für Metriken festzulegen, die an CloudWatch gemeldet werden, bearbeiten Sie Crontab mit dem Befehl crontab -e. Fügen Sie den folgenden Befehl hinzu, um alle fünf Minuten Informationen über die Speicher- und Datenträgernutzung an CloudWatch zu senden:

*/5 * * * * ~/aws-scripts-mon/mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-util --disk-space-util --disk-path=/ --from-cron

Wenn im Skript ein Fehler auftritt, schreibt das Skript die Fehlermeldung in das Systemprotokoll.

mon-get-instance-stats.pl

Dieses Skript fragt CloudWatch nach Statistiken zu Speicher-, Auslagerungs- und Speicherplatzmetriken für das angegebene Zeitintervall innerhalb der letzten Stunden ab. Diese Daten werden für die Amazon EC2 Instance bereitgestellt, auf der das Skript ausgeführt wird.

Optionen

Name Beschreibung

--recent-hours=N

Gibt die Anzahl der letzten Stunden an, für die Meldungen erfolgen sollen (dargestellt durch N, wobei N eine Ganzzahl ist).

--aws-credential-file=PATH

Gibt den Speicherort der Datei an, in der die AWS-Anmeldeinformationen enthalten sind.

--aws-access-key-id=VALUE

Gibt die AWS-Zugriffsschlüssel-ID zur Identifizierung des Aufrufers an. Muss gemeinsam mit der Option --aws-secret-key verwendet werden. Verwenden Sie diese Option nicht gemeinsam mit der Option --aws-credential-file.

--aws-secret-key=VALUE

Gibt den geheimen AWS-Zugriffsschlüssel an, der zum Signieren der Anforderung an CloudWatch verwendet wird. Muss gemeinsam mit der Option --aws-access-key-id verwendet werden. Verwenden Sie diese Option nicht gemeinsam mit der Option --aws-credential-file.

--aws-iam-role=VALUE

Gibt die IAM-Rolle an, die für die Bereitstellung der AWS-Anmeldeinformationen verwendet wird. Der Wert =VALUE ist erforderlich. Sind keine Anmeldeinformationen angegeben, wird die standardmäßig mit der EC2 Instance verknüpfte IAM-Rolle verwendet. Es kann nur eine IAM-Rolle verwendet werden. Werden keine IAM-Rollen gefunden oder wird mehr als eine IAM-Rolle gefunden, meldet das Skript einen Fehler.

Verwenden Sie diese Option nicht mit den Parametern --aws-credential-file, --aws-access-key-id oder --aws-secret-key.

--verify

Führt einen Testlauf des Skripts aus. Diese Option überprüft zudem, ob die Anmeldeinformationen vorliegen.

--verbose

Zeigt detaillierte Informationen dazu an, was mit dem Skript durchgeführt wird.

--help

Zeigt Nutzungsinformationen an.

--version

Zeigt die Versionsnummer des Skripts an.

Beispiel

Um Nutzungsstatistiken für die letzten 12 Stunden zu erhalten, müssen Sie folgenden Befehl ausführen:

./mon-get-instance-stats.pl --recent-hours=12

Nachfolgend finden Sie eine Beispielantwort:

Instance metric statistics for the last 12 hours. CPU Utilization Average: 1.06%, Minimum: 0.00%, Maximum: 15.22% Memory Utilization Average: 6.84%, Minimum: 6.82%, Maximum: 6.89% Swap Utilization Average: N/A, Minimum: N/A, Maximum: N/A Disk Space Utilization on /dev/xvda1 mounted as / Average: 9.69%, Minimum: 9.69%, Maximum: 9.69%

Anzeigen von benutzerdefinierten Metriken in der Konsole

Nachdem Sie das Skript mon-put-instance-data.pl erfolgreich ausgeführt haben, können Sie Ihre benutzerdefinierten Metriken in der Amazon CloudWatch-Konsole anzeigen.

So zeigen Sie benutzerdefinierte Metriken an

  1. Führen Sie mon-put-instance-data.pl wie zuvor beschrieben aus.

  2. Öffnen Sie die CloudWatch-Konsole unter https://console.aws.amazon.com/cloudwatch/.

  3. Wählen Sie View Metrics aus.

  4. Unter Viewing (Anzeigen) werden Ihre vom Skript gesendeten benutzerdefinierten Metriken mit dem Präfix System/Linux angezeigt.

Fehlersuche

Im Modul CloudWatchClient.pm werden Instance-Metadaten lokal zwischengespeichert. Wenn Sie ein AMI aus einer Instance erstellen, in der Sie die Überwachungsskripts ausgeführt haben, geben sämtliche vom AMI innerhalb der Cache-TTL (Standard: 6 Stunden, 24 Stunden für Auto Scaling-Gruppen) gestarteten Instances Metriken aus, die die Instance-ID der ursprünglichen Instance verwenden. Nachdem der Cache-TTL-Zeitraum abgelaufen ist, ruft das Skript neue Daten ab und die Überwachungsskripts verwenden die Instance-ID der aktuellen Instance. Um dies sofort zu korrigieren, müssen Sie die zwischengespeicherten Daten mit folgendem Befehl entfernen:

rm /var/tmp/aws-mon/instance-id