TIPS & TRICKS

T’es IN ? | Rechercher plusieurs valeurs de champ

Il est maintenant plus facile de rechercher différentes valeurs dans le même champ. Merci Splunk !

Par exemple, imaginez que, dans le champ « error_code », vous voulez localiser uniquement les codes 400, 402, 404 et 406.

Il peut être très fastidieux de saisir chaque paire champ-valeur successivement pour rechercher une simple liste de valeurs dans le même champ. Mais c’est exactement ce qu’il fallait faire avant la version 6.6.0. Il fallait spécifier chaque paire champ-valeur sous la forme d’une condition OR distincte. 

    ...error_code=400 OR error_code=402 OR error_code=404 OR error_code=406...

Utiliser IN dans la commande de recherche

L’une des meilleures améliorations apportées à la commande search est l’opérateur IN.  Avec l’opérateur IN, vous pouvez indiquer un champ et une liste de valeurs. Par exemple :

    ... error_code IN (400, 402, 404, 406) | ...

Comme la commande search est implicite au début de chaque chaîne de recherche, il vous suffit de spécifier le nom du champ et une liste de valeurs. La syntaxe est simple :

    champ IN (value1, value2, ...)

Remarque : l’opérateur IN doit être saisi en majuscules.  Vous pouvez également utiliser un caractère générique dans la liste de valeurs pour rechercher des valeurs similaires. Par exemple :

    ... error_code IN (40*) | ...

Cette recherche examine le champ error_code de vos événements et renvoie tous les événements contenant un code commençant par 40.

Plutôt sympa, non ?

Avec la commande search, cette fonctionnalité est appelée « opérateur IN ». Avec les commandes eval et where, c’est la « fonction IN ».

Utilisation de IN dans les commandes eval et where

Pour utiliser IN dans les commandes eval et where, vous devez utiliser IN comme fonction d’eval. La documentation Splunk l’appelle la « fonction IN ».

Et la syntaxe et l’utilisation sont légèrement différentes qu’avec la commande search.

  • La fonction IN renvoie TRUE si l’une des valeurs de la liste correspond à une valeur du champ que vous spécifiez.
  • Les valeurs en chaîne doivent être encadrées par des guillemets.
  • Vous ne pouvez spécifier de caractère générique pour rechercher des valeurs similaires, comme les codes d’erreur HTTP ou des plages d’adresses IP CIDR.

Voici les options de syntaxe prises en charge :

    ...| eval new_field=if(IN(field,"value1","value2", ...), "value_if_true","value_if_false")
    ...| where field IN("value1","value2", ...)
    ...| where IN(field,"value1","value2", ...)

Remarque : contrairement à l’opérateur IN, la fonction IN peut être saisie en majuscules ou en minuscules. La fonction IN est saisie en majuscules dans cet article, dans la syntaxe et dans les exemples à des fins de clarté.

Commençons par la commande where parce qu’elle est assez simple.

L’exemple suivant utilise la commande where pour renvoyer IN=TRUE si l’une des valeurs du champ status correspond à l’une des valeurs de la liste. Les valeurs du champ status sont des codes de statut HTTP. Comme les codes sont des valeurs de type chaîne (et non des valeurs numériques), vous devez encadrer chaque valeur par des guillemets.

    ... | where status IN("400", "401", "403", "404", "406")

Vous pouvez également spécifier cet exemple comme suit :

    ... | where IN(status,"400", "401", "403", "404", "406")

L’utilisation de la fonction IN avec la commande eval est différente de celle de la commande where. La commande eval ne peut pas accepter les valeurs booléennes, et vous devez donc utiliser la fonction IN dans une autre fonction capable de traiter les valeurs booléennes renvoyées par la fonction IN.

Examinons un exemple où vous allez utiliser la fonction IN comme premier paramètre de la fonction IF. Nous allons utiliser le fichier access.log inclus dans les données du tutoriel de recherche.

Dans l’exemple suivant, la fonction IN est utilisée avec la fonction IF pour évaluer le champ action. Ensuite, la commande stats effectue un calcul.

    sourcetype=access_combined_wcookie 
    | eval activity=if(IN(action, "addtocart","purchase"),"Lié à un achat","Autre") 
    | stats count by activity

Voici ce que fait la recherche :

  • La commande eval crée un nouveau champ appelé activity.
  • Si le champ action contient la valeur addtocart ou purchase, la valeur Purchase Related (Lié à un achat) est placée dans le champ activity.
  • Si le champ action contient toute autre valeur, la valeur Other (Autre) est placée dans le champ activity.
  • La commande stats compte les valeurs Purchase Related ou Other dans le champ activity.

Les résultats apparaissent dans l’onglet Statistics et indiquent le nombre d’événements contenant une activité liée à un achat ou un autre type d'activité.

Ce tableau de résultats est très pratique. Vous pouvez également présenter les résultats sous forme graphique. Passez à l’onglet Visualization et choisissez le type de graphique « Graphique circulaire ».

Vous pouvez ensuite enregistrer cette recherche sous la forme d'un panneau du tableau de bord ou d'un rapport.  


Ressources

Consultez la documentation Splunk suivante pour plus d’informations :

*Cet article est une traduction de celui initialement publié sur le blog Splunk anglais.

Splunk
Posted by

Splunk