eventstats

Utilisez la commande eventstats pour obtenir des statistiques récapitulatives globales, éventuellement regroupées par champ, sur les propriétés des groupes identifiés par une commande de regroupement telle que stats, link ou timestats. La sortie inclut un champ pour chaque agrégation.

Syntaxe

Remarque

L'opérateur d'agrégation trend n'est pas autorisé avec eventstats.
eventstats <stats_function> (<field_name>) [as <new_field_name>] [, <stats_function> (<field_name>) [as <new_field_name>]]* [by <field_name> [, <field_name>]*]

Paramètres

Le tableau suivant répertorie les paramètres utilisés avec cette commande, ainsi que leur description.

Paramètre Description

field_name

Utilisez ce paramètre pour spécifier le champ selon lequel regrouper les résultats.

new_field_name

Utilisez ce paramètre pour indiquer le nouveau nom du champ après application de la commande stats.

Pour les fonctions prises en charge, reportez-vous à Fonctions, à Fonctions positionnelles et à Fonctions d'analyse des séries temporelles.

Fonctions

Le tableau suivant répertorie les fonctions disponibles avec cette commande, accompagnées d'exemples.

Fonction Exemples

Valeurs

Répertorie les 10 premières valeurs d'un champ donné avec délimiteur facultatif. S'applique à tout type de données de champ.

values(field_name)

  • values(Label)

  • values(Severity)

  • values(‘Client Host City’)

  • values(‘Client Host Country’)

  • values(‘Client Host Continent’)

Uniques

Répertorie les 10 premières valeurs uniques d'un champ donné avec délimiteur facultatif. S'applique à tout type de données de champ.

unique(field_name)

  • unique(Label)

  • unique(Severity)

  • unique(‘Client Host City’)

  • unique(‘Client Host Country’)

  • unique(‘Client Host Continent’)

Le plus ancien

Renvoie la valeur non NULL la plus ancienne du champ spécifié. Une valeur NULL est renvoyée si le champ est complètement vide pour les résultats d'une requête particulière.

earliest(field_name)

  • earliest(‘OS Process ID’)

Le plus récent

Renvoie la valeur non NULL la plus récente du champ spécifié. Une valeur NULL est renvoyée si le champ est complètement vide pour les résultats d'une requête particulière.

latest(field_name)

  • latest(‘Error ID’)

Moyenne

Remarque : cette fonction est prise en charge uniquement pour les champs numériques.

avg(field_name)

  • avg(‘Content Size’)

Nombre

Remarque : cette fonction utilise une sémantique semblable à sql, c'est-à-dire que count renvoie le nombre pour toutes les lignes. Cependant, count(field) renvoie le nombre pour toutes les lignes sur lesquelles le champ n'est pas NULL.

count(field_name)

  • count(Source)

Nombre distinct

distinctcount(field_name)

  • distinctcount(Severity)

Valeur maximale

Remarque : cette fonction est prise en charge uniquement pour les champs numériques.

max(field_name)

  • max('Content Size')

Médiane

Remarque : cette fonction est prise en charge uniquement pour les champs numériques.

median(field_name)

  • median('Content Size')

Valeur minimale

Remarque : cette fonction est prise en charge uniquement pour les champs numériques.

min(field_name)

  • min('Content Size')

Pourcentage

Remarque : cette fonction est prise en charge uniquement pour les champs numériques.

pct(field_name, n)

  • pct('Content Size', 90)

Somme

Remarque : cette fonction est prise en charge uniquement pour les champs numériques.

sum(field_name)

  • sum(‘Content Size’)

Ecart type

Remarque : cette fonction est prise en charge uniquement pour les champs numériques.

stddev(field_name)

  • stddev(‘Content Size’)

Si NULL

Modifie la valeur si elle est NULL.

Remarque : cette fonction concerne uniquement les statistiques d'événement, les statistiques géographiques, les statistiques et les statistiques temporelles (et non après le lien).

