
🧠 EC2-Speicher und -Festplatte mit CloudWatch Agent überwachen: Schritt-für-Schritt-Einrichtung
Ihre EC2-Instanz reagiert nicht mehr, aber CloudWatch zeigt, dass alles in Ordnung ist? Ein Klassiker. AWS liefert standardmäßig CPU-, Netzwerk- und Festplatten-I/O-Metriken, aber keine Speicherauslastung oder freien Festplattenspeicher. Diese Werte bleiben im Inneren der virtuellen Maschine verborgen, und solange Sie sie nicht herausholen, fliegen Sie blind.
Wenn der Arbeitsspeicher zur Neige geht, warnt die Instanz Sie nicht; sie stürzt einfach ab. Der OOM-Killer beendet Prozesse in zufälliger Reihenfolge, und Sie rätseln: Ist ein Plugin abgestürzt? Ist die Datenbank ausgefallen? Die eigentliche Ursache ist, dass Ihnen die Gigabyte an RAM ausgegangen sind, die Sie nicht überwacht haben. Bei der Festplatte verhält es sich genauso: Logs, Backups und temporäre Dateien füllen den Speicher stillschweigend auf, und eines Morgens sehen Sie No space left on device.
Die Lösung ist der CloudWatch Agent, der Standard-Agent von AWS, der Speicher, Festplatte, Swap und etwa zwei Dutzend weitere Systemmetriken erfasst und an CloudWatch sendet. Die Einrichtung dauert 20 Minuten und bewegt sich innerhalb des kostenlosen Kontingents (10 benutzerdefinierte Metriken pro Monat). Nachfolgend eine Schritt-für-Schritt-Anleitung von IAM bis zum fertigen Dashboard.
💡 Kurzer Überblick:
- Erstellen Sie eine IAM-Richtlinie mit
cloudwatch:PutMetricDataund weisen Sie sie einem Benutzer zu - Laden Sie den CloudWatch Agent herunter und installieren Sie ihn auf einer Ubuntu-Instanz
- Konfigurieren Sie die JSON-Datei: Speicher, Festplatte, Swap
- Starten Sie den Agent und prüfen Sie, ob Metriken in CloudWatch ankommen
- Erstellen Sie ein benutzerdefiniertes Dashboard mit Diagrammen zur Speicher- und Festplattennutzung
AWS Identitäts- und Zugriffsverwaltung
Der Agent benötigt Berechtigungen, um Metriken an CloudWatch zu senden. Wir erstellen eine IAM-Richtlinie und weisen sie einem Benutzer mit programmatischem Zugriff zu.
IAM-Richtlinie
Öffnen Sie die IAM-Konsole, gehen Sie zu Richtlinien → Richtlinie erstellen und wechseln Sie zum Tab JSON. Fügen Sie dieses Dokument ein:
1 { 2 "Version": "2012-10-17", 3 "Statement": [ 4 { 5 "Sid": "CloudWatchAgentMetrics", 6 "Effect": "Allow", 7 "Action": [ 8 "cloudwatch:PutMetricData", 9 "ec2:DescribeTags", 10 "cloudwatch:GetMetricStatistics", 11 "cloudwatch:ListMetrics" 12 ], 13 "Resource": "*" 14 } 15 ] 16 }
Klicken Sie auf Richtlinie überprüfen, geben Sie einen Namen ein (zum Beispiel CloudWatchAgentPolicy) und klicken Sie auf Richtlinie erstellen.
IAM-Benutzer
Gehen Sie zu Benutzer → Benutzer hinzufügen. Geben Sie einen Namen ein und stellen Sie sicher, dass Sie das Kontrollkästchen „Programmatischer Zugriff" aktivieren; dadurch erhalten Sie die Zugriffsschlüssel-ID und den geheimen Zugriffsschlüssel, die der Agent zur Authentifizierung verwendet.

Wählen Sie auf dem Berechtigungsbildschirm Vorhandene Richtlinien direkt anhängen. Wählen Sie im Filter für den Richtlinientyp Kundenverwaltet, um die soeben erstellte CloudWatchAgentPolicy schnell zu finden.

