12. Expressions régulières
Aperçu
Les expressions régulières compatibles Perl (PCRE) sont supportées dans Zabbix.
Il y a deux façons d'utiliser des expressions régulières dans Zabbix :
- en entrant manuellement une expression régulière
- en utilisant une expression régulière globale créée dans Zabbix
Expressions régulières
Vous pouvez entrer manuellement une expression régulière aux endroits supportés. Notez que l’expression ne peut pas commencer par @ car ce symbole est utilisé dans Zabbix pour référencer des expressions régulières globales.
Il est possible de manquer de pile (out of stack) en utilisant des expressions régulières. Reportez-vous à la page de manuel de pcrestack] pour plus d'informations.
Notez que dans une correspondance multiligne, les ancres ^ et $
correspondent au début/à la fin de chaque ligne, respectivement, au lieu
du début/de la fin de la chaîne entière.
Expressions régulières globales
Il existe un éditeur avancé pour la création et le test d’expressions régulières complexes dans l'interface web de Zabbix.
Une fois qu'une expression régulière a été créée de cette manière, elle peut être utilisée à plusieurs endroits dans l'interface en se référant à son nom, précédé de @, par exemple, \@mycustomregexp.
Pour créer une expression régulière globale :
- Aller dans Administration → Général
- Sélectionnez Expressions régulières dans la liste déroulante.
- 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 inclue - correspond à la sous chaîne Toute chaîne de caractère inclue - correspond à n'importe quelle sous-chaîne 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 inclue - 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 | Entrez 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 est actif uniquement lorsque le type d'expression "Toute chaîne de caractères inclue" est sélectionné. | |
| Sensible à la casse | Une case à cocher pour spécifier si une expression régulière est sensible à la casse. | |
Depuis Zabbix 2.4.0, une barre oblique (/) dans l'expression est traitée littéralement, plutôt que comme délimiteur. De cette façon, il est possible de sauvegarder des expressions contenant une barre oblique, alors que cela produisait auparavant une 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 interprétation erronée 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 placée entre guillemets : "\@My custom
regexp for purpose1, purpose2".
Les noms des expressions régulières ne doivent pas être entre guillemets
ailleurs (par exemple, dans les propriétés de la règle
LLD).
Exemple
Utilisation de l'expression régulière suivante dans la LLD pour découvrir des bases de données ne prenant pas en compte une base de données portant un nom spécifique :
^TESTDATABASE$

Type d'expression choisie : "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, y compris un modificateur en ligne (?i) pour faire correspondre les caractères "error" :
(?i)error

Type d'expression choisie : "Le résultat est VRAI". Les caractères "error" correspondent.
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).*# we add s modifier to allow . match newline characters

Type d'expression choisie : "Le résultat est VRAI". Les caractères après une ligne spécifique correspondent.
Le modificateur g ne peut pas être spécifié dans la ligne. La liste des modificateurs disponibles se trouve dans la page du manuel pcresyntax. Pour plus d'informations sur la syntaxe PCRE, reportez-vous à la documentation HTML de PCRE.
Exemple plus complexe
Une expression régulière personnalisée peut comprendre plusieurs sous-expressions et peut être testée dans l'onglet Test en fournissant une chaîne de test.

Les résultats montrent le statut de chaque sous-expression et le statut total de l'expression personnalisée.
Le statut total de l'expression personnalisée est défini en tant que 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, le Résultat combiné a également le statut faux.
Explication des expressions régulières globales
| Regexp Globale | Expression | Description |
|---|---|---|
| Système de fichiers pour la découverte | ^(btrfs\|ext2\|ext3\|ext4\|jfs\|reiser\|xfs\|ffs\|ufs\|jfs\|jfs2\|vxfs\|hfs\|refs\|apfs\|ntfs\|fat32\|zfs)$ |
Correspond à "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 |
Correspond aux chaînes commençant par "Software Loopback Interface" |
^lo$ |
Correspond à "lo" | |
^(In)?[Ll]oop[Bb]ack[0-9._]*$ |
Correspond aux chaînes qui commencent éventuellement par "In", puis ont "L" ou "l", puis "oop", puis "B" ou "b", puis "ack", qui peut éventuellement être suivi d'un nombre quelconque de chiffres, points ou underscores | |
^NULL[0-9.]*$ |
Correspond aux chaînes avec "NULL" éventuellement suivies d'un nombre quelconque de chiffres ou de points | |
^[Ll]o[0-9.]*$ |
Correspond aux chaînes commençant par "Lo" ou "lo" et éventuellement suivies d'un nombre quelconque de chiffres ou de points | |
^[Ss]ystem$ |
Correspond à "System" ou "system" | |
^Nu[0-9.]*$ |
Correspond aux chaînes avec "Nu" éventuellement suivies d'un nombre quelconque 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)$ |
Correspond à "Physical memory" ou "Virtual memory" ou "Memory buffers" ou "Cached memory" ou "Swap space" |
| Noms de services Windows pour la découverte | ^(MMCSS\|gupdate\|SysmonLog\|clr_optimization_v2.0.50727_32\|clr_optimization_v4.0.30319_32)$ |
Correspond à "MMCSS" ou "gupdate" ou "SysmonLog" ou des chaînes comme "clr_optimization_v2.0.50727_32" et "clr_optimization_v4.0.30319_32" où au lieu de points, vous pouvez insérer un caractère sauf newline |
| États de démarrage du service Windows pour la découverte | ^(automatic\|automatic delayed)$ |
Correspond à "automatic" ou "automatic delayed" |
Support d'expression régulière par emplacement
| Emplacement | Expression régulière | Expression régulière globale | Commentaires | |
|---|---|---|---|---|
| Élément d'agent | ||||
| eventlog[] | Oui | Oui | paramètres regexp, severity, source, eventid |
|
| log[] | paramètre regexp |
|||
| log.count[] | ||||
| logrt[] | Oui/Non | paramètre regexp supporte les deux, paramètre file_regexp supporte uniquement les expressions non-globales |
||
| logrt.count[] | ||||
| proc.cpu.util[] | Non | paramètre cmdline |
||
| proc.mem[] | ||||
| proc.num[] | ||||
| sensor[] | paramètres device et sensor sur Linux 2.4 |
|||
| system.hw.macaddr[] | paramètre interface |
|||
| system.sw.packages[] | paramètre package |
|||
| vfs.dir.count[] | paramètres regex_incl et regex_excl |
|||
| vfs.dir.size[] | paramètres regex_incl et regex_excl |
|||
| vfs.file.regexp[] | paramètre regexp |
|||
| vfs.file.regmatch[] | ||||
| web.page.regexp[] | ||||
| Traps SNMP | ||||
| snmptrap[] | Oui | Oui | paramètre regexp |
|
| Pré-traitement de la valeur d'un élément | Oui | Non | paramètre pattern |
|
| Fonction déclencheur | ||||
| count() | Oui | Oui | paramètre pattern si paramètre operator est regexp ou iregexp |
|
| logeventid() | paramètre pattern |
|||
| logsource() | ||||
| iregexp() | ||||
| regexp() | ||||
| Découverte de bas niveau | Oui | Oui | champs Filtre | |
| Supervision Web | Oui | Non | Variables avec un préfix regex: champs Chaîne requise |
|
| Fonctions de macro | ||||
| regsub() | Oui | Non | paramètre pattern |
|
| iregsub() | ||||
| Correspondance d'icônes | Oui | Oui | champs Expression | |