Beispielabfragen - CloudWatch Amazon-Protokolle

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Beispielabfragen

Dieser Abschnitt enthält eine Liste allgemeiner und nützlicher Abfragebefehle, die Sie in der CloudWatch Konsole ausführen können. Informationen zum Ausführen eines Abfragebefehls finden Sie unter Tutorial: Eine Beispielabfrage ausführen und ändern im Amazon CloudWatch Logs-Benutzerhandbuch.

Weitere Informationen zur Abfragesyntax finden Sie unterCloudWatch Syntax der Logs Insights-Abfrage.

Allgemeine Abfragen

Findet die 25 zuletzt hinzugefügten Protokollereignisse.

fields @timestamp, @message | sort @timestamp desc | limit 25

Ruft eine Liste der Anzahl der Ausnahmen pro Stunde ab.

filter @message like /Exception/ | stats count(*) as exceptionCount by bin(1h) | sort exceptionCount desc

Ruft eine Liste von Protokollereignissen ab, die keine Ausnahmen sind.

fields @message | filter @message not like /Exception/

Ruft das letzte Protokollereignis für jeden eindeutigen Wert des Felds server ab.

fields @timestamp, server, severity, message | sort @timestamp asc | dedup server

Ruft das letzte Protokollereignis für jeden eindeutigen Wert des Felds server für jeden severity-Typ ab.

fields @timestamp, server, severity, message | sort @timestamp desc | dedup server, severity

Abfragen für Lambda-Protokolle

Ermittelt die Menge des zu viel bereitgestellten Speichers.

filter @type = "REPORT" | stats max(@memorySize / 1000 / 1000) as provisonedMemoryMB, min(@maxMemoryUsed / 1000 / 1000) as smallestMemoryRequestMB, avg(@maxMemoryUsed / 1000 / 1000) as avgMemoryUsedMB, max(@maxMemoryUsed / 1000 / 1000) as maxMemoryUsedMB, provisonedMemoryMB - maxMemoryUsedMB as overProvisionedMB

Erstellt einen Latenzbericht.

filter @type = "REPORT" | stats avg(@duration), max(@duration), min(@duration) by bin(5m)

Sucht nach langsamen Funktionsaufrufen und beseitigt doppelte Anfragen, die durch Wiederholungen oder clientseitigen Code entstehen können. In dieser Abfrage  ist @duration in Millisekunden.

fields @timestamp, @requestId, @message, @logStream | filter @type = "REPORT" and @duration > 1000 | sort @timestamp desc | dedup @requestId | limit 20

Abfragen für Amazon VPC Flow-Logs

Findet die Top 15 Paketübertragungen zwischen den Hosts:

stats sum(packets) as packetsTransferred by srcAddr, dstAddr | sort packetsTransferred desc | limit 15

Findet die Top 15 Byte-Übertragungen für Hosts in einem bestimmten Subnetz.

filter isIpv4InSubnet(srcAddr, "192.0.2.0/24") | stats sum(bytes) as bytesTransferred by dstAddr | sort bytesTransferred desc | limit 15

Finden Sie die IP-Adressen, die UDP als Datenübertragungsprotokoll verwendet werden.

filter protocol=17 | stats count(*) by srcAddr

Findet die IP-Adressen, bei denen während des Erfassungsfensters Flussdatensätze übersprungen wurden.

filter logStatus="SKIPDATA" | stats count(*) by bin(1h) as t | sort t

Sucht einen einzelnen Datensatz für jede Verbindung, um Probleme mit der Netzwerkverbindung zu beheben.

fields @timestamp, srcAddr, dstAddr, srcPort, dstPort, protocol, bytes | filter logStream = 'vpc-flow-logs' and interfaceId = 'eni-0123456789abcdef0' | sort @timestamp desc | dedup srcAddr, dstAddr, srcPort, dstPort, protocol | limit 20

Abfragen für Route-53-Protokolle

Findet die Verteilung der Datensätze pro Stunde nach Abfragetyp.

