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 la syntaxe des requêtes, consultezCloudWatch Syntaxe de requête Logs Insights.
Rubriques
- Requêtes générales
- Requêtes pour les journaux Lambda
- Requêtes pour les journaux VPC de flux Amazon
- Requêtes pour les journaux Route 53
- Requêtes pour les CloudTrail journaux
- Requêtes pour Amazon API Gateway
- Requêtes pour la NAT passerelle
- Requêtes pour les journaux du serveur Apache
- Requêtes pour Amazon EventBridge
- Exemples de la commande d'analyse.
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 VPC de flux Amazon
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
Trouvez les adresses IP utilisées 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)
Trouvez les 10 DNS résolveurs ayant reçu le plus grand nombre de requêtes.
stats count(*) as numRequests by resolverIp | sort numRequests desc | limit 10
Trouvez le nombre d'enregistrements par domaine et sous-domaine pour lesquels le serveur n'a pas répondu à la DNS demande.
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 EC2 hôtes Amazon qui ont été démarrés ou arrêtés dans une AWS région donnée.
filter (eventName="StartInstances" or eventName="StopInstances") and awsRegion="us-east-2"
Trouvez les AWS régions, les noms d'utilisateur et ARNs IAM les utilisateurs nouvellement créés.
filter eventName="CreateUser" | fields awsRegion, requestParameters.userName, responseElements.user.arn
Trouvez le nombre d'enregistrements dans lesquels une exception s'est produite lors de l'appel du APIUpdateTrail
.
filter eventName="UpdateTrail" and ispresent(errorCode) | stats count(*) by errorCode, errorMessage
Rechercher les entrées du journal où 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
Trouvez le nombre d'appels par service utilisant les TLS versions 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 API chemins les plus populaires de 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 la NAT passerelle
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, voir Comment puis-je trouver les principaux contributeurs au trafic via la NAT passerelle dans mon VPC ?
Note
Dans les commandes de requête suivantes, remplacez « x.x.x.x » par l'adresse IP privée de votre NAT passerelle et remplacez « y.y » par les deux premiers octets de votre plage. VPC CIDR
Trouvez les instances qui envoient le plus de trafic via votre NAT passerelle.
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éterminez le trafic à destination et en provenance des instances de vos NAT passerelles.
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éterminez les destinations Internet avec lesquelles les instances de votre site 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
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
Trouvez le nombre de GET demandes uniques ayant 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