12 Expresiones regulares

Descripción general

Perl Compatible Regular Expressions (PCRE, PCRE2) son compatibles en Zabbix.

Hay dos formas de usar expresiones regulares en Zabbix:

  • introducir manualmente una expresión regular
  • usar una expresión regular global creada en Zabbix

Expresiones regulares

Puede introducir manualmente una expresión regular en los lugares compatibles. Tenga en cuenta que la expresión no puede comenzar con @ porque ese símbolo se usa en Zabbix para hacer referencia a expresiones regulares globales.

Es posible quedarse sin memoria de pila al usar expresiones regulares. Consulte PCRE PERFORMANCE para obtener más información.

Tenga en cuenta que, en la coincidencia multilínea, los anclajes ^ y $ coinciden con el inicio/final de cada línea, respectivamente, en lugar del inicio/final de toda la cadena.

Consulte también ejemplos de correct escaping en varios contextos.

Expresiones regulares globales

Existe un editor avanzado para crear y probar expresiones regulares complejas en el frontend de Zabbix.

Una vez creada una expresión regular de esta manera, puede usarse en varios lugares del frontend haciendo referencia a su nombre, con el prefijo @, por ejemplo, \@mycustomregexp.

Para crear una expresión regular global:

  • Vaya a: Administration > General
  • Seleccione Regular expressions en el menú desplegable
  • Haga clic en New regular expression

La pestaña Expressions permite establecer el nombre de la expresión regular y agregar subexpresiones.

Todos los campos obligatorios están marcados con un asterisco rojo.

Parameter Description
Name Establezca el nombre de la expresión regular. Se permiten todos los caracteres Unicode.
Expressions Haga clic en Add en el bloque Expressions para agregar una nueva subexpresión.
Expression type Seleccione el tipo de expresión:
Character string included - coincide con la subcadena
Any character string included - coincide con cualquier subcadena de una lista delimitada. La lista delimitada incluye una coma (,), un punto (.) o una barra diagonal (/).
Character string not included - coincide con cualquier cadena excepto la subcadena
Result is TRUE - coincide con la expresión regular
Result is FALSE - no coincide con la expresión regular
Expression Introduzca la subcadena/expresión regular.
Delimiter Una coma (,), un punto (.) o una barra diagonal (/) para separar cadenas de texto en una expresión regular. Este parámetro solo está activo cuando se selecciona el tipo de expresión "Any character string included".
Case sensitive Una casilla de verificación para especificar si una expresión regular distingue entre mayúsculas y minúsculas.

Una barra diagonal (/) en la expresión se trata literalmente, en lugar de como delimitador. De este modo es posible guardar expresiones que contienen una barra diagonal, sin errores.

Un nombre de expresión regular personalizada en Zabbix puede contener comas, espacios, etc. En los casos en que eso pueda llevar a una interpretación incorrecta al hacer referencia (por ejemplo, una coma en el parámetro de una clave de item), toda la referencia puede ponerse entre comillas así: "\@My custom regexp for purpose1, purpose2".
Los nombres de las expresiones regulares no deben ir entre comillas en otras ubicaciones (por ejemplo, en las propiedades de una regla LLD).

En la pestaña Test, la expresión regular y sus subexpresiones pueden probarse proporcionando una cadena de prueba.

Los resultados muestran el estado de cada subexpresión y el estado total de la expresión personalizada.

El estado total de la expresión personalizada se define como Combined result. Si se definen varias subexpresiones, Zabbix usa el operador lógico AND para calcular Combined result. Esto significa que si al menos un Result es False, Combined result también tendrá estado False.

Expresiones regulares globales predeterminadas

Zabbix incluye varias expresiones regulares globales en su conjunto de datos predeterminado.

