Journaux pris en charge et champs découverts - Amazon CloudWatch Logs

Journaux pris en charge et champs découverts

CloudWatch Logs Insights prend en charge différents types de journaux. Pour chaque journal envoyé à Amazon CloudWatch Logs, CloudWatch Logs Insights génère automatiquement cinq champs système :

  • @message contient l'événement de journal non analysé brut. Il s'agit de l'équivalent du champ message dans InputLogevent.

  • @timestamp contient l'horodatage de l'événement dans le champ timestamp de l'événement du journal. Il s'agit de l'équivalent du champ timestamp dans InputLogevent.

  • @ingestionTime contient l'heure de réception de l'événement du journal par CloudWatch Logs.

  • @logStream contient le nom du flux de journaux auquel l'événement de journal a été ajouté. Les flux de journaux regroupent les journaux à travers le même processus qui les a générés.

  • @log est un identificateur de groupe de journaux sous la forme de account-id:log-group-name. Lors de la requête de plusieurs groupes de journaux, cela peut être utile d'identifier le groupe de journaux auquel appartient un événement particulier.

CloudWatch Logs Insights insère le symbole @ au début des champs qu'elle génère.

Pour de nombreux types de journaux, CloudWatch Logs détecte également automatiquement les champs de journal contenus dans les journaux. Ces champs de détection automatique figurent dans le tableau suivant.

Pour les autres types de journaux avec des champs que CloudWatch Logs Insights ne permet pas de détecter automatiquement, vous pouvez utiliser la commande parse pour extraire et créer des champs éphémères à utiliser dans cette requête. Pour plus d'informations, consultez Syntaxe de requête CloudWatch Logs Insights.

Si le nom d'un champ de journal détecté commence par le caractère @, CloudWatch Logs Insights l'affiche avec un autre @ ajouté au début. Par exemple, si un nom de champ de journal est @example.com, ce nom de champ s'affiche sous la forme de @@example.com.

Type de journal Champs de journal détectés

Journaux de flux Amazon VPC

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

Journaux Route 53

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

Journaux Lambda

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

Si une ligne de journal Lambda contient un ID de suivi X-Ray, elle inclut également les champs suivants : @xrayTraceId et @xraySegmentId.

CloudWatch Logs Insights détecte automatiquement les champs de journal dans les journaux Lambda, mais uniquement pour le premier fragment JSON imbriqué dans chaque événement de journal. Si un événement de journal Lambda contient plusieurs fragments JSON, vous pouvez analyser et extraire les champs de journal à l'aide de la commande parse. Pour plus d'informations, consultez Champs des journaux JSON.

Journaux CloudTrail

Journaux au format JSON

Pour plus d'informations, consultez Champs des journaux JSON.

Autres types de journaux

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

Champs des journaux JSON

Avec CloudWatch Logs Insights, vous utilisez la notation par points pour représenter les champs JSON. Cette section contient un exemple d'événement JSON et un extrait de code qui montre comment vous pouvez accéder aux champs JSON à l'aide de la notation par points.

Exemple : événement 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": "205.251.233.176", "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'exemple d'événement JSON contient un objet nommé userIdentity. userIdentity contient un champ nommé type. Pour représenter la valeur de type à l'aide de la notation par points, vous utilisez userIdentity.type.

L'exemple d'événement JSON contient des matrices qui s'aplatissent en listes de noms et de valeurs de champs imbriqués. Pour représenter la valeur de instanceId pour le premier élément de requestParameters.instancesSet, vous utilisez requestParameters.instancesSet.items.0.instanceId. Le numéro 0 placé avant le champ instanceID fait référence à la position des valeurs pour le champ items. L'exemple suivant contient un extrait de code qui montre comment vous pouvez accéder aux champs JSON imbriqués dans un événement du journal JSON.

Exemple : requête

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

L'extrait de code affiche une requête qui utilise la notation par points avec la commande filter pour accéder à la valeur du champ JSON imbriqué instanceId. La requête filtre les messages dont la valeur de instanceId équivaut à "i-abcde123" et renvoie tous les événements du journal contenant la valeur spécifiée.

Note

CloudWatch Logs Insights permet d'extraire un maximum de 200 champs d'événements de journal à partir d'un journal JSON. Pour les champs supplémentaires non extraits, vous pouvez utiliser la commande parse pour extraire ces champs à partir de l'événement du journal non analysé brut dans le champ de message. Pour plus d'informations sur la commande parse, consultez Syntaxe de requête dans le Guide de l'utilisateur Amazon CloudWatch.