Présentation
La formule (ou expression) définit la valeur du champ calculé pour chaque événement de log. Vous pouvez référencer des attributs de log, d’autres champs calculés, ainsi que des fonctions et opérateurs pris en charge. Lorsque vous rédigez ou modifiez une formule, l’éditeur suggère automatiquement les champs, fonctions et opérateurs pertinents.
Syntaxe de base et constructions linguistiques
| Construction | Syntaxe et notation |
|---|
Attribut ou tag réservé nommé tag | tag (aucun préfixe requis) Pour les tags contenant des tirets, échappez-les avec une barre oblique inverse. Exemple : ci\-job\-id |
Attribut nommé attr | @attr (utilisez un préfixe @) |
Champ calculé nommé field | #field (utilisez un préfixe #) |
Littéral de chaîne (guillemet) Par exemple, text ou Quoted "text". | "text"
"Quoted \"text\"" (La syntaxe de recherche de Log s’applique) |
Littéral numérique (nombre) Par exemple, ten. | 10 |
Fonction nommée func avec les paramètres x et y | func(x, y) |
Opérateur Par exemple, un opérateur binaire * avec les opérandes x et y. | x*y |
Opérateurs
Les opérateurs disponibles par ordre de préséance :
| Opérateur | Description |
|---|
() | Un regroupement ou un appel de fonction |
!, NOT, - | Une négation logique ou arithmétique |
^, % | Exponentiation, modulo |
*, / | Multiplication, division |
+, - | Addition, soustraction |
<, <=, >, >= | Inférieur à, inférieur ou égal à, supérieur à, supérieur ou égal à |
==, != | Correspond, ne correspond pas |
&&, AND | AND logique |
||, OR | OU logique |
Fonctions
Les fonctions disponibles sont classées comme suit :
Arithmétique
abs(valeur num)
Renvoie la valeur absolue d’un nombre.
| Exemple | Formule | Résultat |
|---|
Un événement de log possède les attributs suivants : - @client_latency = 2 - @server_latency = 3 | #discrepancy = abs(@client_latency - @server_latency) | #discrepancy = 1 |
ceil(valeur num)
Arrondit le nombre à l’entier supérieur le plus proche.
| Exemple | Formule | Résultat |
|---|
Un événement de log possède l’attribut suivant :
@value = 2,2 | #rounded_up = ceil(@value) | #rounded_up = 3 |
floor(valeur num)
Arrondit un nombre à l’entier inférieur le plus proche.
| Exemple | Formule | Résultat |
|---|
Un événement de log possède l’attribut suivant :
@value = 9,99 | #rounded_down = floor(@value) | #rounded_down = 9 |
max(valeur num, [ valeur num, …])
Trouve la valeur maximale parmi un ensemble de nombres.
| Exemple | Formule | Résultat |
|---|
Un événement de log possède l’attribut suivant :
@CPU_temperatures = [-1, 1, 5, 5] | #highest_temp = max(@CPU_temperatures) | #highest_temp = 5 |
min(valeur num, [valeur num, …])
Trouve la valeur minimale parmi un ensemble de nombres.
| Exemple | Formule | Résultat |
|---|
Un événement de log possède l’attribut suivant :
@CPU_temperatures = [-1, 1, 5, 5] | #lowest_temp = min(@CPU_temperatures) | #lowest_temp = -1 |
round(valeur num, précision int)
Arrondit un nombre. Définissez éventuellement le nombre de décimales à conserver.
| Exemple | Formule | Résultat |
|---|
Un événement de log possède l’attribut suivant :
@value = -1234,01 | #rounded_to_tens = round(@value, -1) | #rounded_to_tens = -1230 |
Chaîne
concat(chaîne str [chaîne str, valeur expr, …])
Combine plusieurs valeurs en une seule chaîne.
| Exemple | Formule | Résultat |
|---|
Un événement de log possède les attributs suivants : - @city = « Paris » - @country = « France » | #region = concat(@city, ", ", @country) | #region = « Paris, France » |
lower(chaîne str)
Convertit une chaîne en minuscules.
| Exemple | Formule | Résultat |
|---|
Un événement de log possède l’attribut suivant :
@first_name = « Bob » | #lower_name = lower(@first_name) | #lower_name = « bob » |
left(chaîne str, nb_caractères int)
Extrait une partie du texte depuis le début d’une chaîne.
| Exemple | Formule | Résultat |
|---|
Un événement de log possède l’attribut suivant :
@price = “USD10.50” | #currency = left(@price, 3) | #currency = “USD” |
proper(chaîne str)
Convertit la chaîne en casse appropriée.
| Exemple | Formule | Résultat |
|---|
Un événement de log possède l’attribut suivant :
@address = « 123 main st » | #formatted_address = proper(@address) | #formatted_address = « 123 Main St » |
split_before(chaîne str, séparateur str, occurrence int)
Extrait la partie du texte précédant un certain motif dans une chaîne.
| Exemple | Formule | Résultat |
|---|
Un événement de log possède l'attribut suivant :
@url = \"www.example.com/path/to/split\" | #url_extraction = split_before(@url, "/", 1) | #url_extraction = \"www.example.com/path\" |
#url_extraction = split_before(@url, "/", 2) | #url_extraction = \"www.example.com/path/to\" |
split_after(chaîne str, séparateur str, occurrence int)
Extrait la partie du texte suivant un certain motif dans une chaîne.
| Exemple | Formule | Résultat |
|---|
Un événement de log possède l'attribut suivant :
@url = \"www.example.com/path/to/split\" | #url_extraction = split_after(@url, "/", 0) | #url_extraction = \"path/to/split\" |
#url_extraction = split_after(@url, "/", 1) | #url_extraction = \"to/split\" |
substring(chaîne str, début int, longueur int)
Extrait une partie de texte du milieu d’une chaîne.
| Exemple | Formule | Résultat |
|---|
Un événement de log possède l’attribut suivant :
@price = « USD10.50 » | #dollar_value = substring(@price, 2, 2) | #dollar_value = « 10 » |
right(chaîne str, nb_caractères int)
Extrait une partie de texte de la fin d’une chaîne.
| Exemple | Formule | Résultat |
|---|
Un événement de log possède l’attribut suivant :
@price = « USD10.50 » | #cent_value = right(@price, 2) | #cent_value = « 50 » |
textjoin(délimiteur str, ignorer_vide bool, chaîne str [chaîne str, valeur expr, …])
Combine plusieurs valeurs en une seule chaîne avec un délimiteur entre elles.
| Exemple | Formule | Résultat |
|---|
Un événement de log possède les attributs suivants : - @city = « Paris » - @country = « France » | #region = textjoin(", ", "false", @city, @country) | #region = « Paris, France » |
upper(chaîne str)
Convertit la chaîne de caractères en majuscules.
| Exemple | Formule | Résultat |
|---|
Un événement de log possède l’attribut suivant : @first_name = "Bob" | #upper_name = upper(@first_name) | #upper_name = "BOB" |
Logique
if(condition expr, si_vrai expr, si_faux expr)
Évalue une condition et renvoie une valeur en conséquence.
| Exemple | Formule | Résultat |
|---|
Un événement de log possède les attributs suivants : - @location = "Paris, France" - @home = "New York, USA" | #abroad = if(@location == @home, "false", "true") | #abroad = "true" |
is_null(valeur expr)
Vérifie si un attribut ou une expression est nul.
| Exemple | Formule | Résultat |
|---|
Un événement de log possède les attributs suivants : - @users_online = 5 - @max_capacity = 0 | is_null(@users_online / @max_capacity) | "true" |
Regex
Les fonctions Regex correspondent ou transforment une valeur à l’aide d’une expression régulière (regex). Les motifs prennent en charge les mêmes constructions regex que regex extraction, telles que les littéraux, les classes de caractères et les quantificateurs. Les mêmes conseils sur le pattern performance s’appliquent. Contrairement à l’extraction, les groupes de capture dans les modèles de formule n’ont pas besoin de nom.
Les arguments de formule sont des chaînes littérales entre guillemets doubles, donc une barre oblique inverse littérale doit être écrite sous la forme de deux barres obliques inverses. Par exemple, pour faire correspondre la classe abrégée de chiffres, écrivez "\\d" dans le modèle. La même règle s'applique à la chaîne de remplacement : pour insérer un signe dollar littéral plutôt qu'une référence de groupe, écrivez "\\$".
regexp_like(valeur str, motif str)
Renvoie true si le motif correspond n’importe où dans la valeur, et false sinon.
| Exemple | Formule | Résultat |
|---|
Un événement de log possède l’attribut suivant :
message = “connection timeout after 30s” | #is_timeout = regexp_like(message, "timeout|deadline exceeded") | #is_timeout = “true” |
regexp_replace(entrée str, motif str, remplacement str, [début int, N int])
Renvoie input avec le texte correspondant remplacé. Utilisez $1 à $9 dans replacement pour insérer la correspondance d’un groupe de capture, ou ${name} pour un groupe nommé.
| Argument | Signification |
|---|
input | Le texte à transformer |
pattern | Le motif regex devant correspondre |
replacement | Le motif de transformation regex, utilisant souvent des groupes de capture |
start | Optionnel. L’indice du caractère (en base zéro) à partir duquel commencer la recherche de correspondance. Par défaut à 0 |
N | Optionnel. Le nombre maximal de correspondances à remplacer. Par défaut à 1. 0 remplace chaque correspondance |
| Exemple | Formule | Résultat |
|---|
Un événement de log possède l’attribut suivant :
@path = "/api/v1/orders" | #resource = regexp_replace(@path, "^/api/v[0-9]+/(.*)$", "$1") | #resource = "orders" |
Pour aller plus loin
Documentation, liens et articles supplémentaires utiles: