This is a translation of the original English documentation page. Help us make it better.

1 Fonctions de macro

Aperçu

Les fonctions de macro offrent la possibilité de personnaliser les valeurs de macro.

Parfois, une macro peut se résoudre en une valeur avec laquelle il n'est pas nécessairement facile de travailler. Elle peut être longue ou contenir une sous-chaîne spécifique d'intérêt que vous souhaitez extraire. C'est là que les fonctions de macro peuvent être utiles.

La syntaxe d'une fonction macro est :

{<macro>.<func>(<params>)}

où :

  • <macro> - la macro à personnaliser (par exemple {ITEM.VALUE} ou {#LLDMACRO})
  • <func> - la fonction à appliquer
  • <params> - une liste de paramètres de fonction séparés par des virgules. Les paramètres doivent être entre guillemets s'ils commencent par '' '' (espace), " ou contiennent ), ,.

Par exemple :

{{TIME}.fmttime(format,time_shift)}
       {{ITEM.VALUE}.regsub(pattern, output)}
       {{#LLDMACRO}.regsub(pattern, output)}

Fonctions de macro prises en charge

FONCTION
Description Paramètres Pris en charge pour
fmtnum (<digits>)
Formatage des nombres pour contrôler le nombre de chiffres imprimés après la virgule décimale. digits - le nombre de chiffres après la virgule décimale. Aucun zéro de fin ne sera produit. {ITEM.VALUE}
{ITEM.LASTVALUE}
Macros d'expression
fmttime (<format>,<time_shift>)
Time formatting. format - chaîne de format obligatoire, compatible avec le formatage de la fonction strftime
time_shift - le décalage temporel appliqué à l'heure avant formatage ; devrait commencer par
-<N><time_unit> ou +<N><time_unit>, où
N - le nombre d'unités de temps à ajouter ou à soustraire ;
time_unit - h (heure), d (jour), w (semaine), M (mois) or y (année).
Depuis Zabbix 5.4, le paramètre time_shift prend en charge les opérations temporelles en plusieurs étapes et peut inclure /<time_unit> pour passer au début de l'unité de temps (/d - minuit, /w - 1er jour de la semaine (lundi), /M - 1er jour du mois, etc.). Exemples :
-1w - exactement 7 jours en arrière ;
-1w/w - Lundi de la semaine précédente ;
-1w/w+1d - Mardi de la semaine précédente.
Notez que les opérations temporelles sont calculées de gauche à droite sans priorités. Par exemple, -1M/d+1h/w sera analysé comme ((-1M/d)+1h)/w.
{TIME}
iregsub (<pattern>,<output>)
Extraction de sous-chaîne par une correspondance d'expression régulière (insensible à la casse). pattern - l'expression régulière qui correspond
output - les options de sortie. \1 - \9 les espaces réservés sont pris en charge pour capturer des groupes. \0 renvoie le texte correspondant.
{ITEM.VALUE}
{ITEM.LASTVALUE}
Macros de découverte de bas niveau (sauf dans le filtre de règle de découverte de bas niveau)
regsub (<pattern>,<output>)
Extraction de sous-chaîne par une correspondance d'expression régulière (sensible à la casse). pattern - l'expression régulière qui correspond
output - les options de sortie. \1 - \9 les espaces réservés sont pris en charge pour capturer des groupes. \0 renvoie le texte correspondant.
{ITEM.VALUE}
{ITEM.LASTVALUE}
Macros de découverte de bas niveau (sauf dans le filtre de règle de découverte de bas niveau)

Si une fonction est utilisée dans un emplacement pris en charge, mais appliquée à une macro ne prenant pas en charge les fonctions de macro, la macro est alors évaluée à 'INCONNU'.

Si pattern n'est pas une expression régulière correcte, la macro est évaluée à 'INCONNU' (à l'exception des macros de découverte de bas niveau où la fonction sera ignorée dans ce cas et la macro restera non développée)

Si une fonction de macro est appliquée à la macro dans des emplacements ne prenant pas en charge les fonctions de macro, la fonction est ignorée.

Exemples

Les façons dont les fonctions de macro peuvent être utilisées pour personnaliser les valeurs de macro sont illustrées dans les exemples suivants sur les valeurs reçues :

Valeur reçue Macro Sortie
24.3413523 {{ITEM.VALUE}.fmtnum(2)} 24.34
24.3413523 {{ITEM.VALUE}.fmtnum(0)} 24
12:36:01 {{TIME}.fmttime(%B)} October
12:36:01 {{TIME}.fmttime(%d %B,-1M/M)} 1 September
123Log line {{ITEM.VALUE}.regsub(^[0-9]+, Problem)} Problem
123 Log line {{ITEM.VALUE}.regsub("^([0-9]+)", "Problem")} Problem
123 Log line {{ITEM.VALUE}.regsub("^([0-9]+)", Problem ID: \1)} Problem ID: 123
Log line {{ITEM.VALUE}.regsub(".*", "Problem ID: \1")} ''Problem ID: ''
MySQL crashed errno 123 {{ITEM.VALUE}.regsub("^(\w+).*?([0-9]+)", " Problem ID: \1_\2 ")} '' Problem ID: MySQL_123 ''
123 Log line {{ITEM.VALUE}.regsub("([1-9]+", "Problem ID: \1")} *UNKNOWN* (invalid regular expression)
customername_1 {{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)} customername
customername_1 {{#IFALIAS}.regsub("(.*)_([0-9]+)", \2)} 1
customername_1 {{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} {{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} (invalid regular expression)
customername_1 {$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}"} {$MACRO:"customername"}
customername_1 {$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \2)}"} {$MACRO:"1"}
customername_1 {$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+\", \1)}"} {$MACRO:"{{#M}.regsub(\"(.*)_([0-9]+\", \1)}"} (invalid regular expression)
customername_1 "{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \1)}\"}" "{$MACRO:\"customername\"}"
customername_1 "{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \2)}\"}" "{$MACRO:\"1\"}")
customername_1 "{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}" "{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}") (invalid regular expression)
Affichage des valeurs complètes des éléments

Les valeurs longues des macros {ITEM.VALUE} et {ITEM.LASTVALUE} résolues sont tronquées à 20 caractères. Pour voir les valeurs complètes de ces macros, vous pouvez utiliser des fonctions de macro, par exemple :

{{ITEM.VALUE}.regsub("(.*)", \1)}
{{ITEM.LASTVALUE}.regsub("(.*)", \1)}