View a markdown version of this page

Unterstützte Protokolle und erkannte Felder - 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.

Unterstützte Protokolle und erkannte Felder

CloudWatch Logs Insights unterstützt verschiedene Protokolltypen. Für jedes Protokoll, das an eine Protokollgruppe der Klasse Standard in Amazon CloudWatch Logs gesendet wird, generiert CloudWatch Logs Insights automatisch fünf Systemfelder:

  • @message enthält das rohe, unverarbeitete Protokollereignis. Dies entspricht dem message Feld in InputLogevent.

  • @timestamp enthält den Ereignis-Zeitstempel im timestamp-Feld des Protokollereignisses. Dies entspricht dem timestamp Feld in InputLogevent.

  • @ingestionTimeenthält die Zeit, zu der CloudWatch Logs das Protokollereignis empfangen hat.

  • @logStream enthält den Namen des Protokoll-Streams, zu dem das Protokollereignis hinzugefügt wurde. Protokolldatenstromgruppen werden nach demselben Prozess protokolliert, der sie generiert hat.

  • @log ist ein Protokollgruppen-Bezeichner im folgenden Format: account-id:log-group-name Beim Abfragen mehrerer Protokollgruppen kann dies nützlich sein, um zu bestimmen, zu welcher Protokollgruppe ein bestimmtes Ereignis gehört.

  • @entityenthält vereinfachtes JSON-Format, das sich auf Entitäten für die Funktion „Related Telemetrie https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ExploreRelated.html Explore“ bezieht.

    Dieses JSON kann beispielsweise eine Entität darstellen.

    { "Entity": { "KeyAttributes": { "Type": "Service", "Name": "PetClinic" }, "Attributes": { "PlatformType": "AWS::EC2", "EC2.InstanceId": "i-1234567890123" } } }

    Für diese Entität wären die extrahierten Systemfelder die folgenden:

    @entity.KeyAttributes.Type = Service @entity.KeyAttributes.Name = PetClinic @entity.Attributes.PlatformType = AWS::EC2 @entity.Attributes.EC2.InstanceId = i-1234567890123
Anmerkung

Die Felderkennung wird nur für Protokollgruppen in der Standard-Protokollklasse unterstützt. Weitere Hinweise zu Protokollklassen finden Sie unterKlassen protokollieren.

CloudWatch Logs Insights fügt das @-Symbol am Anfang der Felder ein, die es generiert.

Bei vielen Protokolltypen erkennt CloudWatch Logs auch automatisch die in den Protokollen enthaltenen Protokollfelder. Diese automatischen Suchfelder sind in der folgenden Tabelle dargestellt.

Bei anderen Protokolltypen mit Feldern, die CloudWatch Logs Insights nicht automatisch erkennt, können Sie den parse Befehl verwenden, um extrahierte Felder für die Verwendung in dieser Abfrage zu extrahieren und zu erstellen. Weitere Informationen finden Sie unter CloudWatch Syntax der Logs Insights-Sprachabfrage.

Wenn der Name eines erkannten Protokollfeldes mit dem @ Zeichen beginnt, zeigt CloudWatch Logs Insights es an, wobei am Anfang ein zusätzliches Zeichen @ angehängt wird. Wenn z. B. ein Protokollfeldname @example.comlautet, wird dieser Feldname als @@example.com angezeigt.

Anmerkung

Mit Ausnahme von @message@timestamp, oder@log, können Sie Feldindizes für erkannte Felder erstellen. Weitere Hinweise zu Feldindizes finden Sie unter. Erstellen Sie Feldindizes, um die Abfrageleistung zu verbessern und das Scanvolumen zu reduzieren

Protokolltyp Erkannte Protokollfelder

Amazon VPC-Flussprotokolle

@timestamp, @logStream, @message, accountId, endTime, interfaceId, logStatus, startTime, version, action, bytes, dstAddr, dstPort, packets, protocol, srcAddr, srcPort

Route-53-Protokolle

@timestamp, @logStream, @message, edgeLocation, ednsClientSubnet, hostZoneId, protocol, queryName, queryTimestamp, queryType, resolverIp, responseCode, version

Lambda-Protokolle

@timestamp, @logStream, @message, @requestId, @duration, @billedDuration, @type, @maxMemoryUsed, @memorySize

Wenn eine Lambda-Logzeile eine X-Ray Trace-ID enthält, enthält sie auch die folgenden Felder: @xrayTraceId und. @xraySegmentId

CloudWatch Logs Insights erkennt automatisch Protokollfelder in Lambda-Protokollen, jedoch nur für das erste eingebettete JSON-Fragment in jedem Protokollereignis. Wenn ein Lambda-Protokollereignis mehrere JSON-Fragmente enthält, können Sie die Protokollfelder mit dem parse-Befehl analysieren und extrahieren. Weitere Informationen finden Sie unter Felder in JSON-Protokollen.

CloudTrail protokolliert

Protokolle im JSON-Format

