12. Expressões regulares
Visão geral
Perl Compatible Regular Expressions (PCRE, PCRE2) são suportadas no Zabbix.
Há duas maneiras de usar expressões regulares no Zabbix:
- inserir manualmente uma expressão regular
- usar uma expressão regular global criada no Zabbix
Expressões regulares
Você pode inserir manualmente uma expressão regular nos locais suportados. Observe que a expressão não pode começar com @, porque esse símbolo é usado no Zabbix para referenciar expressões regulares globais.
É possível ocorrer falta de stack ao usar expressões regulares. Consulte a página de manual pcrestack para obter mais informações.
Observe que, na correspondência em várias linhas, os delimitadores ^ e $ correspondem ao início/fim de cada linha, respectivamente, em vez do início/fim de toda a string.
Veja também exemplos de escape correto em vários contextos.
Expressões regulares globais
Há um editor avançado para criar e testar expressões regulares complexas no frontend do Zabbix.
Depois que uma expressão regular é criada dessa forma, ela pode ser usada em vários locais no frontend, referenciando seu nome, com o prefixo @, por exemplo, \@mycustomregexp.
Para criar uma expressão regular global:
- Vá para: Administration > General
- Selecione Regular expressions no menu suspenso
- Clique em New regular expression
A guia Expressions permite definir o nome da expressão regular e adicionar subexpressões.

Todos os campos obrigatórios são marcados com um asterisco vermelho.
| Parameter | Description | |
|---|---|---|
| Name | Defina o nome da expressão regular. Quaisquer caracteres Unicode são permitidos. | |
| Expressions | Clique em Add no bloco Expressions para adicionar uma nova subexpressão. | |
| Expression type | Selecione o tipo de expressão: Character string included - corresponde à substring Any character string included - corresponde a qualquer substring de uma lista delimitada. A lista delimitada inclui uma vírgula (,), um ponto (.) ou uma barra (/). Character string not included - corresponde a qualquer string, exceto a substring Result is TRUE - corresponde à expressão regular Result is FALSE - não corresponde à expressão regular |
|
| Expression | Digite a substring/expressão regular. | |
| Delimiter | Uma vírgula (,), um ponto (.) ou uma barra (/) para separar cadeias de texto em uma expressão regular. Este parâmetro fica ativo somente quando o tipo de expressão "Any character string included" estiver selecionado. | |
| Case sensitive | Uma caixa de seleção para especificar se uma expressão regular diferencia maiúsculas de minúsculas. | |
Uma barra (/) na expressão é tratada literalmente, e não como delimitador. Dessa forma, é possível salvar expressões contendo uma barra, sem erros.
Um nome de expressão regular personalizada no Zabbix pode conter vírgulas, espaços etc.
Nos casos em que isso possa levar a uma interpretação incorreta ao referenciar (por exemplo, uma vírgula no parâmetro de uma chave de item), a referência inteira pode ser colocada entre aspas assim: "\@My custom regexp for purpose1, purpose2".
Os nomes de expressões regulares não devem ser colocados entre aspas em outros locais (por exemplo, nas propriedades de uma regra de LLD).
Na guia Test, a expressão regular e suas subexpressões podem ser testadas fornecendo uma string de teste.

Os resultados mostram o status de cada subexpressão e o status total da expressão personalizada.
O status total da expressão personalizada é definido como Combined result. Se várias subexpressões forem definidas, o Zabbix usa o operador lógico AND para calcular Combined result. Isso significa que, se pelo menos um Result for False, Combined result também terá status False.
Expressões regulares globais padrão
O Zabbix vem com várias expressões regulares globais em seu conjunto de dados padrão.
| 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" 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" |
| Network interfaces for discovery | ^Software Loopback Interface |
Strings que começam com "Software Loopback Interface". |
^lo$ |
"lo" | |
^(In)?[Ll]oop[Bb]ack[0-9._]*$ |
Strings que opcionalmente começam com "In", depois têm "L" ou "l", depois "oop", depois "B" ou "b", depois "ack", e que podem ser opcionalmente seguidas por qualquer número de dígitos, pontos ou sublinhados. | |
^NULL[0-9.]*$ |
Strings que começam com "NULL" e são opcionalmente seguidas por qualquer número de dígitos ou pontos. | |
^[Ll]o[0-9.]*$ |
Strings que começam com "Lo" ou "lo" e são opcionalmente seguidas por qualquer número de dígitos ou pontos. | |
^[Ss]ystem$ |
"System" ou "system" | |
^Nu[0-9.]*$ |
Strings que começam com "Nu" e são opcionalmente seguidas por qualquer número de dígitos ou pontos. | |
| Storage devices for SNMP discovery | ^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$ |
"Physical memory" ou "Virtual memory" ou "Memory buffers" ou "Cached memory" ou "Swap space" |
| Windows service names for discovery | ^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$ |
"MMCSS" ou "gupdate" ou "SysmonLog" ou strings como "clr_optimization_v2.0.50727_32" e "clr_optimization_v4.0.30319_32", em que, em vez de pontos, você pode usar qualquer caractere exceto nova linha. |
| Windows service startup states for discovery | ^(automatic|automatic delayed)$ |
"automatic" ou "automatic delayed" |
Exemplos
Exemplo 1
Uso da seguinte expressão na descoberta de baixo nível para descobrir bancos de dados, exceto um banco de dados com um nome específico:
^TESTDATABASE$

