10 Expressions régulières

Aperçu

Perl Compatible Regular Expressions (PCRE, PCRE2) sont pris en charge dans Zabbix.

Il existe deux manières d'utiliser les expressions régulières dans Zabbix :

  • saisie manuelle d'une expression régulière
  • en utilisant une expression régulière globale créée dans Zabbix

Expressions régulières

Vous pouvez saisir manuellement une expression régulière dans les emplacements pris en charge. Notez que l'expression ne peut pas commencer par @, car ce symbole est utilisé dans Zabbix pour faire référence aux expressions régulières globales.

Il est possible d'épuiser la pile lors de l'utilisation d'expressions régulières. Consultez la page de manuel pcrestack pour plus d'informations.

Notez qu'en correspondance multiligne, les ancres ^ et $ correspondent respectivement au début/à la fin de chaque ligne, au lieu du début/de la fin de la chaîne entière.

Voir aussi des exemples d'échappement correct dans différents contextes.

Expressions régulières globales

Il existe un éditeur avancé pour créer et tester des expressions régulières complexes dans l'interface Zabbix.

Une fois qu'une expression régulière a été créée de cette façon, elle peut être utilisée à plusieurs endroits dans le frontend en se référant à son nom, préfixé par @, par exemple, \@mycustomregexp.

Pour créer une expression régulière globale :

  • Allez dans : Administration → Général
  • Sélectionnez Expressions régulières dans le menu déroulant
  • Cliquez sur Nouvelle expression régulière

L'onglet Expressions permet de définir le nom de l'expression régulière et d'ajouter des sous-expressions.

Tous les champs de saisie obligatoires sont marqués d'un astérisque rouge.

Paramètre Description
Nom Définissez le nom de l'expression régulière. Tous les caractères Unicode sont autorisés.
Expressions Cliquez sur Ajouter dans le bloc Expressions pour ajouter une nouvelle sous-expression.
Type d'expression Sélectionnez le type d'expression :
Chaîne de caractères incluse - correspond à la sous-chaîne
Toute chaîne de caractères incluse - correspond à toutes les sous-chaînes d'une liste délimitée. La liste délimitée comprend une virgule (,), un point (.) ou une barre oblique (/).
Chaîne de caractères non incluse - correspond à n'importe quelle chaîne sauf la sous-chaîne
Le résultat est VRAI - correspond à l'expression régulière
Le résultat est FAUX - ne correspond pas à l'expression régulière
Expression Saisissez une sous-chaîne/expression régulière.
Délimiteur Une virgule (,), un point (.) ou une barre oblique (/) pour séparer les chaînes de texte dans une expression régulière. Ce paramètre n'est actif que lorsque le type d'expression "Toute chaîne de caractères incluse" est sélectionné.
Sensible à la casse Une case à cocher pour spécifier si une expression régulière est sensible à la casse des lettres.

Une barre oblique (/) dans l'expression est traitée littéralement, plutôt qu'un délimiteur. De cette façon, il est possible d'enregistrer des expressions contenant une barre oblique, sans erreur.

Un nom d'expression régulière personnalisé dans Zabbix peut contenir des virgules, des espaces, etc. Dans les cas où cela peut conduire à une mauvaise interprétation lors du référencement (par exemple, une virgule dans le paramètre d'une clé d'élément), la référence entière peut être mise entre guillemets comme ceci : "\@My custom regexp for purpose1, purpose2".
Les noms d'expressions régulières ne doivent pas être entre guillemets dans d'autres emplacements (par exemple, dans les propriétés de règle LLD).

Dans l'onglet Test, l'expression régulière et ses sous-expressions peuvent être testées en fournissant une chaîne de test.

Les résultats affichent l'état de chaque sous-expression et l'état total de l'expression personnalisée.

L'état total de l'expression personnalisée est défini comme Résultat combiné. Si plusieurs sous-expressions sont définies, Zabbix utilise l'opérateur logique ET pour calculer le résultat combiné. Cela signifie que si au moins un résultat est Faux, Résultat combiné a également le statut Faux.

Expressions régulières globales par défaut

Zabbix est livré avec plusieurs expressions régulières globales dans son jeu de données par défaut.

