Exemples de requêtes - Amazon CloudWatch Logs

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.

Exemples de requêtes

Cette section contient une liste de commandes de requête générales et utiles que vous pouvez exécuter dans la CloudWatch console. Pour plus d'informations sur l'exécution d'une commande de requête, consultez Tutoriel : Exécuter et modifier un exemple de requête dans le guide de l'utilisateur Amazon CloudWatch Logs.

Requêtes générales

Rechercher les 25 derniers événements ajoutés au journal.

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

Obtenir une liste du nombre d'exceptions par heure.

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

Obtenir une liste des événements de journal qui ne sont pas des exceptions.

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

Obtenir l'événement du journal le plus récent pour chaque valeur unique du champ server.

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

Obtenir l'événement du journal le plus récent pour chaque valeur unique du champ server pour chaque type de severity.

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

Requêtes pour les journaux Lambda

Déterminer la quantité de mémoire surallouée.

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

Créer un rapport de latence.

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

Rechercher les invocations de fonctions lentes et éliminer les requêtes dupliquées qui peuvent résulter de nouvelles tentatives ou d'un code côté client. Dans cette requête, la valeur @duration est exprimée en millisecondes.

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

Requêtes pour les journaux de flux Amazon VPC

Rechercher les 15 premiers transferts de paquets entre les hôtes :

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

Trouver les 15 premiers transferts d'octets pour des hôtes sur un sous-réseau donné.

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

Rechercher les adresses IP qui utilisent UDP comme protocole de transfert de données.

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

Rechercher les adresses IP pour lesquelles des enregistrements de flux ont été ignorés durant la fenêtre de capture.

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

Trouver un enregistrement unique pour chaque connexion, afin de résoudre les problèmes de connectivité réseau.

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

Requêtes pour les journaux Route 53

Rechercher la distribution d'enregistrements par heure par type de requête.

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

Rechercher les 10 premiers résolveurs DNS avec le plus grand nombre de requêtes.

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

Rechercher le nombre d'enregistrements par domaine et sous-domaine où le serveur n'a pas pu résoudre la requête DNS.

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

Requêtes pour les CloudTrail journaux

Rechercher le nombre d'entrées de journal pour chaque service, type d'événement et Région AWS .

stats count(*) by eventSource, eventName, awsRegion

Trouvez les hôtes Amazon EC2 qui ont été démarrés ou arrêtés dans une région donnée AWS .

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

Trouvez les AWS régions, les noms d'utilisateur et les ARN des utilisateurs IAM nouvellement créés.

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

Rechercher le nombre d'enregistrements où une exception s'est produite lors de l'appel de l'API UpdateTrail.

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

Rechercher les entrées de journal dans lesquelles TLS 1.0 ou 1.1 a été utilisé

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

Rechercher le nombre d'appels par service qui ont utilisé les versions TLS 1.0 ou 1.1

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

Requêtes pour Amazon API Gateway

Trouver les 10 dernières erreurs 4XX

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

Identifiez les 10 Amazon API Gateway demandes les plus anciennes de votre groupe de journaux Amazon API Gateway d'accès

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

Renvoie la liste des chemins d'API les plus populaires dans votre groupe de journaux Amazon API Gateway d'accès

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

Créez un rapport de latence d'intégration pour votre groupe de journaux Amazon API Gateway d'accès

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

Requêtes pour passerelle NAT

Si vous constatez des coûts plus élevés que d'habitude sur votre AWS facture, vous pouvez utiliser CloudWatch Logs Insights pour trouver les meilleurs contributeurs. Pour plus d'informations sur les commandes de requête suivantes, consultez Comment puis-je trouver les principaux contributeurs au trafic via la passerelle NAT de mon VPC ? sur la page d'assistance AWS premium.

Note

Dans les commandes de requête suivantes, remplacez « x.x.x.x » par l'adresse IP privée de votre passerelle NAT et remplacez « y.y » par les deux premiers octets de votre plage CIDR VPC.

Rechercher les instances qui envoient le plus de trafic via votre passerelle 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

Déterminer le trafic qui va vers et en provenance des instances de vos passerelles 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

Déterminer les destinations Internet avec lesquelles les instances de votre VPC communiquent le plus souvent pour les chargements et les téléchargements.

For uploads (Pour chargements)

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

Pour les téléchargements

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

Requêtes pour les journaux du serveur Apache

Vous pouvez utiliser CloudWatch Logs Insights pour interroger les journaux du serveur Apache. Pour plus d'informations sur les requêtes suivantes, consultez Simplifier les journaux du serveur Apache avec CloudWatch Logs Insights sur le blog AWS Cloud Operations & Migrations.

Trouver les champs les plus pertinents, afin de pouvoir consulter vos journaux d'accès et vérifier le trafic dans le chemin /admin de votre application.

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

Trouver le nombre de requêtes GET uniques qui ont accédé à votre page principale avec le code d'état « 200 » (succès).

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

Rechercher le nombre de fois où votre service Apache a redémarré.

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

Requêtes pour Amazon EventBridge

Obtenez le nombre d' EventBridge événements regroupés par type de détail de l'événement

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

Exemples de la commande d'analyse.

Utilisez une expression glob pour extraire les champs @user, @method et @latency à partir du champ de journal @message et renvoyer la latence moyenne pour chaque combinaison unique de @method et @user.

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

Utilisez une expression régulière pour extraire les champs @user2, @method2 et @latency2 à partir du champ du journal @message et renvoyer la latence moyenne pour chaque combinaison unique de @method2 et @user2.

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

Extrait les champs loggingTime, loggingType et loggingMessage, filtre vers le bas pour journaliser les événements qui contiennent les chaînes ERROR ou INFO, puis affiche uniquement les champs loggingMessage et loggingType pour les événements qui contiennent une chaîne ERROR.

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