Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Registri supportati e campi rilevati
CloudWatch Logs Insights supporta diversi tipi di log. Per ogni log inviato a un gruppo di log di classe Standard in Amazon CloudWatch Logs, CloudWatch Logs Insights genera automaticamente cinque campi di sistema:
-
@messagecontiene il log eventi non analizzato, non elaborato. È l'equivalente delmessagecampo in InputLogevent. -
@timestampcontiene il timestamp dell'evento nel campotimestampdel log eventi. È l'equivalente deltimestampcampo in InputLogevent. -
@ingestionTimecontiene l'ora in cui CloudWatch Logs ha ricevuto l'evento di log. -
@logStreamcontiene il nome del flusso di log a cui il log eventi è stato aggiunto. I flussi di log raggruppano i registri in base allo stesso processo che li ha generati. -
@logè un identificatore di gruppo di log sotto forma di. Nelle query di più gruppi di log, può essere utile per identificare a quale gruppo di log appartiene un particolare evento.account-id:log-group-name -
@entitycontiene un JSON appiattito relativo alle entità per la funzionalità di telemetria correlata a Explore.Ad esempio, questo JSON può rappresentare un'entità.
{ "Entity": { "KeyAttributes": { "Type": "Service", "Name": "PetClinic" }, "Attributes": { "PlatformType": "AWS::EC2", "EC2.InstanceId": "i-1234567890123" } } }Per questa entità, i campi di sistema estratti sarebbero i seguenti:
@entity.KeyAttributes.Type = Service @entity.KeyAttributes.Name = PetClinic @entity.Attributes.PlatformType = AWS::EC2 @entity.Attributes.EC2.InstanceId = i-1234567890123
Nota
Il rilevamento dei campi è supportato solo per i gruppi di log nella classe di log Standard. Per ulteriori informazioni sulle classi di log, vedereClassi di registro.
CloudWatch Logs Insights inserisce il simbolo @ all'inizio dei campi generati.
Per molti tipi di CloudWatch log, Logs rileva automaticamente anche i campi di log contenuti nei log. Questi campi di rilevamento automatici sono mostrati nella tabella seguente.
Per altri tipi di log con campi che CloudWatch Logs Insights non rileva automaticamente, puoi utilizzare il parse comando per estrarre e creare campi estratti da utilizzare in quella query. Per ulteriori informazioni, consulta CloudWatch Sintassi delle query linguistiche di Logs Insights.
Se il nome di un campo di registro scoperto inizia con il @ carattere, CloudWatch Logs Insights lo visualizza con un'@aggiunta aggiuntiva all'inizio. Ad esempio, se un nome di un campo di log è @example.com, questo nome di campo viene visualizzato come @@example.com.
Nota
Ad eccezione di@message,@timestamp, o@log, è possibile creare indici di campo per i campi scoperti. Per ulteriori informazioni sugli indici dei campi, vedere. Crea indici di campo per migliorare le prestazioni delle query e ridurre il volume di scansione
| Tipo di log | Campi di log rilevati |
|---|---|
|
Log di flusso Amazon VPC |
|
|
Log di Route 53 |
|
|
Log di Lambda |
Se una riga di log Lambda contiene un ID di X-Ray traccia, include anche i seguenti campi: e. CloudWatch Logs Insights rileva automaticamente i campi di log nei log Lambda, ma solo per il primo frammento JSON incorporato in ogni evento di log. Se un log eventi Lambda contiene più frammenti JSON, puoi analizzare ed estrarre i campi dei log utilizzando il comando |
|
CloudTrail log Log in formato JSON |
Per ulteriori informazioni, consulta Campi nei registri JSON. |
|
Altri tipi di log |
|
Campi nei registri JSON
Con CloudWatch Logs Insights, si utilizza la notazione a punti per rappresentare i campi JSON. Questa sezione contiene un esempio di evento e di frammento di codice JSON che mostra come accedere ai campi JSON utilizzando la notazione con il punto.
Esempio: evento JSON
{ "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" } } ] } } }
L'evento JSON di esempio contiene un oggetto denominato userIdentity. userIdentity contiene un campo denominato type. Per rappresentare il valore di type usando la notazione con il punto, utilizza userIdentity.type.
L'evento JSON di esempio contiene matrici che si livellano in elenchi di nomi e valori di campi annidati. Per rappresentare il valore di instanceId per il primo elemento di requestParameters.instancesSet, utilizza requestParameters.instancesSet.items.0.instanceId. Il numero 0 posizionato prima del campo instanceID si riferisce alla posizione dei valori per il campo items. L'esempio seguente contiene un frammento di codice che mostra come è possibile accedere ai campi JSON annidati in un log eventi JSON.
Esempio: query
fields @timestamp, @message | filter requestParameters.instancesSet.items.0.instanceId="i-abcde123" | sort @timestamp desc
Il frammento di codice mostra una query che utilizza la notazione con il punto con il comando filter per accedere al valore del campo JSON annidato instanceId. La query filtra i messaggi in cui il valore di instanceId è uguale a "i-abcde123" e restituisce tutti i log eventi che contengono il valore specificato.
Notazione a punti e campi stringa JSON-encoded
La notazione a punti attraversa solo i campi archiviati come oggetti JSON strutturalmente annidati al momento dell'inserimento. Se il valore di un campo è una JSON-encoded stringa (una stringa il cui contenuto è un JSON valido), la notazione a punti lo considera come un valore foglia opaco e non accede ai sottocampi al suo interno.
Ciò si verifica comunemente con:
-
I log trasformati dalle pipeline OCSF (ad esempio,
api.request.datavengono digitati comejson_tnello schema OCSF) -
Qualsiasi origine di log in cui i payload a struttura variabile vengono serializzati come stringhe prima dell'inserimento
Ad esempio, se api.request.data contiene {"startTime":1234,"endTime":5678} come valore di stringa, non api.request.data.startTime restituisce alcun risultato perché CloudWatch Logs Insights considera l'intera stringa come un singolo valore di foglia anziché come un oggetto annidato.
Per accedere ai sottocampi all'interno di una JSON-encoded stringa, usa jsonParse per convertire la stringa in una mappa attraversabile.
Esempio: interrogazione che utilizza JSONParse per un campo stringa JSON-encoded
fields jsonParse(api.request.data).startTime as startTime
Questa query viene utilizzata jsonParse per analizzare la JSON-encoded stringa in api.request.data una mappa e quindi accedere al sottocampo con la startTime notazione a punti. Per ulteriori informazioni sujsonParse, consulta Tipi di struttura. https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax-operations-functions.html#CWL_QuerySyntax-structure-types
Nota
CloudWatch Logs Insights può estrarre un massimo di 200 campi di eventi di registro da un registro JSON. Per i campi aggiuntivi che non vengono estratti, è possibile utilizzare il comando parse per estrarre questi campi dal log eventi non analizzato e non elaborato nel campo del messaggio. Per ulteriori informazioni sul parse comando, consulta la sintassi di Query nella Amazon CloudWatch User Guide.