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 forma, puede utilizarse en varios lugares del frontend haciendo referencia a su nombre, precedido por @, por ejemplo, @mycustomregexp.

Para crear una expresión regular global:

  • Vaya a: Administración > General
  • Seleccione Expresiones regulares en la lista desplegable
  • Haga clic en Nueva expresión regular

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

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

Parámetro Descripción
Nombre Establezca el nombre de la expresión regular. Se permite cualquier carácter Unicode.
Expresiones Haga clic en Añadir en el bloque Expresiones para añadir una nueva subexpresión.
Tipo de expresión Seleccione el tipo de expresión:
Cadena de caracteres incluida: coincide con la subcadena
Cualquier cadena de caracteres incluida: coincide con cualquier subcadena de una lista delimitada. La lista delimitada incluye una coma (,), un punto (.) o una barra diagonal (/).
Cadena de caracteres no incluida: coincide con cualquier cadena excepto la subcadena
El resultado es TRUE: coincide con la expresión regular
El resultado es FALSE: no coincide con la expresión regular
Expresión Introduzca la subcadena o expresión regular.
Delimitador 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 "Cualquier cadena de caracteres incluida".
Distingue mayúsculas y minúsculas Una casilla de verificación para especificar si la expresión regular distingue entre mayúsculas y minúsculas.

Una barra diagonal (/) en la expresión se trata literalmente, no como un delimitador. De esta forma es posible guardar expresiones que contienen una barra diagonal sin errores.

El nombre de una expresión regular personalizada en Zabbix puede contener comas, espacios, etc. En los casos en los que esto pueda provocar una interpretación incorrecta al hacer referencia a ella (por ejemplo, una coma en el parámetro de una clave de item), la referencia completa puede escribirse entre comillas de la siguiente manera: "@My custom regexp for purpose1, purpose2".
Los nombres de las expresiones regulares no deben escribirse entre comillas en otras ubicaciones (por ejemplo, en las propiedades de una regla de LLD).

En la pestaña Prueba, 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 Resultado combinado. Si se definen varias subexpresiones, Zabbix utiliza el operador lógico AND para calcular el Resultado combinado. Esto significa que, si al menos un resultado es False, el Resultado combinado también tendrá el 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