Tipo de expressão escolhido: "Result is FALSE". Não corresponde ao nome, contendo a string "TESTDATABASE".
Exemplo com um modificador de regex embutido
Uso da seguinte expressão regular, incluindo um modificador embutido (?i), para corresponder aos caracteres "error":
(?i)error

Tipo de expressão escolhido: "Result is TRUE". Os caracteres "error" são correspondidos.
Outro exemplo com um modificador inline de regex
Uso da seguinte expressão regular, incluindo vários modificadores inline, para corresponder aos caracteres após uma linha específica:
(?<=match (?i)everything(?-i) after this line\n)(?sx).*# we add s modifier to allow . match newline characters

Tipo de expressão escolhido: "Result is TRUE". Os caracteres após uma linha específica são correspondidos.
O modificador g não pode ser especificado na linha. A lista de modificadores disponíveis pode ser encontrada na página de manual do pcresyntax. Para mais informações sobre a sintaxe PCRE, consulte a documentação HTML do PCRE.
Suporte a expressões regulares por localização
| Localização | Expressão regular | Expressão regular global | Correspondência multilinha | Comentários | |
|---|---|---|---|---|---|
| Agent items | |||||
| eventlog[] | Sim | Sim | Sim | Parâmetros regexp, severity, source, eventid |
|
| eventlog.count[] | Parâmetros regexp, severity, source, eventid |
||||
| log[] | Parâmetro regexp |
||||
| log.count[] | |||||
| logrt[] | Sim/Não | O parâmetro regexp oferece suporte a ambos, o parâmetro file_regexp oferece suporte apenas a expressões não globais |
|||
| logrt.count[] | |||||
| proc.cpu.util[] | Não | Não | Parâmetro cmdline |
||
| proc.get[] | |||||
| proc.mem[] | |||||
| proc.num[] | |||||
| sensor[] | Parâmetros device e sensor no 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[] | Sim | Parâmetro regexp |
|||
| vfs.file.regmatch[] | |||||
| web.page.regexp[] | |||||
| SNMP traps | |||||
| snmptrap[] | Sim | Sim | Não | Parâmetro regexp |
|
| Pré-processamento de valor de item | Sim | Não | Não | Parâmetro pattern |
|
| Funções para triggers/itens calculados | |||||
| count() | Sim | Sim | Sim | Parâmetro pattern se o parâmetro operator for regexp ou iregexp |
|
| countunique() | Sim | Sim | |||
| find() | Sim | Sim | |||
| logeventid() | Sim | Sim | Não | Parâmetro pattern |
|
| logsource() | |||||
| Descoberta de baixo nível | |||||
| Filtros | Sim | Sim | Não | Campo Expressão regular | |
| Substituições | Sim | Não | Nas opções corresponde, não corresponde para condições de Operação | ||
| Condições de ação | Sim | Não | Não | Nas opções corresponde, não corresponde para condições de autorregistro de Nome do host e Metadados do host | |
| Scripts | Sim | Sim | Não | Campo Regra de validação de entrada | |
| Monitoramento web | Sim | Não | Sim | Variáveis com prefixo regex: Campo String obrigatória |
|
| Contexto de macro de usuário | Sim | Não | Não | No contexto de macro com prefixo regex: | |
| Funções de macro | |||||
| regsub() | Sim | Não | Não | Parâmetro pattern |
|
| iregsub() | |||||
| Mapeamento de ícones | Sim | Sim | Não | Campo Expressão | |
| Mapeamento de valores | Sim | Não | Não | Campo Valor se o tipo de mapeamento for regexp |
|