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

stats

Utilisez stats pour créer des visualisations les données de vos journaux, telles que des diagrammes à barres, des graphiques linéaires et des diagrammes à aires empilées. Cela vous permet d'identifier plus efficacement les modèles dans vos données de journal. CloudWatch Logs Insights génère des visualisations pour les requêtes qui utilisent la stats fonction et une ou plusieurs fonctions d'agrégation.

Par exemple, la requête suivante dans un groupe de journaux Route 53 renvoie des visualisations présentant la distribution des enregistrements Route 53 par heure, par type de requête.

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

Toutes ces requêtes peuvent produire des graphiques à barres. En outre, si votre requête utilise la fonction bin() pour regrouper les données en fonction d'un seul champ au fil du temps, vous pouvez également voir des graphiques linéaires et des graphiques en aires empilées.

les unités de temps et les abréviations suivantes sont prises en charge par la fonction bin. Pour toutes les unités et abréviations qui incluent plus d'un caractère, l'ajout de s au pluriel est pris en charge. Donc, les deux hr et hrs travaillent pour spécifier les heures.

  • millisecond ms msec

  • second s sec

  • minute m min

  • hour h hr

  • day d

  • week w

  • month mo mon

  • quarter q qtr

  • year y yr

Visualisation des données de séries temporelles

Les visualisations chronologiques fonctionnent pour les requêtes présentant les caractéristiques suivantes :

  • La requête contient une ou plusieurs fonctions d'agrégation. Pour plus d'informations, consultez Aggregation Functions in the Stats Command.

  • La requête utilise la fonction bin() pour regrouper les données en un champ.

Ces requêtes peuvent produire des graphiques linéaires, des graphiques en aires empilées et des graphiques à barres et des graphiques circulaires.

Exemples

Pour un didacticiel complet, consultez Didacticiel : Exécuter une requête qui produit des séries temporelles.

Voici d'autres exemples de requêtes qui fonctionnent pour la visualisation chronologiques.

La requête suivante génère une visualisation des valeurs moyennes du champ myfield1, avec un point de données créé toutes les cinq minutes. Chaque point de données correspond à l'agrégation des moyennes des valeurs myfield1 des journaux des cinq minutes précédentes.

stats avg(myfield1) by bin(5m)

La requête suivante génère une visualisation des trois valeurs basées sur différents champs, avec un point de données créé toutes les cinq minutes. La visualisation est générée, car la requête contient des fonctions d'agrégation et utilise bin() comme champ de regroupement.

stats avg(myfield1), min(myfield2), max(myfield3) by bin(5m)

Restrictions pour les graphiques linéaires et les graphiques en aires empilées

Les requêtes qui regroupent les informations d'entrée de journal sans utiliser la fonction bin() peuvent générer des graphiques à barres. Toutefois, les requêtes ne peuvent pas générer de graphique linéaire ou de graphique en aires empilées. Pour plus d'informations sur ces types de requête, consultez Visualisation des données de journal regroupées par champs.

Visualisation des données de journal regroupées par champs

Vous pouvez produire des graphiques à barres pour les requêtes qui utilisent la fonction stats et une ou plusieurs fonctions d'agrégation. Pour plus d'informations, consultez Aggregation Functions in the Stats Command.

Pour afficher la visualisation, exécutez votre requête. Choisissez ensuite l'onglet Visualization (Visualisation), sélectionnez la flèche en regard de Line (Ligne), puis choisissez Bar (Barre). Les visualisations sont limitées à 100 barres dans le graphique à barres.

Exemples

Pour un didacticiel complet, consultez Didacticiel : Exécuter une requête qui génère une visualisation groupée par champs de journal. Les paragraphes suivants incluent d'autres exemples de requête pour la visualisation par champs.

La requête de journal de flux VPC suivante recherche le nombre moyen d'octets transférés par session pour chaque adresse de destination.

stats avg(bytes) by dstAddr

Vous pouvez également produire un graphique qui comprend plus d'une barre pour chaque valeur résultante. Par exemple, la requête de journal de flux VPC suivante recherche le nombre moyen et le nombre maximal d'octets transférés par session pour chaque adresse de destination.

stats avg(bytes), max(bytes) by dstAddr

La requête suivante recherche le nombre de journaux de requêtes Amazon Route 53 pour chaque type de requête.

stats count(*) by queryType

Utiliser plusieurs commandes stats dans une seule requête

Vous pouvez utiliser jusqu'à deux commandes stats dans une seule requête. Cela vous permet d'effectuer une agrégation supplémentaire sur la sortie de la première agrégation.

Exemple : requête avec deux commandes stats

Par exemple, la requête suivante trouve d'abord le volume de trafic total par tranches de 5 minutes, puis calcule le volume de trafic le plus élevé, le plus bas et le volume de trafic moyen parmi ces tranches de 5 minutes.

FIELDS strlen(@message) AS message_length | STATS sum(message_length)/1024/1024 as logs_mb BY bin(5m) | STATS max(logs_mb) AS peak_ingest_mb, min(logs_mb) AS min_ingest_mb, avg(logs_mb) AS avg_ingest_mb

Exemple : combiner plusieurs commandes stats avec d'autres fonctions telles que filter, fields, bin

Vous pouvez combiner deux commandes stats avec d'autres commandes, telles que filter et fields dans une seule requête. Par exemple, la requête suivante trouve le nombre d'adresses IP distinctes dans les sessions et le nombre de sessions par plateforme client, filtre ces adresses IP et enfin trouve la moyenne des demandes de session par plateforme client.