stats count(*) by queryType, bin(1h)

Finden Sie die 10 DNS Resolver mit der höchsten Anzahl an Anfragen.

stats count(*) as numRequests by resolverIp | sort numRequests desc | limit 10

Finden Sie die Anzahl der Datensätze nach Domain und Subdomain, bei denen der Server die Anfrage nicht abschließen konnte. DNS

filter responseCode="SERVFAIL" | stats count(*) by queryName

Abfragen für Protokolle CloudTrail

Ermittelt die Anzahl der Protokolleinträge pro Service, Ereignistyp und AWS -Region.

stats count(*) by eventSource, eventName, awsRegion

Finden Sie die EC2 Amazon-Hosts, die in einer bestimmten AWS Region gestartet oder gestoppt wurden.

filter (eventName="StartInstances" or eventName="StopInstances") and awsRegion="us-east-2"

Finden Sie die AWS Regionen, Benutzernamen und ARNs neu erstellten IAM Benutzer.

filter eventName="CreateUser" | fields awsRegion, requestParameters.userName, responseElements.user.arn

Ermitteln Sie die Anzahl der Datensätze, bei denen beim Aufrufen von eine Ausnahme aufgetreten ist. API UpdateTrail

filter eventName="UpdateTrail" and ispresent(errorCode) | stats count(*) by errorCode, errorMessage

Suchen Sie nach Protokolleinträgen, in denen TLS 1.0 oder 1.1 verwendet wurde

filter tlsDetails.tlsVersion in [ "TLSv1", "TLSv1.1" ] | stats count(*) as numOutdatedTlsCalls by userIdentity.accountId, recipientAccountId, eventSource, eventName, awsRegion, tlsDetails.tlsVersion, tlsDetails.cipherSuite, userAgent | sort eventSource, eventName, awsRegion, tlsDetails.tlsVersion

Ermitteln Sie die Anzahl der Aufrufe pro Dienst, der die TLS Versionen 1.0 oder 1.1 verwendet hat

filter tlsDetails.tlsVersion in [ "TLSv1", "TLSv1.1" ] | stats count(*) as numOutdatedTlsCalls by eventSource | sort numOutdatedTlsCalls desc

Abfragen für Amazon API Gateway

Findet die letzten 10 4XX-Fehler.

fields @timestamp, status, ip, path, httpMethod | filter status>=400 and status<=499 | sort @timestamp desc | limit 10

Identifizieren Sie die 10 am längsten laufenden Amazon API Gateway Anfragen in Ihrer Amazon API Gateway Zugriffs-Log-Gruppe

fields @timestamp, status, ip, path, httpMethod, responseLatency | sort responseLatency desc | limit 10

Gibt die Liste der beliebtesten API Pfade in Ihrer Amazon API Gateway Zugriffs-Log-Gruppe zurück

stats count(*) as requestCount by path | sort requestCount desc | limit 10

Erstellen Sie einen Integrationslatenzbericht für Ihre Amazon API Gateway Zugriffsprotokollgruppe

filter status=200 | stats avg(integrationLatency), max(integrationLatency), min(integrationLatency) by bin(1m)

Abfragen für das NAT Gateway

Wenn Sie feststellen, dass Ihre AWS Rechnung höhere als normale Kosten enthält, können Sie CloudWatch Logs Insights verwenden, um die wichtigsten Beitragszahler zu finden. Weitere Informationen zu den folgenden Abfragebefehlen finden Sie unter Wie finde ich die Hauptverursacher des Datenverkehrs über das NAT Gateway in meinemVPC? auf der AWS Premium-Support-Seite.

Anmerkung

Ersetzen Sie in den folgenden Abfragebefehlen „x.x.x.x“ durch die private IP Ihres NAT Gateways und „y.y“ durch die ersten beiden X. Ihres Bereichs. VPC CIDR

Finden Sie die Instances, die den meisten Traffic über Ihr Gateway senden. NAT