Aktivieren Sie die Richtlinie und klicken Sie auf Weiter → Benutzer erstellen. AWS zeigt die Zugriffsschlüssel an. Speichern Sie die Zugriffsschlüssel-ID und den geheimen Zugriffsschlüssel sofort. Wenn Sie die Seite schließen, verschwinden die Schlüssel unwiderruflich und Sie müssen sie neu erstellen.

Installation des CloudWatch Agent
Die alten Perl-Überwachungsskripte (CloudWatchMonitoringScripts-1.2.2.zip) sind seit Langem als veraltet gekennzeichnet. Der aktuelle Ansatz ist der vereinheitlichte CloudWatch Agent, der nicht nur Speicher und Festplatte, sondern auch Swap, CPU-Last, Netzwerkschnittstellen und etwa zwei Dutzend weitere Metriken standardmäßig erfasst.
Herunterladen und Installation
Verbinden Sie sich per SSH mit der Instanz und laden Sie das Agent-Paket für Ubuntu herunter:
1 wget https://amazoncloudwatch-agent.s3.amazonaws.com/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb
Installieren Sie das Paket mit dpkg:
1 sudo dpkg -i amazon-cloudwatch-agent.deb
Falls der Paketmanager fehlende Abhängigkeiten bemängelt, installieren Sie diese mit einem einzigen Befehl:
1 sudo apt-get install -f
Der Agent ist installiert, weiß aber noch nicht, welche Metriken er erfassen oder welche Schlüssel er für die CloudWatch-Authentifizierung verwenden soll. Konfigurieren wir ihn.
Hinweis: Der Agent ist auch über AWS Systems Manager (SSM) verfügbar. Wenn Sie Dutzende von Instanzen haben, ist die zentrale Bereitstellung per Run Command ohne SSH auf jede einzelne Maschine komfortabler. Für ein oder zwei Instanzen ist die manuelle Installation einfacher und schneller.
Konfiguration des Agent
Erstellen der Konfigurationsdatei
Die Konfiguration des CloudWatch Agent ist ein JSON-Dokument, das beschreibt, welche Metriken in welchem Intervall erfasst werden sollen. Starten Sie den integrierten Assistenten:
1 sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
Der Assistent stellt Ihnen mehrere Fragen interaktiv: welcher Servertyp (EC2/On-Premises), wohin die Metriken gesendet werden sollen (CloudWatch) und welche Metriken erfasst werden sollen. Um Arbeitsspeicher und Festplatte zu überwachen, antworten Sie wie folgt:
- Betriebssystem: Linux
- Nutzen Sie Amazon EC2?: Ja
- Welche Metriken sollen erfasst werden: Benutzerdefinierte Metriken (
memunddisk_used_percent) - Auflösung: 60 Sekunden (Standard)
- Protokolldateien: Überspringen, falls Sie keine Protokolle benötigen
Der Assistent erzeugt eine config.json-Datei im Verzeichnis /opt/aws/amazon-cloudwatch-agent/bin/. Hier ein minimales funktionsfähiges Beispiel für die prozentuale Speichernutzung plus prozentuale Festplattennutzung plus Swap:
1 { 2 "agent": { 3 "metrics_collection_interval": 60, 4 "run_as_user": "root" 5 }, 6 "metrics": { 7 "metrics_collected": { 8 "mem": { 9 "measurement": [ 10 "mem_used_percent" 11 ] 12 }, 13 "disk": { 14 "measurement": [ 15 "disk_used_percent" 16 ], 17 "resources": [ 18 "/" 19 ] 20 }, 21 "swap": { 22 "measurement": [ 23 "swap_used_percent" 24 ] 25 } 26 } 27 } 28 }
Der Parameter resources für disk legt den Einhängepunkt fest: "/" ist das Root-EBS-NVMe-SSD-Volume, der primäre Speicher der Instanz. Falls Sie zusätzliche Volumes haben (zum Beispiel /data), fügen Sie diese dem Array hinzu.
Agent-Anmeldedaten
Die beim IAM-Schritt gespeicherten Zugriffsschlüssel müssen dem Agenten bereitgestellt werden. Legen Sie eine Anmeldedatendatei im Home-Verzeichnis des Benutzers an:
1 sudo nano /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml
Fügen Sie diesen Abschnitt hinzu:
1 [credentials] 2 shared_credential_profile = "AmazonCloudWatchAgent"
Fügen Sie die Anmeldedaten dann der standardmäßigen AWS-Anmeldedatendatei hinzu:
1 aws configure --profile AmazonCloudWatchAgent
Das System fragt nach der Access Key ID, dem Secret Access Key und der Region. Nachdem Sie diese eingegeben haben, kann der Agent Metriken im Namen des von Ihnen erstellten IAM-Benutzers senden.
Ein alternativer Ansatz ist eine IAM-Rolle, die der Instanz zugewiesen wird. Dies ist sicherer (keine Schlüssel auf der Festplatte gespeichert) und einfacher bei der Skalierung. Wenn Sie EC2 mit einer IAM-Rolle starten, die über cloudwatch:PutMetricData verfügt, übernimmt der Agent die Berechtigungen automatisch und Sie können den Schritt mit den Anmeldedaten überspringen.
Testen
Starten Sie den Agenten manuell und prüfen Sie, ob Metriken gesendet werden:
1 sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \ 2 -a fetch-config \ 3 -m ec2 \ 4 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json \ 5 -s
Das Flag -s startet den Agenten als Dienst. Innerhalb von ein bis zwei Minuten erscheinen die ersten Metriken in CloudWatch. Um den Datenfluss zu bestätigen, öffnen Sie die CloudWatch-Konsole, gehen Sie zu Metriken → Alle Metriken und suchen Sie den Namespace CWAgent (der Agent schreibt standardmäßig dorthin).