STATS count_distinct(client_ip) AS session_ips, count(*) AS requests BY session_id, client_platform | FILTER session_ips > 1 | STATS count(*) AS multiple_ip_sessions, sum(requests) / count(*) AS avg_session_requests BY client_platform

Vous pouvez utiliser les fonctions bin et dateceil dans des requêtes comportant plusieurs commandes stats. Par exemple, la requête suivante combine d'abord les messages en blocs de 5 minutes, puis agrège ces blocs de 5 minutes en blocs de 10 minutes et calcule les volumes de trafic les plus élevés, les plus bas et la moyenne dans chaque bloc de 10 minutes.

FIELDS strlen(@message) AS message_length | STATS sum(message_length) / 1024 / 1024 AS logs_mb BY BIN(5m) as @t | STATS max(logs_mb) AS peak_ingest_mb, min(logs_mb) AS min_ingest_mb, avg(logs_mb) AS avg_ingest_mb BY dateceil(@t, 10m)

Remarques et limitations

Une requête peut avoir un maximum de deux commandes stats. Ce quota ne peut pas être modifié.

Si vous utilisez une commande sort ou limit, elle doit apparaître après la deuxième commande stats. Si elle est antérieure à la deuxième commande stats, la requête n'est pas valide.

Lorsqu'une requête comporte deux commandes stats, les résultats partiels de la requête ne commencent pas à s'afficher tant que la première agrégation stats n'est pas terminée.

Dans la deuxième commande stats d'une seule requête, vous ne pouvez faire référence qu'aux champs définis dans la première commande stats. Par exemple, la requête suivante n'est pas valide, car le champ @message ne sera plus disponible après la première agrégation stats.

FIELDS @message | STATS SUM(Fault) by Operation # You can only reference `SUM(Fault)` or Operation at this point | STATS MAX(strlen(@message)) AS MaxMessageSize # Invalid reference to @message

Tous les champs auxquels vous faites référence après la première commande stats doivent être définis dans cette première commande stats.

STATS sum(x) as sum_x by y, z | STATS max(sum_x) as max_x by z # You can only reference `max(sum_x)`, max_x or z at this point
Important

La fonction bin utilise toujours implicitement le champ @timestamp. Cela signifie que vous ne pouvez pas utiliser bin dans la deuxième commande stats sans utiliser la première commande stats pour propager le champ timestamp. Par exemple, la requête suivante n'est pas valide.

FIELDS strlen(@message) AS message_length | STATS sum(message_length) AS ingested_bytes BY @logStream | STATS avg(ingested_bytes) BY bin(5m) # Invalid reference to @timestamp field

Définissez plutôt le champ @timestamp dans la première commande stats, puis utilisez-le avec dateceil dans la deuxième commande stats, comme dans l'exemple suivant.

FIELDS strlen(@message) AS message_length | STATS sum(message_length) AS ingested_bytes, max(@timestamp) as @t BY @logStream | STATS avg(ingested_bytes) BY dateceil(@t, 5m)

Fonctions à utiliser avec stats

CloudWatch Logs Insights prend en charge à la fois les fonctions d'agrégation des statistiques et les fonctions de non-agrégation des statistiques.

Utilisez des fonctions statistiques d'agrégation dans la commande stats et en tant qu'arguments pour d'autres fonctions.

Fonction Type de résultat Description

avg(fieldName: NumericLogField)

nombre

Moyenne des valeurs dans le champ spécifié.

count()

count(fieldName: LogField)

nombre

Compte les événements du journal. count()(ou count(*)) compte tous les événements renvoyés par la requête, tandis que count(fieldName) compte tous les enregistrements qui incluent le nom du champ spécifié.

count_distinct(fieldName: LogField)

nombre

Renvoie le nombre de valeurs uniques pour le champ. Si le champ a une cardinalité très élevée (contient de nombreuses valeurs uniques), la valeur renvoyée par count_distinct n'est qu'une approximation.

max(fieldName: LogField)

LogFieldValue

Valeur maximale des valeurs pour ce journal dans le champ interrogé.

min(fieldName: LogField)

LogFieldValue

Valeur minimale des valeurs pour ce journal dans le champ interrogé.

pct(fieldName: LogFieldValue, percent: number)

LogFieldValue

Un centile indique la position relative d'une valeur dans un ensemble de données. Par exemple, pct(@duration, 95) renvoie la valeur @duration à laquelle 95 % des valeurs de @duration sont inférieures à cette valeur et 5 % des valeurs lui sont supérieures.

stddev(fieldName: NumericLogField)

nombre

Déviation standard des valeurs dans le champ spécifié.

sum(fieldName: NumericLogField)

nombre

Somme des valeurs dans le champ spécifié.

Fonctions statiques de non-agrégation

Utilisez des fonctions de non-agrégation dans la commande stats et en tant qu'arguments d'autres fonctions.

Fonction Type de résultat Description

earliest(fieldName: LogField)

LogField

Renvoie la valeur de fieldName à partir de l'événement de journal qui a l'horodatage le plus récent dans les journaux interrogés.

latest(fieldName: LogField)

LogField

Renvoie la valeur de fieldName à partir de l'événement de journal qui a l'horodatage le plus ancien dans les journaux interrogés.

sortsFirst(fieldName: LogField)

LogField

Renvoie la valeur de fieldName triée la première dans les journaux interrogés.

sortsLast(fieldName: LogField)

LogField

Renvoie la valeur de fieldName triée la dernière dans les journaux interrogés.