Weitere Informationen finden Sie unter Felder in JSON-Protokollen.

Andere Protokolltypen

@timestamp, @ingestionTime, @logStream, @message, @log.

Felder in JSON-Protokollen

Mit CloudWatch Logs Insights verwenden Sie die Punktnotation, um JSON-Felder darzustellen. Dieser Abschnitt enthält ein Beispiel für ein JSON-Ereignis und ein Code-Snippet, die Ihnen zeigen, wie Sie mit der Punktnotation auf JSON-Felder zugreifen können.

Example: JSON event (Beispiel: JSON-Ereignis)

{ "eventVersion": "1.0", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn: aws: iam: : 123456789012: user/Alice", "accessKeyId": "EXAMPLE_KEY_ID", "accountId": "123456789012", "userName": "Alice" }, "eventTime": "2014-03-06T21: 22: 54Z", "eventSource": "ec2.amazonaws.com", "eventName": "StartInstances", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.255", "userAgent": "ec2-api-tools1.6.12.2", "requestParameters": { "instancesSet": { "items": [ { "instanceId": "i-abcde123" } ] } }, "responseElements": { "instancesSet": { "items": [ { "instanceId": "i-abcde123", "currentState": { "code": 0, "name": "pending" }, "previousState": { "code": 80, "name": "stopped" } } ] } } }

Das JSON-Beispielereignis enthält ein Objekt namens userIdentity. userIdentity enthält ein Feld namens type. Um den Wert von type mit Punktnotation darzustellen, verwenden Sie userIdentity.type.

Das JSON-Beispielereignis enthält Arrays, die sich zu Listen mit verschachtelten Feldnamen und Werten vereinfachen lassen. Verwenden Sie requestParameters.instancesSet.items.0.instanceId, um den Wert von instanceId für das erste Element in requestParameters.instancesSet darzustellen. Die Zahl 0, die vor dem Feld instanceID platziert ist, bezieht sich auf die Position von Werten für das Feld items. Das folgende Beispiel enthält ein Code-Snippet, das zeigt, wie Sie in einem JSON-Protokollereignis auf verschachtelte JSON-Felder zugreifen können.

Beispiel: Abfrage

fields @timestamp, @message | filter requestParameters.instancesSet.items.0.instanceId="i-abcde123" | sort @timestamp desc

Der Code-Ausschnitt zeigt eine Abfrage, die Punktnotation mit dem Befehl filter verwendet, um auf den Wert des verschachtelten JSON-Felds instanceId zuzugreifen. Die Abfrage filtert nach Nachrichten, bei denen der Wert von instanceId "i-abcde123" entspricht, und gibt alle Protokollereignisse zurück, die den angegebenen Wert enthalten.

Punktnotation und JSON-encoded Zeichenfolgenfelder

Die Punktnotation durchläuft nur Felder, die zum Zeitpunkt der Aufnahme als strukturell verschachtelte JSON-Objekte gespeichert wurden. Wenn der Wert eines Felds eine Zeichenfolge ist (eine JSON-encoded Zeichenfolge, deren Inhalt zufällig gültiges JSON ist), behandelt die Punktnotation ihn als undurchsichtigen Blattwert und greift nicht auf darin enthaltene Unterfelder zu.

Dies tritt häufig auf bei:

  • Protokolle, die von OCSF-Pipelines transformiert wurden (z. B. api.request.data wie json_t im OCSF-Schema typisiert)

  • Jede Protokollquelle, bei der Nutzlasten mit variabler Struktur vor der Erfassung als Zeichenfolgen serialisiert werden

Wenn beispielsweise einen Zeichenfolgenwert api.request.data enthält{"startTime":1234,"endTime":5678}, werden keine Ergebnisse api.request.data.startTime zurückgegeben, da CloudWatch Logs Insights die gesamte Zeichenfolge als einzelnen Blattwert und nicht als verschachteltes Objekt behandelt.

Um auf Unterfelder innerhalb einer JSON-encoded Zeichenfolge zuzugreifen, verwenden Sie, jsonParse um die Zeichenfolge in eine durchlaufbare Map umzuwandeln.

Beispiel: Mit JSONParse eine Abfrage für ein Zeichenfolgenfeld durchführen JSON-encoded

fields jsonParse(api.request.data).startTime as startTime

Diese Abfrage analysiert jsonParse die JSON-encoded Zeichenfolge api.request.data in eine Map und greift dann mit Punktnotation auf das startTime Unterfeld zu. Weitere Informationen dazu finden Sie unter jsonParse Strukturtypen.

Anmerkung

CloudWatch Logs Insights kann maximal 200 Protokollereignisfelder aus einem JSON-Protokoll extrahieren. Zusätzliche Felder, die nicht extrahiert werden, können Sie mit dem Befehl parse aus dem nicht analysierten Protokollereignis im Nachrichtenfeld extrahieren. Weitere Informationen zu dem parse Befehl finden Sie unter Abfragesyntax im CloudWatch Amazon-Benutzerhandbuch.