Expressions régulières

Vue d'ensemble

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

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

  • Saisir manuellement une expression régulière
  • Utiliser 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 doit 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 mémoire de la pile lors de l'utilisation d'expressions régulières. Consultez PCRE PERFORMANCE pour plus d'informations.

Notez qu'en correspondance multilignes, les ancres ^ et $ correspondent respectivement au début et à la fin de chaque ligne, au lieu du début et de la fin de l'ensemble de la chaîne.

Consultez également des exemples de bon échappement dans divers contextes.

Expressions régulières globales

Zabbix fournit un éditeur avancé dans l'interface pour créer et tester des expressions régulières complexes.
Pour y accéder, allez dans Administration > Général > Expressions régulières.
Zabbix inclut un certain nombre d'expressions régulières globales prédéfinies dans son jeu de données par défaut.

Vous pouvez filtrer la liste des expressions régulières par nom et par description afin de trouver les expressions dont vous avez besoin.

Configuration

Pour créer une expression régulière globale, cliquez sur Créer une expression régulière et saisissez les paramètres de l'expression régulière dans le formulaire.

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

Parameter Description
Name Définissez le nom de l'expression régulière. Tous les caractères Unicode sont autorisés.
Expressions Cliquez sur Ajouter dans la section Expressions pour ajouter une nouvelle sous-expression.
Expression type Sélectionnez le type d'expression :
Contient la chaîne - correspond à la sous-chaîne.
Contient n'importe quelle sous-chaîne de la liste - correspond à n'importe quelle sous-chaîne d'une liste délimitée. La liste délimitée inclut une virgule ,, un point . ou une barre oblique /.
Ne contient pas la chaîne - correspond à toute chaîne sauf la sous-chaîne.
Correspond à l'expression régulière - correspond à l'expression régulière.
Ne correspond pas à l'expression régulière - ne correspond pas à l'expression régulière.
Expression Saisissez une sous-chaîne ou une expression régulière.
Longueur maximale : 2048 caractères.
Delimiter 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 est actif uniquement lorsque le type d'expression Contient n'importe quelle sous-chaîne de la liste est sélectionné.
Case sensitive Une case à cocher permettant de préciser si une expression régulière est sensible à la casse.
Description Saisissez une description de l'expression régulière.
Test expression Une valeur à utiliser pour tester l'expression régulière.

Une barre oblique / dans l'expression est interprétée littéralement et non comme un délimiteur. Cela permet d'enregistrer des expressions contenant une barre oblique sans erreur.

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

Une fois qu'une expression régulière a été créée, elle peut être utilisée à plusieurs endroits dans l'interface en faisant référence à son nom, précédé de @, par exemple @mycustomregexp.

Boutons du formulaire

Les boutons situés en bas du formulaire vous permettent d'effectuer diverses opérations :

Button Description
Ajouter une expression régulière. Ce bouton n'est disponible que pour les nouvelles expressions régulières.
Mettre à jour les propriétés d'une expression régulière.
Créer une autre expression régulière basée sur les propriétés de l'expression régulière actuelle.
Tester une expression régulière et ses sous-expressions par rapport à une valeur fournie.
Supprimer l'expression régulière.
Annuler la modification des propriétés de l'expression régulière.

Test d'une expression régulière

Vous pouvez tester l'expression régulière et ses sous-expressions en saisissant une valeur dans le champ Test expression et en cliquant sur le bouton Test.

Dans la colonne Test result, l'état de chaque sous-expression est affiché. Le champ Combined result affiche l'état global de l'expression régulière. Si plusieurs sous-expressions sont définies, Zabbix utilise l'opérateur logique AND pour calculer Combined result ; c'est-à-dire que si au moins un résultat est False, Combined result est également False.

Expressions régulières globales par défaut

L'ensemble de données par défaut inclut les expressions régulières globales prédéfinies suivantes :