Nom Expression Correspondances
Systèmes de fichiers pour la découverte ^(btrfs|ext2|ext3|ext4|jfs|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|refs|apfs|ntfs|fat32|zfs)$ "btrfs" ou "ext2" ou "ext3" ou "ext4" ou "jfs" ou "reiser" ou "xfs" ou "ffs" ou "ufs" ou "jfs" ou "jfs2" ou "vxfs" ou "hfs" ou "refs" ou "apfs" ou "ntfs" ou "fat32" ou "zfs"
Interfaces réseau pour la découverte ^Software Loopback Interface Chaînes commençant par "Software Loopback Interface".
^lo$ "lo"
^(In)?[Ll]oop[Bb]ack[0-9._]*$ Chaînes commençant éventuellement par "In", puis contenant "L" ou "l", puis "oop", puis "B" ou "b", puis "ack", éventuellement suivi de n’importe quel nombre de chiffres, de points ou de traits de soulignement.
^NULL[0-9.]*$ Chaînes commençant par "NULL", éventuellement suivies de n’importe quel nombre de chiffres ou de points.
^[Ll]o[0-9.]*$ Chaînes commençant par "Lo" ou "lo", éventuellement suivies de n’importe quel nombre de chiffres ou de points.
^[Ss]ystem$ "System" ou "system"
^Nu[0-9.]*$ Chaînes commençant par "Nu", éventuellement suivies de n’importe quel nombre de chiffres ou de points.
Périphériques de stockage pour la découverte SNMP ^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$ "Physical memory" ou "Virtual memory" ou "Memory buffers" ou "Cached memory" ou "Swap space"
Noms des services Windows pour la découverte ^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$ "MMCSS" ou "gupdate" ou "SysmonLog" ou des chaînes comme "clr_optimization_v2.0.50727_32" et "clr_optimization_v4.0.30319_32", où à la place des points, vous pouvez mettre n’importe quel caractère sauf un saut de ligne.
États de démarrage des services Windows pour la découverte ^(automatic|automatic delayed)$ "automatic" ou "automatic delayed"

Exemples

Exemple 1

Utilisation de l'expression suivante dans la découverte de bas niveau pour découvrir des bases de données à l'exception d'une base de données portant un nom spécifique :

 ^TESTDATABASE$

regexp\_expr\_2.png

Type d'expression choisi : "Le résultat est FAUX". Ne correspond pas au nom, contenant la chaîne "TESTDATABASE".

Exemple avec un modificateur de regex en ligne

Utilisation de l'expression régulière suivante incluant un modificateur en ligne (?i) pour faire correspondre les caractères "error":

 (?i)error

regexp\_expr\_3a.png

Type d'expression choisi : "Le résultat est VRAI". Les caractères "error" sont mis en correspondance.

Un autre exemple avec un modificateur de regex en ligne

Utilisation de l'expression régulière suivante, y compris plusieurs modificateurs en ligne pour faire correspondre les caractères après une ligne spécifique :

 (?<=match (?i)everything(?-i) after this line\n)(?sx).*# nous ajoutons le modificateur s pour autoriser . à faire correspondre les caractères de nouvelle ligne

regexp\_expr\_4\_new.png

Type d'expression choisi : "Le résultat est VRAI". Les caractères après une ligne spécifique sont mis en correspondance.

Le modificateur g ne peut pas être spécifié en ligne. La liste des modificateurs disponibles se trouve dans page de manuel pcresyntax. Pour plus d'informations sur la syntaxe PCRE, veuillez consulter la documentation HTML PCRE.

Prise en charge des expressions régulières selon l’emplacement

Emplacement Expression régulière Expression régulière globale Correspondance multiligne Commentaires
Éléments d’agent
eventlog[] Oui Oui Oui paramètres regexp, severity, source, eventid
eventlog.count[] paramètres regexp, severity, source, eventid
log[] paramètre regexp
log.count[]
logrt[] Oui/Non le paramètre regexp prend en charge les deux, le paramètre file_regexp prend en charge uniquement les expressions non globales
logrt.count[]
proc.cpu.util[] Non Non paramètre cmdline
proc.get[]
proc.mem[]
proc.num[]
sensor[] paramètres device et sensor sous Linux 2.4
system.hw.macaddr[] paramètre interface
system.sw.packages[] paramètre regexp
system.sw.packages.get[] paramètre regexp
vfs.dir.count[] paramètres regex_incl, regex_excl, regex_excl_dir
vfs.dir.get[] paramètres regex_incl, regex_excl, regex_excl_dir
vfs.dir.size[] paramètres regex_incl, regex_excl, regex_excl_dir
vfs.file.regexp[] Oui paramètre regexp
vfs.file.regmatch[]
web.page.regexp[]
Traps SNMP
snmptrap[] Oui Oui Non paramètre regexp
Prétraitement de la valeur d’élément Oui Non Non paramètre pattern
Fonctions pour les déclencheurs/éléments calculés
count() Oui Oui Oui paramètre pattern si le paramètre operator est regexp ou iregexp
countunique() Oui Oui
find() Oui Oui
logeventid() Oui Oui Non paramètre pattern
logsource()
Découverte de bas niveau
Filtres Oui Oui Non champ Expression régulière
Remplacements Oui Non Dans les options correspond à, ne correspond pas à pour les conditions d’Opération
Conditions d’action Oui Non Non Dans les options correspond à, ne correspond pas à pour les conditions d’auto-enregistrement Nom d’hôte et Métadonnées de l’hôte
Scripts Oui Oui Non champ Règle de validation d’entrée
Supervision web Oui Non Oui Variables avec un préfixe regex:
champ Chaîne requise
Contexte de macro utilisateur Oui Non Non Dans le contexte de macro avec un préfixe regex:
Fonctions de macro
regsub() Oui Non Non paramètre pattern
iregsub()
Indicateurs de lien dans les cartes Oui Non Non champ Motif (pour les éléments texte)
Mappage d’icônes Oui Oui Non champ Expression
Mappage de valeurs Oui Non Non champ Valeur si le type de mappage est regexp