Erweitern Sie den Namespace, dann sehen Sie InstanceId-Dimensionen, aufgeschlüsselt nach Metriken: mem_used_percent, disk_used_percent und swap_used_percent. Klicken Sie auf eine beliebige Zeile, um ein Diagramm zu erzeugen; Sie können sofort prüfen, ob Daten ankommen und plausibel aussehen.
Vier Basismetriken (Arbeitsspeicher, Festplatte, Swap, CPU) auf zwei Instanzen ergeben acht Metriken. Die CloudWatch-Freistufe umfasst 10 benutzerdefinierte Metriken pro Monat, wie auf der Preisseite beschrieben. Damit liegen Sie innerhalb dieses Limits. Wenn Sie mehr als drei Instanzen haben, überschreiten einige Metriken das Limit, aber die Kosten sind moderat: 0,30 USD pro Metrik und Monat (AWS-Daten, Stand 2026).
Einrichten der zeitlichen Steuerung
Standardmäßig läuft der Agent als systemd-Dienst und sendet Metriken in dem Intervall, das in metrics_collection_interval festgelegt ist (in unserer Konfiguration 60 Sekunden). Es sind keine zusätzlichen Cron-Einträge erforderlich; systemd stellt sicher, dass der Agent aktiv bleibt und bei einem Absturz neu startet.
Prüfen Sie den Status:
1 sudo systemctl status amazon-cloudwatch-agent
Stellen Sie sicher, dass der Dienst active (running) und für den Start aktiviert ist (enabled). Falls nicht, starten und aktivieren Sie ihn:
1 sudo systemctl enable amazon-cloudwatch-agent 2 sudo systemctl start amazon-cloudwatch-agent
Nach einem Neustart startet der Agent automatisch.
Eine visuelle Demonstration des gesamten Ablaufs, von IAM bis zum Dashboard, finden Sie in diesem Video:
Ein benutzerdefiniertes Dashboard erstellen
Metriken treffen ein; jetzt müssen Sie sie ansprechend aufbereiten. Ich zeige Ihnen, wie Sie ein Dashboard zur Überwachung einer Produktionsinstanz erstellen: Arbeitsspeicher, Festplatte, CPU-Last und Guthaben (für T-Serien) auf einen Blick.
Das Dashboard anlegen
Gehen Sie in der CloudWatch-Konsole zu Dashboards → Dashboard erstellen. Vergeben Sie einen Namen (zum Beispiel Production-EC2) und wählen Sie einen Widget-Typ.

