CloudWatch Logs und Log Insights
Fassen Sie Logs aus EC2, Lambda und Containern in Log-Gruppen zusammen und führen Sie Abfragen mit CloudWatch Logs Insights aus, um Fehler und Muster zu finden.
CloudWatch Logs und Log Insights ist eine kostenlose Cloud & IT Cert Prep-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Cloud & IT Cert Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Cloud & IT Cert Prep-Kurs umfasst insgesamt 4 Lektionen.
Übersicht über CloudWatch Logs
Amazon CloudWatch Logs ist ein vollständig verwalteter Dienst zur Protokollaggregation, der Protokolldaten aus AWS-Services und Ihren eigenen Anwendungen sammelt, speichert und analysiert. Anders als bei der herkömmlichen Protokollverwaltung, bei der Sie sich per SSH mit Servern verbinden, um Dateien zu lesen, zentralisiert CloudWatch Logs alle Protokolle in einem dauerhaften, verschlüsselten Speicher mit integrierten Funktionen zum Abfragen, Filtern, Extrahieren von Metriken und Verwalten der Aufbewahrung. Der Dienst ist nativ in EC2, Lambda, ECS, EKS, API Gateway, CloudTrail und VPC Flow Logs integriert.
Protokollgruppen und Protokollstreams
Protokolle sind hierarchisch organisiert: Eine Protokollgruppe ist ein benannter Container für Protokolle mit denselben Einstellungen für Aufbewahrung und Zugriffskontrolle (beispielsweise /aws/lambda/my-function). Innerhalb einer Protokollgruppe stellt jeder Protokollstream eine einzelne Quelle sequenzieller Protokollereignisse dar — etwa eine EC2-Instance, einen Lambda-Container oder eine ECS-Aufgabe. Eine Protokollgruppe kann Tausende von Streams enthalten, aber jeder Stream gehört genau zu einer Protokollgruppe.
# Create a log group with 30-day retention
aws logs create-log-group \
--log-group-name /myapp/production/api
aws logs put-retention-policy \
--log-group-name /myapp/production/api \
--retention-in-days 30
# List log streams in a group
aws logs describe-log-streams \
--log-group-name /myapp/production/api \
--order-by LastEventTime \
--descendingProtokolle aus Lambda und EC2 senden
AWS Lambda sendet sämtliche Ausgaben von stdout und stderr automatisch an CloudWatch Logs — Sie müssen lediglich sicherstellen, dass die Lambda-Ausführungsrolle logs:CreateLogGroup, logs:CreateLogStream und logs:PutLogEvents enthält. Für EC2-Instances installieren Sie den CloudWatch Agent und konfigurieren, welche Protokolldateien fortlaufend gelesen werden sollen (beispielsweise /var/log/nginx/access.log), in welche Protokollgruppe geschrieben werden soll und welches Muster einzelne Protokolleinträge kennzeichnet.
# CloudWatch Agent config for tailing an application log file
# /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
# {
# "logs": {
# "logs_collected": {
# "files": {
# "collect_list": [{
# "file_path": "/var/log/myapp/app.log",
# "log_group_name": "/myapp/production/api",
# "log_stream_name": "{instance_id}",
# "timestamp_format": "%Y-%m-%dT%H:%M:%S"
# }]
# }
# }
# }
# }CloudWatch Logs Insights
CloudWatch Logs Insights ist eine interaktive Abfrage-Engine, mit der Sie Protokolldaten mithilfe einer speziell entwickelten Abfragesprache durchsuchen und analysieren können. Sie können Abfragen über eine oder mehrere Protokollgruppen ausführen, nach Zeitbereichen filtern, Felder aus strukturierten oder unstrukturierten Protokollzeilen extrahieren, Daten aggregieren und Ergebnisse als Balkendiagramme oder Zeitreihen visualisieren. Abfragen werden bei Bedarf ausgeführt und pro gescanntem GB Daten abgerechnet — durch die Strukturierung von Protokollen als JSON lässt sich das Scanvolumen deutlich reduzieren.
# Find the top 10 slowest Lambda invocations in the last hour
aws logs start-query \
--log-group-name /aws/lambda/my-function \
--start-time $(date -d '1 hour ago' +%s) \
--end-time $(date +%s) \
--query-string 'filter @type = "REPORT"
| fields @requestId, @duration
| sort @duration desc
| limit 10'Abfragesprache von Logs Insights
Die Abfragesprache von Logs Insights verwendet durch Pipes getrennte Befehle: fields wählt die anzuzeigenden Felder aus, filter grenzt Ereignisse ein (unterstützt reguläre Ausdrücke mit like und =~), stats aggregiert Daten, sort ordnet Ergebnisse und limit begrenzt die Anzahl der Ergebnisse. Der Dienst erkennt Felder in JSON-formatierten Protokollzeilen automatisch. Bei unstrukturierten Protokollen können Sie Werte mit parse und Glob- oder regulären Ausdrucksmustern analysieren.
# Count errors by status code in the last 24 hours
fields @timestamp, @message
| filter @message like /ERROR/
| parse @message '* * * [*] "* *" * *' as host, user, datetime, request, method, status, bytes
| stats count(*) as errorCount by status
| sort errorCount desc
| limit 20Metrikfilter: Von Protokollen zu Metriken
Metrikfilter durchsuchen eingehende Protokollereignisse kontinuierlich nach Mustern und erhöhen bei jedem Treffer eine benutzerdefinierte CloudWatch-Metrik. Sie können beispielsweise einen Metrikfilter für eine Lambda-Protokollgruppe erstellen, der die Metrik ErrorCount jedes Mal erhöht, wenn eine Protokollzeile ERROR enthält. Anschließend erstellen Sie für diese Metrik einen CloudWatch-Alarm, der Ihr Team benachrichtigt. So wandeln Sie Ihre Protokolle in verwertbare Metriken um, ohne die Ergebnisse in einer separaten Datenbank zu speichern.
# Create a metric filter that counts ERROR lines
aws logs put-metric-filter \
--log-group-name /myapp/production/api \
--filter-name ErrorCount \
--filter-pattern 'ERROR' \
--metric-transformations \
metricName=ApplicationErrors,metricNamespace=MyApp,metricValue=1,defaultValue=0
# Now create an alarm on the resulting metric
aws cloudwatch put-metric-alarm \
--alarm-name HighErrorRate \
--metric-name ApplicationErrors \
--namespace MyApp \
--statistic Sum \
--period 60 \
--evaluation-periods 1 \
--threshold 10 \
--comparison-operator GreaterThanThreshold \
--alarm-actions arn:aws:sns:us-east-1:111122223333:OpsProtokollabonnements und Streaming
Ein Abonnementfilter überträgt Protokollereignisse nahezu in Echtzeit zur Verarbeitung oder Speicherung an einen anderen Dienst. Sie können die Daten an AWS Lambda (zum Transformieren und Weiterleiten von Protokollen), Amazon Kinesis Data Streams (für die Verarbeitung großer Protokollmengen) oder Amazon Kinesis Firehose (zur Bereitstellung in S3, OpenSearch oder Splunk) streamen. Jede Protokollgruppe unterstützt bis zu zwei Abonnementfilter. Für kontoübergreifendes Protokollstreaming ist ein Ziel mit einer geeigneten Ressourcenrichtlinie erforderlich.
# Stream all logs containing ERROR to a Kinesis Firehose for S3 archiving
aws logs put-subscription-filter \
--log-group-name /myapp/production/api \
--filter-name ErrorsToFirehose \
--filter-pattern 'ERROR' \
--destination-arn arn:aws:firehose:us-east-1:111122223333:deliverystream/LogArchive \
--distribution 'ByLogStreamName'Aufbewahrungsrichtlinien und Kostenverwaltung
Standardmäßig speichert CloudWatch Logs Daten unbegrenzt, was teuer werden kann. Legen Sie für jede Protokollgruppe Aufbewahrungsrichtlinien fest, damit alte Protokollereignisse automatisch gelöscht werden. Übliche Aufbewahrungszeiträume sind 7 Tage für Debugging-Protokolle, 30 Tage für Anwendungsprotokolle und 1–5 Jahre für Audit-Protokolle. Sie können Protokollgruppen mit der create-export-task-API zur langfristigen und kostengünstigen Archivierung nach S3 exportieren, wobei Exporte als Stapelvorgänge und nicht in Echtzeit ausgeführt werden.
# Set retention on all log groups that have no retention policy
aws logs describe-log-groups \
--query 'logGroups[?!retentionInDays].logGroupName' \
--output text | tr '\t' '\n' | while read lg; do
aws logs put-retention-policy \
--log-group-name "$lg" \
--retention-in-days 90
echo "Set 90-day retention on $lg"
doneVPC Flow Logs
VPC Flow Logs erfassen Metadaten zum IP-Datenverkehr, der zu und von Netzwerkschnittstellen in Ihrer VPC, Ihren Subnetzen oder einzelnen ENIs fließt. Sie werden in CloudWatch Logs oder S3 gespeichert. Flow Logs enthalten Quell-IP, Ziel-IP, Port, Protokoll, Paketanzahl, Byteanzahl, Aktion (ACCEPT oder REJECT) und Zeitstempel. Sie sind äußerst hilfreich bei der Fehlerbehebung von Sicherheitsgruppen- und NACL-Regeln, beim Erkennen von Portscans und bei der Prüfung von Datenverkehrsmustern — die tatsächlichen Paketdaten werden jedoch NICHT erfasst.
# Enable VPC Flow Logs to CloudWatch Logs
aws ec2 create-flow-logs \
--resource-ids vpc-0abc1234def567890 \
--resource-type VPC \
--traffic-type ALL \
--log-destination-type cloud-watch-logs \
--log-group-name /aws/vpc/flow-logs \
--deliver-logs-permission-arn arn:aws:iam::111122223333:role/FlowLogsRoleVPC Flow Logs mit Insights abfragen
CloudWatch Logs Insights ist besonders leistungsfähig für die Analyse von VPC Flow Logs. Sie können schnell abgelehnten Datenverkehr identifizieren, die aktivsten Kommunikationspartner anhand des Bytevolumens ermitteln, ungewöhnliche Verbindungen erkennen oder den Datenverkehr zu einer bestimmten Instance isolieren. Das Format der Flow Logs ist standardmäßig durch Leerzeichen getrennt. Durch die Veröffentlichung im JSON-Format in CloudWatch Logs wird die Felderkennung in Insights-Abfragen jedoch automatisch möglich.
# Find top 10 source IPs by rejected byte volume in the last day
fields srcAddr, dstAddr, dstPort, action, bytes
| filter action = 'REJECT'
| stats sum(bytes) as rejectedBytes by srcAddr
| sort rejectedBytes desc
| limit 10Protokollverschlüsselung mit KMS
CloudWatch Logs verschlüsselt standardmäßig alle ruhenden Daten mithilfe von von AWS verwalteten Schlüsseln. Für erhöhte Sicherheit — insbesondere in regulierten Umgebungen — können Sie einer Protokollgruppe einen kundenseitig verwalteten KMS-Schlüssel zuordnen. Dadurch erhalten Sie Kontrolle über die Schlüsselrotation und den Zugriff und können den Zugriff auf sämtliche Protokolldaten widerrufen, indem Sie den Schlüssel deaktivieren. Die Schlüsselrichtlinie des KMS-Schlüssels muss CloudWatch Logs die Verwendung des Schlüssels zur Ver- und Entschlüsselung gestatten.
# Associate a KMS key with a log group
aws logs associate-kms-key \
--log-group-name /myapp/production/api \
--kms-key-id arn:aws:kms:us-east-1:111122223333:key/KEY_ID
# Verify encryption is configured
aws logs describe-log-groups \
--log-group-name-prefix /myapp/production \
--query 'logGroups[].{Name:logGroupName,KmsKey:kmsKeyId}'Schnelltest
Testen Sie Ihr Verständnis der Konzepte aus dieser Lektion zum AWS Solutions Architect (SAA-C03).
Lektionszusammenfassung
In dieser Lektion haben Sie Folgendes gelernt: Log-Gruppen und -Streams organisieren Logs nach Quelle und bieten eine konfigurierbare Aufbewahrungsdauer. Mit Logs Insights können Sie Logdaten mithilfe einer leistungsfähigen, auf Pipes basierenden Abfragesprache abfragen und aggregieren. Metrikfilter wandeln Logmuster in CloudWatch-Metriken um, die Alarme auslösen können. Als Nächstes befassen wir uns mit CloudWatch Dashboards und Container Insights zur Überwachung des Betriebs.
Häufig gestellte Fragen
Ist die Lektion „CloudWatch Logs und Log Insights“ kostenlos?
Ja — der vollständige Text von „CloudWatch Logs und Log Insights“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Cloud & IT Cert Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Cloud & IT Cert Prep-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „CloudWatch Logs und Log Insights“?
Fassen Sie Logs aus EC2, Lambda und Containern in Log-Gruppen zusammen und führen Sie Abfragen mit CloudWatch Logs Insights aus, um Fehler und Muster zu finden. Du übst Cloud & IT Cert Prep mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Cloud & IT Cert Prep zu starten?
Keine Vorkenntnisse erforderlich. Cloud & IT Cert Prep auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „CloudWatch Logs und Log Insights“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Cloud & IT Cert Prep-Lektion Code schreiben und ausführen?
Ja. Jede Cloud & IT Cert Prep-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- CloudWatch-Metriken, Namespaces und Dimensionen
- CloudWatch-Alarme und zusammengesetzte Alarme
- CloudWatch Logs und Log Insights
- CloudWatch-Dashboards und Container Insights