12 Expresiones regulares
Resumen
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 pila al usar expresiones regulares. Consulte la página del manual de pcrestack para obtener más información.
Tenga en cuenta que, en la coincidencia multilínea, los anclajes ^ y $ coinciden al principio y al final de cada línea, respectivamente, en lugar de al principio y al final de toda la cadena.
Consulte también ejemplos de escape correcto 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, precedido por @, 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 añadir 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 añadir 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 aquellos 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 de cualquier número de dígitos, puntos o guiones bajos. | |
^NULL[0-9.]*$ |
Cadenas que comienzan con "NULL" seguidas opcionalmente de cualquier número de dígitos o puntos. | |
^[Ll]o[0-9.]*$ |
Cadenas que comienzan con "Lo" o "lo" y 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" seguidas opcionalmente 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 los 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 low-level discovery para descubrir bases de datos excepto una base de datos con un nombre específico:
^TESTDATABASE$

Tipo de expresión elegido: "El resultado es FALSE". No coincide con el nombre que contiene la cadena "TESTDATABASE".
Ejemplo con un modificador de expresión regular 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

Tipo de expresión elegido: "Result is TRUE". Los caracteres "error" coinciden.
Otro ejemplo con un modificador de regex en línea
Uso de la siguiente expresión regular, que incluye varios modificadores en línea, 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

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 | |
|---|---|---|---|---|---|
| Items de agent | |||||
| eventlog[] | Sí | Sí | Sí | parámetros regexp, severity, source, eventid |
|
| eventlog.count[] | parámetros regexp, severity, source, eventid |
||||
| log[] | parámetro regexp |
||||
| log.count[] | |||||
| logrt[] | Sí/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[] | Sí | parámetro regexp |
|||
| vfs.file.regmatch[] | |||||
| web.page.regexp[] | |||||
| Traps SNMP | |||||
| snmptrap[] | Sí | Sí | No | parámetro regexp |
|
| Preprocesamiento del valor del item | Sí | No | No | parámetro pattern |
|
| Funciones para triggers/items calculados | |||||
| count() | Sí | Sí | Sí | parámetro pattern si el parámetro operator es regexp o iregexp |
|
| countunique() | Sí | Sí | |||
| find() | Sí | Sí | |||
| logeventid() | Sí | Sí | No | parámetro pattern |
|
| logsource() | |||||
| Descubrimiento de bajo nivel | |||||
| Filtros | Sí | Sí | No | campo Expresión regular | |
| Sobrescrituras | Sí | No | En las opciones coincide, no coincide para las condiciones de Operación | ||
| Condiciones de acción | Sí | No | No | En las opciones coincide, no coincide para las condiciones de autorregistro Nombre del host y Metadatos del host | |
| Scripts | Sí | Sí | No | campo Regla de validación de entrada | |
| Monitoreo web | Sí | No | Sí | Variables con prefijo regex: campo Cadena requerida |
|
| Contexto de macro de usuario | Sí | No | No | En el contexto de macro con prefijo regex: | |
| Funciones de macro | |||||
| regsub() | Sí | No | No | parámetro pattern |
|
| iregsub() | |||||
| Indicadores de enlace en mapas | Sí | No | No | campo Patrón (para items de texto) | |
| Mapeo de iconos | Sí | Sí | No | campo Expresión | |
| Mapeo de valores | Sí | No | No | campo Valor si el tipo de mapeo es regexp |
|