ifnull(stats_function(field_name), return value)

  • ifnull(avg('Content Size)', 0)

  • ifnull(latest(message), none)

Fonctions positionnelles

Le tableau suivant répertorie les fonctions propres à cette commande, accompagnées d'exemples.

Fonction Exemples

first

Extrait la valeur de propriété de la première ligne, telle que définie par l'ordre de tri en cours, dans le résultat extrait.

Syntaxe : first(field_name)

  • | eventstats first('Content Size')

last

Extrait la valeur de propriété de la dernière ligne, telle que définie par l'ordre de tri en cours, dans le résultat extrait.

Syntaxe : last(field_name)

  • | eventstats last('Content Size')

nthval

Extrait la valeur de propriété de la nième ligne, telle que définie par l'ordre de tri en cours, dans le résultat extrait.

Syntaxe : nthval(field_name, n)

  • | eventstats nthval('Content Size', 2)

lag

Extrait la valeur de propriété d'une ligne selon un décalage donné avant la ligne en cours. Le décalage par défaut est de 1.

Syntaxe : lag(field_name)

  • | eventstats lag('Content Size')

lead

Extrait la valeur de propriété d'une ligne selon un décalage donné après la ligne en cours. Le décalage par défaut est de 1.

Syntaxe : lead(field_name)

  • | eventstats lead('Content Size')

rownum

Affecte un numéro unique de manière séquentielle, à partir de 1, tel que défini par l'ordre de tri en cours à chaque ligne du résultat extrait.

Syntaxe : rownum

  • | eventstats rownum

Fonctions d'analyse des séries temporelles

Le tableau suivant répertorie les fonctions d'analyse de séries temporelles, accompagnées d'exemples.

Fonction Exemples

peak

Extrait la valeur de propriété représentant la valeur maximale dans le résultat extrait. Plus cette valeur est élevée, plus les valeurs absolues sont importantes.

Syntaxe : peak

  • | eventstats peak('Content Size')

peakscore

Extrait la valeur de propriété avec un score maximal normalisé compris entre 0 et 1 dans le résultat extrait. Le score peut être utilisé pour comparer les valeurs maximales, la valeur la plus élevée obtenant un score de 1, et toutes les autres valeurs un score compris entre 0 et 1.

Syntaxe : peakscore

  • | eventstats peakscore('Content Size')

valley

Extrait la valeur de propriété représentant la valeur minimale dans le résultat extrait. Plus cette valeur est basse, plus les valeurs absolues sont faibles.

Syntaxe : valley

  • | eventstats valley('Content Size')

valleyscore

Extrait la valeur de propriété avec un score minimal normalisé compris entre 0 et 1 dans le résultat extrait. Le score peut être utilisé pour comparer les valeurs minimales, la valeur la plus basse obtenant un score de 0, et toutes les autres valeurs un score compris entre 0 et 1.

Syntaxe : valleyscore

  • | eventstats valleyscore('Content Size')

Utilisez les fonctions peak et peakscore pour analyser les données séquentielles dans la visualisation de lien et obtenir la valeur maximale et le score maximal compris entre 0 et 1. Par exemple, la requête suivante met en évidence les temps de réponse utilisateur maximaux, à l'aide du champ Duration de la source de journal Access Logs :

'Log Source' = 'OCI API Gateway Access Logs' 
| link span = 5minute Time, Server 
| stats avg(Duration) as 'Avg. Duration' 
| sort Server, 'Start Time' 
| eventstats peak('Avg. Duration')      as 'Peak Magnitude', 
             peakscore('Avg. Duration') as 'Peak Score' by Server 
| highlightgroups priority = high 
  [ * | where 'Peak Score' > 0.9 ] as 'High Response Time - Needs Attention'

Fonctions peak et peakscore pour analyser les données séquentielles dans la visualisation de lien

Cette fonctionnalité peut être utilisée pour rechercher et regrouper des données de séries temporelles, par exemple pour identifier tous les événements de mémoire saturée survenus après un pic. Plus la valeur maximale est élevée, plus les valeurs absolues sont importantes. Le score peut être utilisé pour comparer les valeurs maximales, la valeur la plus élevée obtenant un score de 1, et les autres valeurs un score compris entre 0 et 1.

Pour obtenir des exemples d'utilisation de la commande eventstats dans des scénarios standard, reportez-vous aux sections suivantes :

Regroupez tous les journaux dont la gravité est Fatal par transaction, et obtenez le temps moyen écoulé global pour tous les groupes :

severity = fatal | link 'Transaction ID' | stats avg('Elapsed Time (System)') as 'Average Elapsed Time' | eventstats avg('Average Elapsed Time') as 'Overall Average Elapsed Time'
severity = fatal | stats avg('Elapsed Time (system)') as 'Average Elapsed Time' | eventstats avg('Average elapsed time') as 'Overall Average elapsed time'

Regroupez tous les journaux dont la gravité est Fatal par type d'entité et par transaction, et obtenez le temps moyen écoulé global pour tous les groupes avec le même type d'entité :

severity = fatal | link 'Entity Type', 'Transaction ID' | stats avg('Elapsed Time (System)') as 'Average Elapsed Time' | eventstats avg('Average Elapsed Time') as 'Overall Average Elapsed Time' by 'Entity Type'
severity = fatal | stats avg('Elapsed Time (System)') as 'Average Elapsed Time' by 'Entity Type', 'Transaction ID'  | eventstats avg('Average Elapsed Time') as 'Overall Average Elapsed Time' by 'Entity Type'

Dans la visualisation de lien, ajoutez un numéro à chaque ligne :

'Log Source' = 'Database Alert Logs' and Label != null and Entity = MyDB 
| rename Entity as Database
| link span = 1minute Time, Database, Label
| sort Database, 'Start Time'
| eventstats rownum as 'Row Number' by Database

Identifiez le dernier événement à l'aide du numéro de ligne :

'Log Source' = 'Database Alert Logs' and Label != null and Entity = MyDB
| rename Entity as Database
| link span = 1minute Time, Database, Label
| sort Database, 'Start Time'
| eventstats rownum as 'Row Number' by Database
| addfields
   [ * | where Label = 'Abnormal Termination'
       | eventstats last('Row Number') as 'Crash Row'
   ]

Identifiez les événements précédent et suivant pour l'événement sélectionné :

'Log Source' = 'Database Alert Logs' and Label != null and Entity = MyDB
| rename Entity as Database
| link span = 1minute Time, Database, Label
| sort Database, 'Start Time'
| addfields
   [ *
      | where Label != null
      | eventstats lag(Label) as 'Previous Event',
                   lead(Label) as 'Next Event'
   ]