Consultas de ejemplo - Amazon CloudWatch Logs

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.

Consultas de ejemplo

Esta sección contiene una lista de comandos de consulta generales y útiles que puede ejecutar en la CloudWatch consola. Para obtener información sobre cómo ejecutar un comando de consulta, consulte el Tutorial: Ejecutar y modificar una consulta de ejemplo en la Guía del usuario de Amazon CloudWatch Logs.

Para obtener más información sobre la sintaxis de la consulta, consulte CloudWatch Registra la sintaxis de consulta del idioma Insights.

Consultas generales

Buscar los 25 eventos de registro agregados más recientes.

fields @timestamp, @message | sort @timestamp desc | limit 25

Obtener una lista del número de excepciones por hora.

filter @message like /Exception/ | stats count(*) as exceptionCount by bin(1h) | sort exceptionCount desc

Obtener una lista de los eventos de registro que no son excepciones.

fields @message | filter @message not like /Exception/

Obtener el evento de registro más reciente para cada valor único del campo server.

fields @timestamp, server, severity, message | sort @timestamp asc | dedup server

Obtener el evento de registro más reciente para cada valor único del campo server para cada tipo severity.

fields @timestamp, server, severity, message | sort @timestamp desc | dedup server, severity

Consultas de registros de Lambda

Determinar la cantidad de memoria sobreaprovisionada.

filter @type = "REPORT" | stats max(@memorySize / 1000 / 1000) as provisonedMemoryMB, min(@maxMemoryUsed / 1000 / 1000) as smallestMemoryRequestMB, avg(@maxMemoryUsed / 1000 / 1000) as avgMemoryUsedMB, max(@maxMemoryUsed / 1000 / 1000) as maxMemoryUsedMB, provisonedMemoryMB - maxMemoryUsedMB as overProvisionedMB

Crear un informe de latencia.

filter @type = "REPORT" | stats avg(@duration), max(@duration), min(@duration) by bin(5m)

Buscar invocaciones de funciones lentas y eliminar las solicitudes duplicadas que puedan surgir de los reintentos o del código del lado del cliente. En esta consulta, @duration está en milisegundos.

fields @timestamp, @requestId, @message, @logStream | filter @type = "REPORT" and @duration > 1000 | sort @timestamp desc | dedup @requestId | limit 20

Consultas de registros de flujo de Amazon VPC

Buscar las 15 primeras transferencias de paquete en hosts:

stats sum(packets) as packetsTransferred by srcAddr, dstAddr | sort packetsTransferred desc | limit 15

Buscar las 15 primeras transferencias de bytes para los hosts de una subred determinada.

filter isIpv4InSubnet(srcAddr, "192.0.2.0/24") | stats sum(bytes) as bytesTransferred by dstAddr | sort bytesTransferred desc | limit 15

Buscar las direcciones IP que utilizan UDP como protocolo de transferencia de datos.

filter protocol=17 | stats count(*) by srcAddr

Buscar las direcciones IP donde los registros de flujo se omitieron durante la ventana de captura.

filter logStatus="SKIPDATA" | stats count(*) by bin(1h) as t | sort t

Buscar un registro único para cada conexión, para ayudar a solucionar problemas de conectividad de red.

fields @timestamp, srcAddr, dstAddr, srcPort, dstPort, protocol, bytes | filter logStream = 'vpc-flow-logs' and interfaceId = 'eni-0123456789abcdef0' | sort @timestamp desc | dedup srcAddr, dstAddr, srcPort, dstPort, protocol | limit 20

Consultas de registros de Route 53

Buscar la distribución de registros por hora por tipo de consulta.

stats count(*) by queryType, bin(1h)

Buscar los 10 solucionadores de DNS con el mayor número de solicitudes.

stats count(*) as numRequests by resolverIp | sort numRequests desc | limit 10

Buscar el número de registros por dominio y subdominio donde el servidor no pudo completar la solicitud de DNS.

filter responseCode="SERVFAIL" | stats count(*) by queryName

Consultas de CloudTrail registros

Buscar el número de entradas de registro para cada servicio, tipo de evento y región de  AWS .

stats count(*) by eventSource, eventName, awsRegion

Busca los EC2 hosts de Amazon que se iniciaron o se detuvieron en una AWS región determinada.

filter (eventName="StartInstances" or eventName="StopInstances") and awsRegion="us-east-2"

Busque las AWS regiones, los nombres de usuario y ARNs los usuarios de IAM recién creados.

filter eventName="CreateUser" | fields awsRegion, requestParameters.userName, responseElements.user.arn

Buscar el número de registros en los que se ha producido una excepción al invocar a la API UpdateTrail.

filter eventName="UpdateTrail" and ispresent(errorCode) | stats count(*) by errorCode, errorMessage

Buscar entradas de registro en las que se usó TLS 1.0 o 1.1

filter tlsDetails.tlsVersion in [ "TLSv1", "TLSv1.1" ] | stats count(*) as numOutdatedTlsCalls by userIdentity.accountId, recipientAccountId, eventSource, eventName, awsRegion, tlsDetails.tlsVersion, tlsDetails.cipherSuite, userAgent | sort eventSource, eventName, awsRegion, tlsDetails.tlsVersion

Buscar la cantidad de llamadas por servicio que usaron las versiones de TLS 1.0 o 1.1