Wählen Sie für das erste Diagramm Linie; dieser Typ eignet sich am besten, um Metriken im Zeitverlauf darzustellen.

Diagramm-Widget
Klicken Sie auf Widget hinzufügen und wählen Sie den Typ Linie, ein einfaches Liniendiagramm und die beste Wahl für die meisten Metriken. Klicken Sie im sich öffnenden Dialog auf Konfigurieren und navigieren Sie zum Namespace CWAgent.

Suchen Sie die Metrik mem_used_percent für Ihre Instanz (anhand der InstanceId) und klicken Sie auf die Zeile; CloudWatch zeigt sofort ein Diagramm an.
Tipp: Der Typ Gestapelte Fläche eignet sich gut, wenn ein einzelnes Widget mehrere Metriken enthält (zum Beispiel Arbeitsspeicher + Swap); Zahl ist nützlich, um den aktuellen Wert sofort abzulesen (praktisch in einer Ecke des Dashboards); Text dient für Überschriften und Notizen zwischen Diagrammen.
Feinabstimmung des Diagramms

Einige Einstellungen, die das Diagramm lesbar machen:
Zeitraum: Wenn der Agent einmal pro Minute Metriken sendet, wählen Sie einen Zeitraum von 1 Minute, um die volle Auflösung der Daten zu sehen.
Titel: Benennen Sie die Diagrammlegende in etwas Menschenlesbares um, „RAM genutzt%" statt
mem_used_percent / i-1234567890abcdef0.Maximum der Y-Achse (Diagrammoptionen): Legen Sie das Limit fest (zum Beispiel 100 für Prozentwerte oder 16 für 16 GB RAM). Ohne diese Einstellung skaliert CloudWatch die Achse automatisch, und eine kleine Spitze sieht genauso alarmierend aus wie eine kritische Situation. Mit einem festen Limit erkennen Sie auf einen Blick, wie nah Sie am Limit sind.

Klicken Sie auf Widget erstellen; der erste Dashboard-Block ist fertig. Wiederholen Sie dies für jede Metrik: disk_used_percent, dann swap_used_percent, dann cpu_usage (eine integrierte EC2-Metrik, nicht vom CWAgent) und CPUCreditBalance für T-Serien. Sie können Widgets verschieben, in der Größe ändern und bearbeiten. Wenn alles passt, klicken Sie auf Dashboard speichern.

