12. Expressions regulars

Vista general

Les Expressions regulars compatibles amb Perl (PCRE, PCRE2) són compatibles amb Zabbix.

Hi ha dues maneres d'emprar expressions regulars a Zabbix:

  • Introduïnt manualment d'una expressió regular
  • emprant una expressió regular global creada a Zabbix

Expressions regulars

Podeu introduir manualment una expressió regular a les ubicacions admeses. Tingueu en compte que l'expressió no pot començar amb @ perquè aquest símbol s'empra a Zabbix per fer referència a expressions regulars globals.

És possible sortir de la pila quan s'empren expressions regulars. Consulteu la pàgina man de pcrestack per obtindre més informació.

Tingueu en compte que a la concordança multilínia, les àncores ^ i $ coincideixen amb l'inici/final de cada línia, respectivament, en lloc de l'inici/final de tota la cadena.

Veieu exemples d'escapada correcta a diferents contexts.

Expressions regulars globals

Hi ha un editor avançat per crear i provar expressions regulars complexes a la interfície Zabbix.

Un cop s'ha creat una expressió regular d'aquesta manera, es pot emprar a diversos llocs de la interfície fent referència al seu nom amb el prefix @, per exemple, @mycustomregexp.

Per crear una expressió regular global:

  • Aneu a: Administració → General
  • Seleccioneu Expressions regulars al menú desplegable
  • Feu clic a Nova expressió regular

La pestanya Expressions us permet definir el nom de l'expressió regular i afegir subexpressions.

Tots els camps d'entrada obligatoris són marcats amb un asterisc vermell.

|Paràmetre|<|Descripció| |-|-----------|-------------------------------------- ----| |Nom|<|Definiu el nom de l'expressió regular. Es permeten tots els caràcters Unicode.| |Expressions|<|Feu clic a Afegir al bloc Expressions per afegir una subexpressió nova.| | |Tipus d'expressió|Trieu el tipus d'expressió:
Cadena inclosa - coincideix amb la subcadena
Qualsevol cadena inclosa - coincideix amb totes les subcadenes d'una llista delimitada. La llista delimitada inclou una coma (,), un punt (.) o una barra inclinada (/).
La cadena no s'inclou - coincideix amb qualsevol cadena excepte la subcadena
El resultat és CERT - coincideix amb l'expressió regular
El resultat és FALS - no coincideix amb l'expressió regular| |^|Expressió|Introduïu una subcadena/expressió regular.| |Delimitador|<|Una coma (,), punt (.) o barra inclinada (/) per separar cadenes de text en una expressió regular. Aquest paràmetre només és actiu quan es tria el tipus d'expressió "Qualsevol cadena de caràcters inclosa".| |Distingeix entre majúscules i minúscules|<|Una casella de selecció per especificar si una expressió regular distingeix entre majúscules i minúscules.|

Una barra inclinada (/) a l'expressió es tracta literalment, en lloc d'un delimitador. D'aquesta manera és possible desar expressions que contenen una barra, sense errors.

Un nom d'expressió regular personalitzada a Zabbix pot contindre comes, espais, etc. En casos en què això pot provocar una interpretació errònia quan es fa referència (per exemple, una coma al paràmetre d'una clau d'element), la referència sencera es pot citar així: "@My regexp personalizada per a propòsit1, propòsit2".
Els noms de les expressions regulars no s'han de citar en altres llocs (per exemple, a les propietats de les regles LLD).

A la pestanya Provar, l'expressió regular i les seves subexpressions es poden provar proporcionant una cadena de prova.

Els resultats mostren l'estat de cada subexpressió i l'estat total de l'expressió personalitzada.

L'estat total de l'expressió personalitzada s'estableix a Resultat combinat. Si es defineixen diverses subexpressions, Zabbix empra l'operador I lògic per calcular el resultat combinat. Això vol dir que si almenys un resultat és Fals, el Resultat combinat també té l'estat Fals.

Expressions regulars globals per defecte

Zabbix conté per defecte diverses expressions regulars globals.