filter (dstAddr like 'x.x.x.x' and srcAddr like 'y.y.') | stats sum(bytes) as bytesTransferred by srcAddr, dstAddr | sort bytesTransferred desc | limit 10

Ermitteln Sie den Verkehr, der zu und von den Instances in Ihren NAT Gateways fließt.

filter (dstAddr like 'x.x.x.x' and srcAddr like 'y.y.') or (srcAddr like 'xxx.xx.xx.xx' and dstAddr like 'y.y.') | stats sum(bytes) as bytesTransferred by srcAddr, dstAddr | sort bytesTransferred desc | limit 10

Ermitteln Sie die Internetziele, mit denen die Instances in Ihrem System am häufigsten für Uploads und Downloads VPC kommunizieren.

For uploads (Für Uploads)

filter (srcAddr like 'x.x.x.x' and dstAddr not like 'y.y.') | stats sum(bytes) as bytesTransferred by srcAddr, dstAddr | sort bytesTransferred desc | limit 10

Für Downloads

filter (dstAddr like 'x.x.x.x' and srcAddr not like 'y.y.') | stats sum(bytes) as bytesTransferred by srcAddr, dstAddr | sort bytesTransferred desc | limit 10

Abfragen für Apache-Serverprotokolle

Sie können CloudWatch Logs Insights verwenden, um Apache-Serverprotokolle abzufragen. Weitere Informationen zu den folgenden Abfragen finden Sie unter Simplifying Apache Server Logs with CloudWatch Logs Insights im AWS Cloud Operations & Migrations Blog.

Findet die relevantesten Felder, damit Sie Ihre Zugriffsprotokolle und den Datenverkehr im Pfad /admin Ihrer Anwendung überprüfen können.

fields @timestamp, remoteIP, request, status, filename| sort @timestamp desc | filter filename="/var/www/html/admin" | limit 20

Finden Sie die Anzahl der eindeutigen GET Anfragen heraus, die mit dem Statuscode „200“ (erfolgreich) auf Ihre Hauptseite zugegriffen haben.

fields @timestamp, remoteIP, method, status | filter status="200" and referrer= http://34.250.27.141/ and method= "GET" | stats count_distinct(remoteIP) as UniqueVisits | limit 10

Gibt an, wie oft Ihr Apache-Service neu gestartet wurde.

fields @timestamp, function, process, message | filter message like "resuming normal operations" | sort @timestamp desc | limit 20

Anfragen für Amazon EventBridge

Ruft die Anzahl der EventBridge Ereignisse ab, gruppiert nach Art der Ereignisdetails

fields @timestamp, @message | stats count(*) as numberOfEvents by `detail-type` | sort numberOfEvents desc

Beispiele des parse-Befehls

Verwenden Sie einen globalen Ausdruck zum Extrahieren der Felder @user, @method und @latency aus dem Protokollfeld @message und zur Rückgabe der durchschnittlichen Latenz für jede eindeutige Kombination aus @method und @user.

parse @message "user=*, method:*, latency := *" as @user, @method, @latency | stats avg(@latency) by @method, @user

Verwenden Sie einen regulären Ausdruck zum Extrahieren der Felder @user2, @method2 und @latency2 aus dem Protokollfeld @message und zur Rückgabe der durchschnittlichen Latenz für jede eindeutige Kombination aus @method2 und @user2.

parse @message /user=(?<user2>.*?), method:(?<method2>.*?), latency := (?<latency2>.*?)/ | stats avg(latency2) by @method2, @user2

Extrahiert die Felder loggingTime, loggingType und loggingMessage, filtert nach Protokollereignissen, die die Zeichenfolgen ERROR oder INFO enthalten, und zeigt dann nur die Felder loggingMessage und loggingType für Ereignisse an, die die Zeichenfolge ERROR enthalten.

FIELDS @message | PARSE @message "* [*] *" as loggingTime, loggingType, loggingMessage | FILTER loggingType IN ["ERROR", "INFO"] | DISPLAY loggingMessage, loggingType = "ERROR" as isError