Name Expression Matches
File systems for discovery ^(btrfs|ext2|ext3|ext4|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|apfs|refs|ntfs|fat32|zfs)$ "btrfs" ou "ext2" ou "ext3" ou "ext4" ou "reiser" ou "xfs" ou "ffs" ou "ufs" ou "jfs" ou "jfs2" ou "vxfs" ou "hfs" ou "apfs" ou "refs" ou "ntfs" ou "fat32" ou "zfs".
Network interfaces for discovery ^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", suivies de "L" ou "l", puis de "oop", puis de "B" ou "b", puis de "ack", et éventuellement suivies d'un nombre quelconque de chiffres, de points ou de traits de soulignement.
^NULL[0-9.]*$ Chaînes commençant par "NULL" et éventuellement suivies d'un nombre quelconque de chiffres ou de points.
^[Ll]o[0-9.]*$ Chaînes commençant par "Lo" ou "lo" et éventuellement suivies d'un nombre quelconque de chiffres ou de points.
^[Ss]ystem$ "System" ou "system".
^Nu[0-9.]*$ Chaînes commençant par "Nu" et éventuellement suivies d'un nombre quelconque de chiffres ou de points.
Storage devices for SNMP discovery ^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$ "Physical memory" ou "Virtual memory" ou "Memory buffers" ou "Cached memory" ou "Swap space".
Windows service names for discovery ^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$ "MMCSS" ou "gupdate" ou "SysmonLog" ou des chaînes correspondant à "clr_optimization_v2.0.50727_32" ou "clr_optimization_v4.0.30319_32", où chaque point peut être remplacé par n'importe quel caractère sauf un saut de ligne.
Windows service startup states for discovery ^(automatic|automatic delayed)$ "automatic" ou "automatic delayed".

Importation/exportation d'une expression régulière

Vous pouvez importer ou exporter des expressions régulières globales comme décrit sur la page de configuration d'export/import des expressions régulières.

Exemples

Exemple d'exclusion d'une chaîne exacte

Utilisez 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$

Les champs Test result et Combined result affichent tous deux FALSE : le nom correspond à "TESTDATABASE", donc la condition Does not match regular expression n'est pas satisfaite.

Exemple avec un modificateur regex en ligne pour une correspondance insensible à la casse

Utilisez l'expression régulière suivante, qui inclut le modificateur en ligne (?i) pour effectuer une correspondance insensible à la casse des caractères "error" :

(?i)error

Les champs Test result et Combined result affichent tous deux TRUE : les caractères "error" sont correspondus même avec Case sensitive sélectionné, car le modificateur en ligne (?i) rend la correspondance insensible à la casse.

Exemple avec plusieurs modificateurs regex en ligne

Utilisez l'expression régulière suivante, qui inclut plusieurs modificateurs en ligne, pour faire correspondre les caractères après une ligne spécifique :

(?<=match (?i)eveRything(?-i) after this line\r\n)(?sx).*# comment

où :

  • (?i) - active la correspondance insensible à la casse ;
  • (?-i) - désactive la correspondance insensible à la casse ;
  • (?s) - active le mode dotall, permettant à . de correspondre aux caractères de nouvelle ligne ;
  • (?x) - active le mode étendu, permettant d'ignorer les espaces et les commentaires dans l'expression régulière.

Les champs Test result et Combined result affichent tous deux TRUE : les caractères suivant la ligne spécifique sont correspondus.

Le modificateur g ne peut pas être spécifié en ligne. La liste des modificateurs disponibles se trouve dans la 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 par emplacement

Emplacement Expression régulière Expression régulière globale Correspondance multilignes Commentaires
Éléments 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[]
Trappes SNMP
snmptrap[] Oui Oui Non Paramètre regexp
Prétraitement de la valeur de l'élément Oui Non Non Champ 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 Opération
Conditions d'action Oui Non Non Dans les options correspond à, ne correspond pas à pour les conditions d'autodécouverte Nom d'hôte et Métadonnées d'hôte
Scripts Oui Oui Non Champ Règle de validation de l'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 Pattern (pour les éléments textuels)
Mappage d'icônes Oui Oui Non Champ Expression
Mappage des valeurs Oui Non Non Champ Valeur si le type de mappage est regexp
Paramètres de configuration de l'agent
AllowKeyRegexp Oui Non Non Motif
DenyKeyRegexp