Nom Expressió Correspondències
Sistemes de fitxers per a la descoberta ^(btrfs\|ext2\|ext3\|ext4\|jfs\|reiser\|xfs\|ffs\|ufs\|jfs\|jfs2\|vxfs\|hfs\| refs\|apfs\|ntfs\|fat32\|zfs)$ "btrfs" o "ext2" o "ext3" o "ext4" o "jfs" o "reiser" o "xfs" o "ffs" o " ufs" o "jfs" o "jfs2" o "vxfs" o "hfs" o "refs" o "apfs" o "ntfs" o "fat32" o "zfs"
Interfícies de xarxa per a la descoberta ^Software Loopback Interface Cadenes que comencen per "Software Loopback Interface".
^lo$ "lo"
^(In)?[Ll]oop[Bb]ack[0-9._]*$ Cadenes que comencen opcionalment amb "In", després tenen "L" o "l", després "oop", després "B" o "b", després "ack", que pot anar seguit opcionalment de qualsevol nombre de dígits, punts o guions baixos.
^NULL[0-9.]*$ Cadenes que comencen per "NULL" seguides opcionalment per qualsevol nombre de dígits o punts.
^[Ll]o[0-9.]*$ Cadenes que comencen per "Lo" o "lo" i opcionalment seguides per qualsevol nombre de dígits o punts.
^[Ss]ystem$ "Sistema" o "sistema"
^Nu[0-9.]*$ Cadenes que comencen per "Nu" seguides opcionalment per qualsevol nombre de dígits o punts.
Dispositius d'emmagatzematge per a la descoberta d'SNMP ^(Memòria física\|Memòria virtual\|Buffers de memòria\|Memòria en memòria cau\|Espai d'intercanvi)$ "Memòria física" o "Memòria virtual" o "Memòria intermèdia" o " Memòria a la memòria cau" o "Espai d'intercanvi"
Noms de serveis de Windows per a la descoberta ^(MMCSS\|gupdate\|SysmonLog\|clr_optimization_v2.0.50727_32\|clr_optimization_v4.0.30319_32)$ "MMCSS" o "gupdate" o "SysmonLog like" o "SysmonLog" clr_optimization_v2.0.50727_32" i "clr_optimization_v4.0.30319_32" on en lloc de punts podeu posar qualsevol caràcter excepte la nova línia.
Estats d'inici del servei de Windows per a la descoberta ^(automàtic\|automàtic endarrerit)$ "automàtic" o "automàtic endarrerit"

Exemples

Exemple 1

Ús de l'expressió següent a la descoberta de baix nivell per trobarbases de dades, excepte una base de dades amb un nom específic:

  ^ BASE DE DADES DE TEST$

regexp_expr_2.png

Tipus d'expressió triada: "El resultat és FALS". No coincideix amb el nom, que conté la cadena "TESTDATABASE".

Exemple amb un modificador de regex en línia

Ús de l'expressió regular següent, inclòs un modificador en línia (?i) per fer coincidir els caràcters d'"error":

  (?i)error

regexp_expr_3a.png

Tipus d'expressió triat: "El resultat és CERT". Els caràcters d'"error" coincideixen.

Un altre exemple amb un modificador d'expressió regular en línia

Ús de l'expressió regular següent, inclosos diversos modificadors en línia per fer coincidir caràcters després d'una línia específica:

  (?<=match (?i)tot(?-i) després d'aquesta línia\n)(?sx).*# afegim el modificador s per permetre . per fer coincidir els caràcters de nova línia

regexp_expr_4_new.png

Tipus d'expressió triada: "El resultat és CERT". Els caràcters després d'una línia específica coincideixen.

El modificador g no es pot especificar en línia. La llista de modificadors disponibles es pot trobar a pcresyntax man page. Per obtindre més informació sobre la sintaxi de PCRE, consulteu la documentació HTML PCRE.

Suport de les expressions regulars per ubicació

|Ubicació|<|Expressió regular|Expressió regular global|Concordança multilínia|Comentaris| |-|----------|----------|----------|----------|------- ---------------| |Elements de l'agent|<|<|<|<|<| |<|eventlog[]|Sí|Sí|Sí|Paràmetres regexp, severity, source, eventid| |<|eventlog.count[]|||^|regexp, severity, source, eventid parameters| ||log[]||||paràmetre regexp| ||log.count[]||||^| ||logrt[]||Sí/No|^|El paràmetre regexp admet totes dues, el paràmetre file_regexp només admet expressions no globals| ||logrt.count[]||||^ ||proc.cpu.util[]||No|No|paràmetre cmdline| ||proc.get[]||||^| ||proc.mem[]||||^| ||proc.num[]||||^| ||sensor[]||||paràmetres dispositiu i sensor a Linux 2.4| ||system.hw.macaddr[]||||paràmetre interface| ||system.sw.packages[]||||paràmetre package| ||system.sw.packages.get[]||||paràmetre regexp| ||vfs.dir.count[]||||Paràmetres regex_incl, regex_excl, regex_excl_dir| ||vfs.dir.get[]||||Paràmetres regex_incl, regex_excl, regex_excl_dir| ||vfs.dir.size[]||||Paràmetres regex_incl, regex_excl, regex_excl_dir| ||vfs.file.regexp[]||^|Sí|paràmetre regexp| ||vfs.file.regmatch[]||||^| ||web.page.regexp[]||||^| |Traps SNMP|<|<|<|<|<| |<|snmptrap[]|Sí|Sí|No|paràmetre regexp| |Preprocessament del valor de l'element|<|Sí|No|No|paràmetre pattern| |Funcions per a triggers/elements calculats|<|<|<|<|<| |<|count()|Yes|Yes|Yes|paràmetre pattern si el paràmetre operator és regexp o iregexp| |<|countunique()|sí|sí||| |<|find()|Sí|Sí||| |^|logeventid()|Sí|Sí|No|paràmetre patró| ||logsource()||||^| |Descoberta de baix nivell|<|<|<|<|<| |<|Filters|Sí|Sí|No|Camp Expressió regular| ||Overrides|Sí|No||A les opcions coincideix, no coincideix per a les condicions de operació| |Condicions d'acció|<|Sí|No|No|A les opcions coincideix, no coincideix per a Nom d'equip i Metadades de l'equip de condicions d'autoinscripció| |Scripts|<|Yes|Yes|No|Input validation rule field| |Monitoratge web|<|Sí|No|Sí|Variables amb un prefix regex:
Camp String required| |Context de macro d'usuari|<|Sí|No|No|En un context de macro amb un prefix regex:| |Funcions de macro|<|<|<|<|<| |<|regsub()|Sí|No|No|paràmetre pattern| ||iregsub()||||^| |Mapa d'icones|<|Sí|Sí|No|Camp Expressió| |Mapa de valors|<|Sí|No|No|Camp Valor si el tipus de mapatge és regexp|