filter tlsDetails.tlsVersion in [ "TLSv1", "TLSv1.1" ] | stats count(*) as numOutdatedTlsCalls by eventSource | sort numOutdatedTlsCalls desc

Consultas para Amazon API Gateway

Buscar los últimos 10 errores de 4XX

fields @timestamp, status, ip, path, httpMethod | filter status>=400 and status<=499 | sort @timestamp desc | limit 10

Identifique las 10 Amazon API Gateway solicitudes que llevan más tiempo ejecutándose en su grupo de registros de Amazon API Gateway acceso

fields @timestamp, status, ip, path, httpMethod, responseLatency | sort responseLatency desc | limit 10

Devuelve la lista de las rutas de API más populares de tu grupo de registros de Amazon API Gateway acceso

stats count(*) as requestCount by path | sort requestCount desc | limit 10

Crea un informe de latencia de integración para tu grupo de registros de Amazon API Gateway acceso

filter status=200 | stats avg(integrationLatency), max(integrationLatency), min(integrationLatency) by bin(1m)

Consultas para la puerta de enlace NAT

Si observas costes más altos de lo normal en tu AWS factura, puedes usar CloudWatch Logs Insights para encontrar a los principales contribuyentes. Para obtener más información sobre los siguientes comandos de consulta, consulte ¿Cómo puedo encontrar los principales contribuyentes al tráfico a través de la puerta de enlace NAT en mi VPC? en la página AWS de soporte premium.

nota

En los siguientes comandos de consulta, sustituya “x.x.x.x” por la IP privada de la puerta de enlace NAT y sustituya “y.y” por los dos primeros octetos del rango CIDR de la VPC.

Buscar las instancias que envían más tráfico a través de su puerta de enlace de NAT

filter (dstAddr like 'x.x.x.x' and srcAddr like 'y.y.') | stats sum(bytes) as bytesTransferred by srcAddr, dstAddr | sort bytesTransferred desc | limit 10

Determinar el tráfico de entrada y salida de las instancias de las puertas de enlace de NAT

filter (dstAddr like 'x.x.x.x' and srcAddr like 'y.y.') or (srcAddr like 'xxx.xx.xx.xx' and dstAddr like 'y.y.') | stats sum(bytes) as bytesTransferred by srcAddr, dstAddr | sort bytesTransferred desc | limit 10

Determinar los destinos de Internet con los que las instancias de la VPC se comunican con mayor frecuencia para las cargas y descargas.

Para cargas

filter (srcAddr like 'x.x.x.x' and dstAddr not like 'y.y.') | stats sum(bytes) as bytesTransferred by srcAddr, dstAddr | sort bytesTransferred desc | limit 10

Para descargas

filter (dstAddr like 'x.x.x.x' and srcAddr not like 'y.y.') | stats sum(bytes) as bytesTransferred by srcAddr, dstAddr | sort bytesTransferred desc | limit 10

Consultas para registros del servidor Apache

Puede usar CloudWatch Logs Insights para consultar los registros del servidor Apache. Para obtener más información sobre las siguientes consultas, consulte Simplificar los registros del servidor Apache con CloudWatch Logs Insights en el blog AWS Cloud Operations & Migrations.

Buscar los campos más relevantes para que pueda revisar sus registros de acceso y comprobar si hay tráfico en la ruta /admin de su aplicación

fields @timestamp, remoteIP, request, status, filename| sort @timestamp desc | filter filename="/var/www/html/admin" | limit 20

Buscar el número de solicitudes GET únicas que han accedido a su página principal con el código de estado “200” (correcta).

fields @timestamp, remoteIP, method, status | filter status="200" and referrer= http://34.250.27.141/ and method= "GET" | stats count_distinct(remoteIP) as UniqueVisits | limit 10

Buscar el número de veces que se ha reiniciado el servicio Apache.

fields @timestamp, function, process, message | filter message like "resuming normal operations" | sort @timestamp desc | limit 20

Consultas para Amazon EventBridge

Obtenga el número de EventBridge eventos agrupados por tipo de detalle del evento

fields @timestamp, @message | stats count(*) as numberOfEvents by `detail-type` | sort numberOfEvents desc

Ejemplos del comando para analizar

Utilice una expresión glob para extraer los campos @user@method y @latency del campo de registro @message y devolver la latencia promedio para cada combinación única de @method y @user.

parse @message "user=*, method:*, latency := *" as @user, @method, @latency | stats avg(@latency) by @method, @user

Utilice una expresión regular para extraer los campos @user2@method2 y @latency2 del campo de registro @message y devolver la latencia promedio para cada combinación única de @method2 y @user2.

parse @message /user=(?<user2>.*?), method:(?<method2>.*?), latency := (?<latency2>.*?)/ | stats avg(latency2) by @method2, @user2

Extrae los campos loggingTimeloggingType y loggingMessage, filtra hasta los eventos de registro que contienen cadenas ERROR o INFO y, a continuación, muestra solo los campos loggingMessage y loggingType para los eventos que contienen una cadena ERROR.

FIELDS @message | PARSE @message "* [*] *" as loggingTime, loggingType, loggingMessage | FILTER loggingType IN ["ERROR", "INFO"] | DISPLAY loggingMessage, loggingType = "ERROR" as isError