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 der allgemeinen und nützlichen Abfragebefehle, die Sie in der CloudWatchKonsole ausführen können. Weitere Informationen zum Ausführen eines Abfragebefehls finden Sie unter Tutorial: Ausführen und Ändern einer Beispielabfrage im CloudWatch Amazon-Logs-Benutzerhandbuch.

Weitere Informationen zur Abfragesyntax finden Sie unterCloudWatch Syntax der Sprachabfrage in Logs Insights.

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 Flussprotokolle von Amazon-VPC

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

Findet die IP-Adressen, die UDP als Datenübertragungsprotokoll verwenden.

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)

Findet die 10 DNS-Resolver mit der höchsten Anzahl von Anforderungen.

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

Ermittelt die Anzahl der Datensätze nach Domain und Subdomain, bei denen der Server die DNS-Anforderung nicht abgeschlossen hat.

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

Abfragen für CloudTrail Protokolle

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

stats count(*) by eventSource, eventName, awsRegion

Findet die EC2 Amazon-Hosts, die in einer bestimmten AWS -Region gestartet oder angehalten wurden.

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

Findet die AWS -Regionen, Benutzernamen und ARNs der neu erstellten IAM-Benutzer.

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

Ermittelt die Anzahl der Datensätze, bei denen beim Aufruf des API-UpdateTrail eine Ausnahme aufgetreten ist.

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

Findet Protokolleinträge, 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

Ermittelt die Anzahl der Anrufe pro Service, die die TLS-Versionen 1.0 oder 1.1 verwendet haben.

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

Identifiziert die 10 Amazon API Gateway -Anforderungen mit der längsten Ausführungszeit in Ihrer Amazon API Gateway -Zugriffsprotokollgruppe.

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

Gibt die Liste der beliebtesten API-Pfade in Ihrer Amazon API Gateway -Zugriffsprotokollgruppe zurück.

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

Erstellt 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 NAT-Gateway

Wenn Sie höhere Kosten als normal in Ihrer AWS -Rechnung feststellen, können Sie mit CloudWatch Logs Insights die wichtigsten Ursachen dafür herausfinden. Weitere Informationen über die folgenden Abfragebefehle finden Sie unter Wie finde ich die wichtigsten Ursachen für den Datenverkehr durch das NAT-Gateway in meiner VPC? 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 ersetzen Sie „y.y“ durch die ersten beiden Oktette Ihres VPC-CIDR-Bereichs.

Findet die Instances, die den meisten Datenverkehr über Ihr NAT-Gateway senden.

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

Bestimmt den Datenverkehr, der bei den Instances in Ihren NAT-Gateways ein- bzw. ausgeht.

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

Bestimmt die Internetziele, mit denen die Instances in Ihrer VPC am häufigsten für Uploads und Downloads 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

Dank CloudWatch Logs Insights können Sie Apache-Serverprotokolle abfragen. Weitere Informationen über die folgenden Abfragen finden Sie unter Vereinfachen von Apache-Serverprotokollen mit 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

Ermittelt die Anzahl der eindeutigen GET-Anforderungen, die auf Ihre Hauptseite mit dem Statuscode „200“ (Erfolg) 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 Ereignisdetailtyp.

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