Name Expression Matches
File systems for discovery ^(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"
Network interfaces for discovery ^Software Loopback Interface Cadenas que comienzan con "Software Loopback Interface".
^lo$ "lo"
^(In)?[Ll]oop[Bb]ack[0-9._]*$ Cadenas que opcionalmente comienzan con "In", luego tienen "L" o "l", después "oop", luego "B" o "b", y después "ack", que puede ir seguido opcionalmente por cualquier número de dígitos, puntos o guiones bajos.
^NULL[0-9.]*$ Cadenas que comienzan con "NULL" y que opcionalmente van seguidas de cualquier número de dígitos o puntos.
^[Ll]o[0-9.]*$ Cadenas que comienzan con "Lo" o "lo" y que opcionalmente van seguidas de cualquier número de dígitos o puntos.
^[Ss]ystem$ "System" o "system"
^Nu[0-9.]*$ Cadenas que comienzan con "Nu" y que opcionalmente van seguidas de cualquier número de dígitos o puntos.
Storage devices for SNMP discovery ^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$ "Physical memory" o "Virtual memory" o "Memory buffers" o "Cached memory" o "Swap space"
Windows service names for discovery ^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$ "MMCSS" o "gupdate" o "SysmonLog" o cadenas como "clr_optimization_v2.0.50727_32" y "clr_optimization_v4.0.30319_32" donde, en lugar de puntos, puedes poner cualquier carácter excepto un salto de línea.
Windows service startup states for discovery ^(automatic|automatic delayed)$ "automatic" o "automatic delayed"

Ejemplos

Ejemplo 1

Uso de la siguiente expresión en el descubrimiento de bajo nivel para descubrir bases de datos excepto una base de datos con un nombre específico:

^TESTDATABASE$

regexp\_expr\_2.png

Tipo de expresión elegido: "El resultado es FALSE". No coincide con el nombre que contiene la cadena "TESTDATABASE".

Ejemplo con un modificador de regex en línea

Uso de la siguiente expresión regular, incluyendo un modificador en línea (?i), para coincidir con los caracteres "error":

(?i)error

regexp\_expr\_3a.png

Tipo de expresión elegido: "Result is TRUE". Los caracteres "error" coinciden.

Otro ejemplo con un modificador inline de regex

Uso de la siguiente expresión regular, que incluye varios modificadores inline para coincidir con los caracteres después de una línea específica:

(?<=match (?i)everything(?-i) after this line\n)(?sx).*# we add s modifier to allow . match newline characters

regexp\_expr\_4\_new.png

Tipo de expresión elegido: "Result is TRUE". Los caracteres después de una línea específica coinciden.

El modificador g no puede especificarse en la línea. La lista de modificadores disponibles se puede encontrar en la página del manual pcresyntax. Para obtener más información sobre la sintaxis de PCRE, consulte la documentación HTML de PCRE.

Compatibilidad de expresiones regulares por ubicación

Ubicación Expresión regular Expresión regular global Coincidencia multilínea Comentarios
Elementos de agent
eventlog[] Yes Yes Yes parámetros regexp, severity, source, eventid
eventlog.count[] parámetros regexp, severity, source, eventid
log[] parámetro regexp
log.count[]
logrt[] Yes/No el parámetro regexp admite ambos, el parámetro file_regexp solo admite expresiones no globales
logrt.count[]
proc.cpu.util[] No No parámetro cmdline
proc.get[]
proc.mem[]
proc.num[]
sensor[] parámetros device y sensor en Linux 2.4
system.hw.macaddr[] parámetro interface
system.sw.packages[] parámetro regexp
system.sw.packages.get[] parámetro regexp
vfs.dir.count[] parámetros regex_incl, regex_excl, regex_excl_dir
vfs.dir.get[] parámetros regex_incl, regex_excl, regex_excl_dir
vfs.dir.size[] parámetros regex_incl, regex_excl, regex_excl_dir
vfs.file.regexp[] Yes parámetro regexp
vfs.file.regmatch[]
web.page.regexp[]
Traps SNMP
snmptrap[] Yes Yes No parámetro regexp
Preprocesamiento del valor del item Yes No No parámetro pattern
Funciones para triggers/items calculados
count() Yes Yes Yes parámetro pattern si el parámetro operator es regexp o iregexp
countunique() Yes Yes
find() Yes Yes
logeventid() Yes Yes No parámetro pattern
logsource()
Descubrimiento de bajo nivel
Filters Yes Yes No campo Regular expression
Overrides Yes No en las opciones matches, does not match para las condiciones de Operation
Condiciones de acción Yes No No en las opciones matches, does not match para las condiciones de autoregistro de Host name y Host metadata
Scripts Yes Yes No campo Input validation rule
Monitorización web Yes No Yes Variables con un prefijo regex:
campo Required string
Contexto de macro de usuario Yes No No en el contexto de macro con un prefijo regex:
Funciones de macro
regsub() Yes No No parámetro pattern
iregsub()
Indicadores de enlace en mapas Yes No No campo Pattern (para items de texto)
Asignación de iconos Yes Yes No campo Expression
Asignación de valores Yes No No campo Value si el tipo de asignación es regexp