View a markdown version of this page

Syntax und Kontingente für den Feldindex - 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.

Syntax und Kontingente für den Feldindex

Sie erstellen Feldindizes, indem Sie Feldindexrichtlinien erstellen. Sie können Indexrichtlinien auf Kontoebene erstellen, die für Ihr gesamtes Konto gelten, und Sie können auch Richtlinien erstellen, die nur für eine einzelne Protokollgruppe gelten. Für kontoweite Indexrichtlinien können Sie eine haben, die für alle Protokollgruppen im Konto gilt. Sie können auch Indexrichtlinien auf Kontoebene erstellen, die für eine Teilmenge der Protokollgruppen im Konto gelten, die anhand der Präfixe ihrer Protokollgruppennamen ausgewählt werden. Wenn Sie mehrere Richtlinien auf Kontoebene in demselben Konto haben, dürfen sich die Präfixe der Protokollgruppennamen für diese Richtlinien nicht überschneiden. Ebenso können Sie Indexrichtlinien auf Kontoebene erstellen, die für eine bestimmte Kombination aus Datenquellenname und -typ gelten. Pro Kombination aus Datenquellenname und -typ kann nur eine Kontorichtlinie erstellt werden.

Richtlinien für den Feldindex auf Protokollgruppenebene haben Vorrang vor Feldindexrichtlinien auf Kontoebene, die für die gesamte Protokollgruppe gelten (z. B. Richtlinien auf Kontoebene ohne Auswahlkriterien oder mit Auswahlkriterien, die auf Präfixen für Protokollgruppennamen basieren). Account-level Richtlinien, die auf Protokollereignisebene übereinstimmen (z. B. für eine bestimmte Kombination aus Datenquellenname und -typ), gelten zusätzlich zu den Richtlinien, die der gesamten Protokollgruppe entsprechen. Wenn Sie eine Indexrichtlinie auf Protokollgruppenebene erstellen, verwendet diese Protokollgruppe keine Richtlinien auf Kontoebene, die auf Protokollgruppenebene übereinstimmen.

Bei der Zuordnung von Protokollereignissen zu den Namen von Feldindizes wird zwischen Groß- und Kleinschreibung unterschieden. Ein Feldindex von entspricht beispielsweise RequestId nicht einem Protokollereignis, das Folgendes enthält. requestId

Sie können bis zu 40 Indexrichtlinien auf Kontoebene verwenden. 20 dieser Richtlinien können Auswahlkriterien für das Präfix von Protokollgruppennamen verwenden, und 20 können Auswahlkriterien verwenden, die auf Datenquellen basieren. Wenn Sie mehrere Indexrichtlinien auf Kontoebene so gefiltert haben, dass sie Gruppennamenpräfixe protokollieren, können keine zwei davon dieselben oder sich überschneidende Präfixe für Protokollgruppennamen verwenden. Wenn Sie beispielsweise eine Richtlinie so gefiltert haben, dass Gruppen protokolliert werden, die mit beginnenmy-log, können Sie keine andere Feldindexrichtlinie nach oder filtern lassen. my-logpprod my-logging Ebenso gilt: Wenn Sie mehrere Indexrichtlinien auf Kontoebene nach Kombinationen aus Datenquellenname und -typ gefiltert haben, können keine zwei Richtlinien denselben Datenquellennamen und -typ verwenden. Wenn Sie beispielsweise eine Richtlinie nach dem Datenquellennamen amazon_vpc und dem Datenquellentyp gefiltert haben, können flow Sie mit dieser Kombination keine weitere Richtlinie erstellen.

Wenn Sie über eine Indexrichtlinie auf Kontoebene verfügen, die keine Namenspräfixe hat und für alle Protokollgruppen gilt, kann keine andere Indexrichtlinie auf Kontoebene mit Präfixfiltern für Protokollgruppennamen erstellt werden. Sie können Indexrichtlinien auf Kontoebene erstellen, die Filter für Datenquellennamen und -typ verwenden.

Jede Indexrichtlinie hat die folgenden Kontingente und Einschränkungen:

  • Bis zu 20 Felder können in die Richtlinie aufgenommen werden.

  • Jeder Feldname kann bis zu 100 Zeichen enthalten.

  • Um einen Index für ein benutzerdefiniertes Feld in Ihren Protokollgruppen zu erstellen@, das mit beginnt, müssen Sie das Feld mit einem @ Zusatzzeichen am Anfang des Feldnamens angeben. Wenn Ihre Protokollereignisse beispielsweise ein Feld mit dem Namen enthalten@userId, müssen Sie angeben, @@userId dass ein Index für dieses Feld erstellt werden soll.

