View a markdown version of this page

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

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Journaux pris en charge et champs découverts

CloudWatch Logs Insights prend en charge différents types de journaux. Pour chaque journal envoyé à un groupe de journaux de classe Standard dans 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 message champ 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 timestamp champ dans InputLogevent.

  • @ingestionTimecontient l'heure à laquelle CloudWatch Logs a reçu l'événement de journal.

  • @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.

  • @entitycontient du JSON aplati lié aux entités pour la fonctionnalité de télémétrie associée à Explore.

    Par exemple, ce JSON peut représenter une entité.

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

    Pour cette entité, les champs système extraits seraient les suivants :

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

La découverte de champs est prise en charge uniquement pour les groupes de journaux de la classe de journaux Standard. Pour plus d'informations sur les classes de journaux, consultezClasses de log.

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

Pour de nombreux types de CloudWatch journaux, Logs découvre é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 contenant des champs que CloudWatch Logs Insights ne découvre pas automatiquement, vous pouvez utiliser la parse commande pour extraire et créer des champs extraits à utiliser dans cette requête. Pour de plus amples informations, veuillez consulter CloudWatch Syntaxe des requêtes linguistiques de Logs Insights.

Si le nom d'un champ de journal découvert commence par ce @ caractère, CloudWatch Logs Insights l'affiche avec un caractère supplémentaire @ 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.

Note

À l'exception de @message@timestamp, ou@log, vous pouvez créer des index de champs pour les champs découverts. Pour plus d'informations sur les index de champs, consultezCréez des index de champs pour améliorer les performances des requêtes et réduire le volume d'analyse.

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, ednsClientSubnet, 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 X-Ray trace, elle inclut également les champs suivants : @xrayTraceId et@xraySegmentId.

CloudWatch Logs Insights découvre automatiquement les champs de journal dans les journaux Lambda, mais uniquement pour le premier fragment JSON intégré à 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 de plus amples informations, veuillez consulter Champs des journaux JSON.

CloudTrail journaux

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": "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'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.

Notation par points et champs JSON-encoded de chaînes

La notation par points ne traverse que les champs qui sont stockés en tant qu'objets JSON structurellement imbriqués au moment de l'ingestion. Si la valeur d'un champ est une JSON-encoded chaîne (une chaîne dont le contenu est un JSON valide), la notation par points la traite comme une valeur de feuille opaque et n'accède pas aux sous-champs qu'il contient.

Cela se produit fréquemment avec :

  • Journaux transformés par les pipelines OCSF (par exemple, api.request.data saisis comme json_t dans le schéma OCSF)

  • Toute source de journal dans laquelle les charges utiles à structure variable sont sérialisées sous forme de chaînes avant l'ingestion

Par exemple, si api.request.data contient {"startTime":1234,"endTime":5678} en tant que valeur de chaîne, elle ne api.request.data.startTime renvoie aucun résultat car CloudWatch Logs Insights traite la chaîne entière comme une valeur de feuille unique plutôt que comme un objet imbriqué.

Pour accéder aux sous-champs d'une JSON-encoded chaîne, utilisez cette option jsonParse pour convertir la chaîne en une carte traversable.

Exemple : requête utilisant JSONParse pour un champ de chaîne JSON-encoded

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

Cette requête permet jsonParse d'analyser la JSON-encoded chaîne api.request.data dans une carte, puis d'accéder au startTime sous-champ avec une notation par points. Pour plus d'informationsjsonParse, consultez la section Types de structure.

Note

CloudWatch Logs Insights peut 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 parse commande, consultez la section Syntaxe des requêtes dans le guide de CloudWatch l'utilisateur Amazon.