Das Dashboard ist fertig. Fügen Sie es zu den Favoriten hinzu (der Stern im oberen Menü) und kehren Sie mit einem Klick zurück, wann immer Sie den Instanzstatus vor einem Deployment oder nach einer Traffic-Spitze prüfen müssen.
⁉️🤔 Häufig gestellte Fragen
Warum enthalten die standardmäßigen EC2-Metriken keinen Arbeitsspeicher und keine Festplatte?
AWS virtualisiert CPU und Netzwerk auf Hypervisor-Ebene; diese Metriken sind extern verfügbar, ohne das Gastbetriebssystem zu betreten. Arbeitsspeicher und Festplatte sind interne Ressourcen der virtuellen Maschine; der Hypervisor kennt sie nicht. Um sie zu sehen, benötigen Sie einen Agenten innerhalb des Betriebssystems, der
/proc/meminfounddfausliest und die Daten an CloudWatch sendet. Genau das tut der CloudWatch Agent: Einmal pro Minute fragt er Systemzähler ab und sendet sie an den NamespaceCWAgent. Die vollständige Liste von rund zwei Dutzend Metriken finden Sie in der offiziellen AWS-Dokumentation.
Was kostet das?
Für ein typisches Szenario mit 1-2 Instanzen mit jeweils 4 Metriken: nichts. Das CloudWatch-Kontingent für die kostenfreie Nutzung umfasst 10 benutzerdefinierte Metriken, 10 Alarme und 3 Dashboards pro Konto und Monat, gemäß der CloudWatch-Preisseite. Zwei Instanzen mit je 4 Metriken ergeben 8 der 10 kostenfreien Metriken. Haben Sie mehr als drei Instanzen, kostet die Überschreitung des Limits 0,30 $ pro Metrik und Monat. Für ein Dutzend Server sind das 6-9 $ pro Monat, der Preis, um Überraschungen um drei Uhr morgens zu vermeiden.
Warum ist der CloudWatch Agent besser als die alten Perl-Skripte?
Die Perl-Skripte (
mon-put-instance-data.pl) sind seit 2023 offiziell veraltet und erhalten keine Updates mehr. Der CloudWatch Agent ist das offiziell unterstützte Tool, das nicht nur nach CloudWatch, sondern auch nach Amazon Managed Prometheus schreibt; es sammelt Metriken via StatsD und collectd; es kann Logs und Traces senden. Vor allem integriert es sich mit Systems Manager, das heißt, Sie können es mit einem einzigen Befehl aus der Konsole auf 50 Instanzen ausrollen, ohne SSH. Wenn bei Ihnen noch Perl-Skripte laufen, migrieren Sie: Das alteawscreds.conf-Format mit Schlüsseln im Klartext auf der Festplatte ist ein Sicherheitsrisiko. Der CloudWatch Agent arbeitet mit IAM-Rollen und erfordert keine Speicherung von Secrets in einer Textdatei.
Was tun, wenn Metriken nicht in CloudWatch erscheinen?
Prüfen Sie der Reihe nach: (1) Dienststatus via
systemctl status amazon-cloudwatch-agent, deractivesein sollte; (2) Agent-Logs in/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log, dort finden Sie den konkreten Fehler; (3) IAM-Berechtigungen, der Benutzer oder die Rolle muss die Berechtigungcloudwatch:PutMetricDatabesitzen; (4) Region, der Agent und die Konsole müssen auf dieselbe AWS-Region zeigen. Meiner Erfahrung nach sind die allermeisten Probleme entweder Berechtigungen oder eine abweichende Region.
Kann ich Windows-Instanzen überwachen?
Ja, der CloudWatch Agent unterstützt Windows Server gleichwertig mit Linux. Die Installation erfolgt über einen MSI-Installer aus demselben S3-Bucket (
amazon-cloudwatch-agent.s3.amazonaws.com/windows/amd64/latest/). Die Konfiguration verwendet dasselbe JSON, aber die Metriknamen unterscheiden sich: Stattmem_used_percentverwenden SieMemory % Committed Bytes In Use. Der Konfigurationsassistent unter Windows ersetzt automatisch die korrekten Namen.
Was die Überwachung von Arbeitsspeicher und Festplatte in der Praxis bringt
Sie haben den CloudWatch Agent auf einer Ubuntu-Instanz gestartet, die Erfassung von Arbeitsspeicher, Festplatte und Swap konfiguriert und ein Dashboard mit Diagrammen hinzugefügt. Was hat sich geändert? Genau eines: Der blinde Fleck ist weg. Sie sehen nicht nur CPU und Netzwerk, sondern auch die beiden Haupt-Instanzkiller: Speicherlecks und volle Festplatten.
In der Praxis bedeutet das, Sie bemerken den schleichenden Speicheranstieg drei Tage BEVOR der OOM Killer PHP-FPM beendet. Sie sehen, dass die Festplatte nach einem Theme-Update fast vollständig vollgelaufen ist, und leeren die Logs BEVOR die Datenbank abstürzt. Ohne diese Metriken wird jeder Vorfall zu einer Post-mortem-Untersuchung. Mit ihnen erhalten Sie eine halbe Stunde vor dem Ausfall eine Benachrichtigung in den Kanal.
Wenn Sie mehr als drei Instanzen haben, richten Sie CloudWatch-Alarme auf Schwellwerte ein (etwa mem_used_percent > 90 für 5 Minuten) und verbinden Sie Benachrichtigungen via SNS mit Slack oder Telegram. Agent + Alarme = Sie erfahren von AWS von dem Problem, nicht von einem Kunden.
Die Agent-Einrichtung ist eine einmalige Investition von 20 Minuten pro Instanz. Danach läuft er von selbst.