Für Indexrichtlinien auf Kontoebene mit Datenquellennamen und typbasierten Auswahlkriterien gilt eine zusätzliche Einschränkung: Alle Felder müssen primitive Datentypen sein, verschachtelte Grundelemente werden nur für Strukturen unterstützt.

Generierte Felder und reservierte Felder

CloudWatch Logs Insights generiert bei jedem Protokollereignis automatisch Systemfelder. Diesen generierten Feldern wird ein Präfix vorangestellt. @ Weitere Informationen zu generierten Feldern finden Sie unterUnterstützte Protokolle und erkannte Felder.

Von diesen generierten Feldern werden die folgenden zur Verwendung als Feldindizes unterstützt:

  • @logStream

  • @ingestionTime

  • @requestId

  • @type

  • @initDuration

  • @duration

  • @billedDuration

  • @memorySize

  • @maxMemoryUsed

  • @xrayTraceId

  • @xraySegmentId

Um diese generierten Felder zu indizieren, müssen Sie @ bei der Angabe keine zusätzlichen Felder hinzufügen, wie dies bei benutzerdefinierten Feldern der Fall ist, die mit @ beginnen. Um beispielsweise einen Feldindex für zu erstellen@logStream, geben Sie ihn einfach @logStream als Feldindex an.

CloudWatch Logs bietet Standardfeldindizes für alle Protokollgruppen in der Standard-Protokollklasse. Standardfeldindizes sind automatisch für die folgenden Felder verfügbar:

  • @logStream

  • @aws.region

  • @aws.account

  • @source.log

  • @data_source_name

  • @data_source_type

  • @data_format

  • traceId

  • severityText

  • attributes.session.id

CloudWatch Logs bietet auch Standardfeldindizes für bestimmte Kombinationen von Datenquellennamen und -typen. Standardfeldindizes sind automatisch für die folgenden Kombinationen aus Datenquellennamen und -typ verfügbar:

Name und Typ der Datenquelle Standard-Feldindizes

amazon_vpc.flow

action

logStatus

region

flowDirection

type

amazon_route53.resolver_query

query_type

transport

rcode

aws_waf.access

action

httpRequest.country

aws_cloudtrail.data

aws_cloudtrail.management

eventSource

eventName

awsRegion

userAgent

errorCode

eventType

managementEvent

readOnly

eventCategory

requestId

Standardfeldindizes kommen zusätzlich zu allen benutzerdefinierten Feldindizes hinzu, die Sie in Ihrer Richtlinie definieren. Standardfeldindizes werden nicht auf Ihr Feldindexkontingent angerechnet.

Untergeordnete Felder und Array-Felder in JSON-Protokollen

Sie können Felder, bei denen es sich um verschachtelte untergeordnete Felder oder Array-Felder handelt, in JSON-Protokollen indizieren.

Sie können beispielsweise einen Index des accessKeyId untergeordneten Felds innerhalb des userIdentity Felds in diesem Protokoll erstellen:

{ "eventVersion": "1.0", "userIdentity": { "type": "IAMUser", "principalId": "EXAMPLE_PRINCIPAL_ID", "arn": "arn: aws: iam: : 123456789012: user/Alice", "accessKeyId": "11112222", "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", "currentState": { "code": 0, "name": "pending" }, "previousState": { "code": 80, "name": "stopped" } }] } } }

Um dieses Feld zu erstellen, verweisen Sie sowohl bei der Erstellung des Feldindex als auch bei der Angabe in einer Abfrage mithilfe der Punktnotation (userIdentity.accessKeyId) darauf. Die Abfrage könnte so aussehen:

fields @timestamp, @message | filterIndex userIdentity.accessKeyId = "11112222"

Im vorherigen Beispielereignis befindet sich das instanceId Feld in einem Array innerhalb von requestParameters.instancesSet.items Um dieses Feld sowohl bei der Erstellung des Feldindex als auch bei der Abfrage darzustellen, beziehen Sie sich darauf, da sich requestParameters.instancesSet.items.0.instanceId die 0 auf die Position des Felds im Array bezieht.

Dann könnte eine Abfrage für dieses Feld wie folgt aussehen:

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