Query di esempio - CloudWatch Registri Amazon

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à.

Query di esempio

Questa sezione contiene un elenco di comandi di query generali e utili che è possibile eseguire nella console. CloudWatch Per informazioni su come eseguire un comando di query, consulta Tutorial: Esegui e modifica una query di esempio nella Amazon CloudWatch Logs User Guide.

Per ulteriori informazioni sulla sintassi delle query, consulta. CloudWatch Sintassi delle query di Logs Insights

Query generali

Trova i 25 log eventi aggiunti più di recente.

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

Ottieni un elenco del numero di eccezioni all'ora.

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

Ottieni un elenco di log eventi che non sono eccezioni.

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

Ottieni il log eventi più recente per ogni valore univoco del campo server.

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

Ottieni il log eventi più recente per ogni valore univoco del campo server per ogni tipo di severity.

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

Query per i registri di Lambda

Determina la quantità di memoria per la quale è stato effettuato un provisioning eccessivo.

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

Crea un report sulla latenza.

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

Cerca le invocazioni lente delle funzioni ed elimina le richieste duplicate che possono derivare da nuovi tentativi o dal codice lato client. In questa query, @duration è espresso in millisecondi.

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

Query per i flussi di log Amazon VPC

Trova i primi 15 trasferimenti di pacchetti tra gli host:

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

Trova i primi 15 trasferimenti di byte per gli host su una determinata sottorete.

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

Trova gli indirizzi IP che utilizzano UDP come protocollo di trasferimento dei dati.

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

Trova gli indirizzi IP in cui i record di flusso sono stati ignorati durante la finestra di acquisizione.

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

Trova un singolo record per ogni connessione, per risolvere i problemi di connettività di rete.

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

Query per i registri di Route 53

Trova la distribuzione di record all'ora in base al tipo di query.

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

Trova i 10 resolver DNS con il più elevato numero di richieste.

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

Trova il numero di record in base a dominio e sottodominio in cui il server non è riuscito a completare la richiesta DNS.

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

Interrogazioni per i log CloudTrail

Trova il numero di voci di log per ogni servizio, tipo di evento e Regione AWS .

stats count(*) by eventSource, eventName, awsRegion

Trova gli host Amazon EC2 che sono stati avviati o interrotti in una determinata AWS regione.

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

Trova le AWS regioni, i nomi utente e gli ARN degli utenti IAM appena creati.

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

Trova il numero di record in cui si è verificata un'eccezione durante il richiamo dell'API UpdateTrail.

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

Trova le voci di log in cui è stato utilizzato 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

Trova il numero di chiamate per servizio che ha utilizzato le versioni TLS 1.0 o 1.1

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

Domande per Amazon API Gateway

Trova gli ultimi 10 errori 4XX

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

Identifica le 10 Amazon API Gateway richieste che richiedono più tempo nel tuo gruppo di log di accesso Amazon API Gateway

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

Restituisci l'elenco dei percorsi API più popolari nel tuo Amazon API Gateway gruppo di log di accesso

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

Crea un rapporto sulla latenza di integrazione per il tuo gruppo di log di Amazon API Gateway accesso

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

Query per il gateway NAT

Se noti costi superiori al normale nella tua AWS fattura, puoi utilizzare CloudWatch Logs Insights per trovare i principali contributori. Per ulteriori informazioni sui seguenti comandi di query, vedi Come posso trovare i principali contributori al traffico attraverso il gateway NAT nel mio VPC? nella pagina di supporto AWS premium.

Nota

Nei seguenti comandi di query, sostituisci "x.x.x.x" con l'IP privato del gateway NAT e "y.y" con i primi due ottetti dell'intervallo CIDR VPC.

Trova le istanze che inviano più traffico attraverso il gateway 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

Determina il traffico da e verso le istanze nei gateway 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

Determina le destinazioni Internet con cui le istanze del VPC comunicano più spesso per caricamenti e download.

Per i caricamenti

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

Per i download

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

Query per i registri del server Apache

È possibile utilizzare CloudWatch Logs Insights per interrogare i log del server Apache. Per ulteriori informazioni sulle seguenti domande, consulta Semplificazione dei log del server Apache con CloudWatch Logs Insights nel blog Cloud Operations & Migrations. AWS

Trova i campi più pertinenti in modo da poter rivedere i log di accesso e verificare la presenza di traffico nel percorso /admin dell'applicazione.

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

Trova il numero di richieste GET univoche che hanno effettuato l'accesso alla pagina principale con il codice di stato "200" (operazione riuscita).

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

Trova il numero di volte in cui il servizio Apache è stato riavviato.

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

Richieste per Amazon EventBridge

Ottieni il numero di EventBridge eventi raggruppati per tipo di dettaglio dell'evento

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

Esempi del comando parse

Utilizza un'espressione glob per estrarre i campi @user, @method e @latency dal campo di log @message e restituire la latenza media per ogni combinazione univoca di @method e @user.

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

Utilizza un'espressione regolare per estrarre i campi temporanei @user2, @method2 e @latency2 dal campo di log @message e restituire la latenza media per ogni combinazione univoca di @method2 e @user2.

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

Estrae i campi loggingTime, loggingType e loggingMessage, filtra per log eventi che contengono le stringhe ERROR o INFO e quindi mostra solo i campi loggingMessage e loggingType per gli eventi che contengono una stringa ERROR.

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