Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Registros y campos detectados compatibles
CloudWatch Logs Insights admite diferentes tipos de registros. Por cada registro que se envía a un grupo de registros de clase estándar en Amazon CloudWatch Logs, CloudWatch Logs Insights genera automáticamente cinco campos de sistema:
-
@messagecontiene el evento de registro sin analizar ni procesar. Es el equivalente almessagecampo de InputLogevent. -
@timestampcontiene la marca temporal del evento incluida en el campotimestampdel evento de registro. Es el equivalente altimestampcampo en InputLogevent. -
@ingestionTimecontiene la hora en la que CloudWatch Logs recibió el evento de registro. -
@logStreamcontiene el nombre del flujo de registros al que se añadió el evento de registro. Las transmisiones de registro agrupan los registros a través del mismo proceso que los generó. -
@loges un identificador de grupo de registro con el formato. Puede ser útil en consultas de varios grupos de registro para identificar a qué grupo de registro pertenece un evento determinado.account-id:log-group-name -
@entitycontiene JSON aplanada relacionada con entidades para la característica Telemetría relacionada con Explore.Por ejemplo, esta JSON puede representar una entidad.
{ "Entity": { "KeyAttributes": { "Type": "Service", "Name": "PetClinic" }, "Attributes": { "PlatformType": "AWS::EC2", "EC2.InstanceId": "i-1234567890123" } } }Para esta entidad, los campos del sistema extraídos serían los siguientes:
@entity.KeyAttributes.Type = Service @entity.KeyAttributes.Name = PetClinic @entity.Attributes.PlatformType = AWS::EC2 @entity.Attributes.EC2.InstanceId = i-1234567890123
nota
La detección de campos solo se admite para los grupos de registro de la clase de registro Estándar. Para obtener más información acerca de las clases de registros, consulte Clases de registro.
CloudWatch Logs Insights inserta el símbolo @ al principio de los campos que genera.
Para muchos tipos de registro, CloudWatch Logs también descubre automáticamente los campos de registro contenidos en los registros. Estos campos de detección automática se muestran en la siguiente tabla.
En el caso de otros tipos de CloudWatch registros con campos que Logs Insights no detecta automáticamente, puedes usar el parse comando para extraer y crear campos extraídos para usarlos en esa consulta. Para obtener más información, consulte CloudWatch Sintaxis de consultas del lenguaje Logs Insights.
Si el nombre de un campo de registro descubierto comienza por ese @ carácter, CloudWatch Logs Insights lo muestra con un @ añadido adicional al principio. Por ejemplo, si un nombre de campo de registro es @example.com, este nombre de campo se muestra como @@example.com.
nota
Excepto en el caso de @message, @timestamp o @log, se pueden crear índices de campos para los campos descubiertos. Para obtener más información sobre los índices de campo, consulte Creación de índices de campo para mejorar el rendimiento de las consultas y reducir el volumen de análisis.
| Tipo de registro | Campos de registro detectados |
|---|---|
|
Registros de flujo de Amazon VPC |
|
|
Registros de Route 53 |
|
|
Registros de Lambda |
Si una línea de registro de Lambda contiene un identificador de X-Ray seguimiento, también incluye los siguientes campos: CloudWatch Logs Insights descubre automáticamente los campos de registro en los registros de Lambda, pero solo para el primer fragmento de JSON incorporado en cada evento de registro. Si un evento de registro de Lambda contiene varios fragmentos JSON, puede analizar y extraer los campos de registro con el comando |
|
CloudTrail registros Registros en formato JSON |
Para obtener más información, consulte Campos de registros JSON. |
|
Otros tipos de registros |
|
Campos de registros JSON
Con CloudWatch Logs Insights, se utiliza la notación de puntos para representar los campos JSON. Esta sección contiene un ejemplo de evento JSON y fragmento de código que muestra cómo acceder a los campos JSON mediante la notación de puntos.
Ejemplo de 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" } } ] } } }
El evento JSON de ejemplo contiene un objeto denominado userIdentity. userIdentitycontiene un campo que se llama type. Para representar el valor de type usando una notación de puntos, use userIdentity.type.
El evento JSON de ejemplo contiene matrices que se aplanan en listas de nombres y valores de campo anidados. Para representar el valor de instanceId para el primer elemento de requestParameters.instancesSet, utilice requestParameters.instancesSet.items.0.instanceId. El número 0 que se coloca antes del campo instanceID hace referencia a la posición de los valores para el campo items. El siguiente ejemplo contiene un fragmento de código que muestra cómo puede acceder a los campos JSON anidados en un evento de registro JSON.
Ejemplo: consulta
fields @timestamp, @message | filter requestParameters.instancesSet.items.0.instanceId="i-abcde123" | sort @timestamp desc
El fragmento de código muestra una consulta que utiliza la notación de puntos con el comando filter para acceder al valor del campo JSON anidado instanceId. La consulta se filtra en los mensajes donde el valor de instanceId es igual a "i-abcde123" y devuelve todos los eventos de registro que contienen el valor especificado.
Notación de puntos y campos JSON-encoded de cadenas
La notación de puntos solo recorre los campos que se almacenan como objetos JSON anidados estructuralmente en el momento de la ingesta. Si el valor de un campo es una JSON-encoded cadena (una cadena cuyo contenido resulta ser un JSON válido), la notación de puntos lo trata como un valor de hoja opaco y no accede a los subcampos que contiene.
Esto suele ocurrir con:
-
Registros transformados por canalizaciones de OCSF (por ejemplo,
api.request.datase escriben comojson_ten el esquema OCSF) -
Cualquier fuente de registro en la que las cargas útiles de estructura variable se serialicen como cadenas antes de la ingestión
Por ejemplo, si api.request.data contiene un valor de cadena, no api.request.data.startTime devuelve ningún resultado porque CloudWatch Logs Insights trata la cadena completa {"startTime":1234,"endTime":5678} como un valor de hoja única y no como un objeto anidado.
Para acceder a los subcampos de una JSON-encoded cadena, utilícela jsonParse para convertir la cadena en un mapa transitable.
Ejemplo: consulta con JSONParse para un campo de cadena JSON-encoded
fields jsonParse(api.request.data).startTime as startTime
Esta consulta se utiliza jsonParse para analizar la JSON-encoded cadena api.request.data en un mapa y, a continuación, acceder al startTime subcampo con notación de puntos. Para obtener más información al respectojsonParse, consulte Tipos de estructura.
nota
CloudWatch Logs Insights puede extraer un máximo de 200 campos de eventos de registro de un registro JSON. Para campos adicionales que no se extraen, puede utilizar el comando parse para extraer estos campos desde el evento de registro sin analizar en el campo de mensaje. Para obtener más información sobre el parse comando, consulte la sintaxis de las consultas en la Guía del CloudWatch usuario de Amazon.