Esta é uma tradução da página de documentação original em inglês. Ajude-nos a torná-la melhor.

12. Expressões regulares

Visão geral

Expressões regulares compatíveis com Perl (PCRE, PCRE2) são suportadas no Zabbix.

Há dois modos de usar expressões regulares no Zabbix:

  • informando manualmente uma expressão regular
  • usando uma expressão regular global criada no Zabbix

Expressões regulares

Você pode informar manualmente uma expressão regular nos locais suportados. Note que a expressão pode não começar com @ porque esse símbolo é usado no Zabbix para referenciar expressões regulares globais.

É possível ficar sem stack quando usando expressões regulares. Consulte a página de manual pcrestack para mais informações.

Note que em correspondência multilinear, as âncoras ^ e $ correspondem ao início/fim de cada linha respectivamente, em vez do início/fim da string completa.

Expressões regulares globais

Há um editor avançado para criação e teste de expressões regulares complexas no Zabbix Frontend.

Uma vez que uma expressão regular é criada desta forma, ela pode ser usada em vários locais no Frontend referenciando seu nome, prefixado com @, por exemplo, @meuregexcustomizado.

Para criar uma expressão regular global:

  • Vá até: Administração → Geral
  • Selecione Expressões regulares da lista suspensa
  • Clique em Nova expressão regular

A aba Expressões permite definir o nome da expressão regular e adicionar subexpressões.

Todos os campos de entrada obrigatórios estão marcados com um asterisco vermelho.

Parâmetro Descrição
Nome Defina o nome da expressão regular. Quaisquer caracteres Unicode são permitidos.
Expressões Clique em Adicionar no bloco Expressões para adicionar uma nova subexpressão.
Tipo de expressão Selecione o tipo de expressão:
String de caractere inclusa - corresponde a substring
Qualquer string de caractere inclusa - corresponde qualquer substring de uma lista delimitada. A lista delimitada inclui uma vírgula (,), um ponto (.) ou uma barra (/).
String de caractere não inclusa - corresponde qualquer string exceto a substring
Resultado é VERDADEIRO - corresponde a expressão regular
Resultado é FALSO - não corresponde à expressão regular
Expressão Informe substring/expressão regular.
Delimitador Uma vírgula (,), um ponto (.) ou uma barra (/) para separar strings de texto em uma expressão regular. Este parâmetro está ativo apenas quando o tipo de expressão "Qualquer string de caractere inclusa" estiver selecionado.
Sensível a maiúsculas/minúsculas Uma caixa de seleção para especificar se uma expressão regular é sensível à capitalização de letras.

Uma barra (/) na expressão é tratada literalmente, em vez de um delimitador. Desta forma é possível salvar expressões contendo uma barra, sem erros.

Um nome de expressão regular customizada no Zabbix pode conter vírgulas, espaços, etc. Nos casos onde isto pode incorrer em má interpretação quando referenciando (por exemplo, uma vírgula no parâmetro de uma chave de item) a referência completo pode ser colocada entre quotas da seguinte forma: "@Meu regex customizado para objetivo1, objetivo2".
Nomes de expressão regular não devem ser quotados em outros locais (por exemplo, em propriedades de regra LLD).

Na aba Teste a expressão regular e suas subexpressões pode ser testadas pelo fornecimento de uma string de teste.

Os resultados mostram e estado de cada subexpressão e o estado da expressão customizada total.

O estado de expressão customizada total é definido como Resultado combinado. Se várias subexpressões são definidas o Zabbix usa o operador lógico AND para calcular o Resultado combinado. Isto significa que se ao menor um Resultado for Falso, o Resultado combinado também terá um estado Falso.

Expressões regulares globais padrão

O Zabbix vem com várias expressões regulares globais em seu conjunto de dados padrão.

Nome Expressão Correspondências
Descoberta de sistemas de arquivo ^(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"
Interfaces de rede para descoberta ^Software Loopback Interface Strings começando com "Software Loopback Interface".
^lo$ "lo"
^(In)?[Ll]oop[Bb]ack[0-9._]*$ Strings que opcionalmente começam com "In", e então têm "L" ou "l", então "oop", então "B" ou "b", então "ack", que pode ser opcionalmente seguido por qualquer número de dígitos, pontos ou sublinhas.
^NULL[0-9.]*$ Strings começando com "NULL" opcionalmente seguidas por qualquer número de dígitos ou pontos.
^[Ll]o[0-9.]*$ Strings começando com "Lo" ou "lo" e opcionalmente seguidas por qualquer número de dígitos ou pontos.
^[Ss]ystem$ "System" ou "system"
^Nu[0-9.]*$ Strings começando com "Nu" opcionalmente seguidas por qualquer número de dígitos ou pontos.
Dispositivos de armazenamento para descoberta SNMP ^(Physical memory\|Virtual memory\|Memory buffers\|Cached memory\|Swap space)$ "Physical memory (Memória física)" ou "Virtual memory (Memória virtual)" ou "Memory buffers (Buffers de memória)" ou "Cached memory (Memória em cache)" ou "Swap space (Memória de troca)"
Nomes de serviço Windows para descoberta ^(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" onde em vez de pontos você pode colocar qualquer caractere exceto nova linha.
Estado de início de serviço Windows para descoberta ^(automatic\|automatic delayed)$ "automatic (automático)" ou "automatic delayed (automático com atraso)"

Exemplos

Exemplo 1

Uso da seguinte expressão em descoberta de baixo-nível para descobrir bancos de dados, exceto um banco de dados com um nome específico:

^TESTDATABASE$

regexp_expr_2.png

Tipo de expressão escolhido: "Resultado é FALSO". Não corresponde ao nome, contendo string "TESTDATABASE".

Exemplo com um modificador regex em linha

Uso da seguinte expressão regular incluindo um modificador em linha (?i) para corresponder os caracteres "erro":

(?i)erro

regexp_expr_3a.png

Tipo de expressão escolhido: "Resultado é VERDADEIRO". Os caracteres "erro" são correspondidos.

Outro exemplo com um modificador regex em linha

Uso da seguinte expressão regular incluindo múltiplos modificadores em linha para corresponder aos caracteres após uma linha específica:

(?<=testar (?i)tudo(?-i) apos esta linha\n)(?sx).*# nós adicionamos o modificador s para permitir . corresponder a caracteres de nova linha

regexp_expr_4_new.png

Tipo de expressão escolhido: "Resultado é VERDADEIRO". Os caracteres após uma linha específica são correspondidos.

O modificador g não pode ser especificado em linha. A lista de modificadores disponíveis pode ser encontrada na página de manual pcresyntax. Para mais informações sobre a sintaxe PCRE, por favor consulte a documentação HTML PCRE.

Suporte a expressão regular por localização

Localização Expressão regular Expressão regular global Comentários
Itens do Agent
eventlog[] Sim Sim parâmetros regexp, severity, source, eventid
log[] parâmetro regexp
log.count[]
logrt[] Sim/Não parâmetro regexp suporta ambos, parâmetro file_regexp suporta apenas expressões não-globais
logrt.count[]
proc.cpu.util[] Não parâmetro cmdline
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 package
vfs.dir.count[] parâmetros regex_incl, regex_excl, regex_excl_dir
vfs.dir.size[] parâmetros regex_incl, regex_excl, regex_excl_dir
vfs.file.regexp[] parâmetro regexp
vfs.file.regmatch[]
web.page.regexp[]
SNMP traps
snmptrap[] Sim Sim parâmetro regexp
Pré-processamento de valor de item Sim Não parâmetro pattern
Funções para itens de gatilho/calculados
count() Sim Sim parâmetro pattern se parâmetro operator é regexp ou iregexp
countunique() Sim Sim
find() Sim Sim
logeventid() Sim Sim parâmetro pattern
logsource()
Descoberta de baixo-nível
Filters (filtra) Sim Sim Campo Expressão regular
Overrides (sobrescreve) Sim Não Nas opções corresponde (matches), não corresponde (does not match) para condições Operação
Condições de ação Sim Não Nas opções corresponde (matches), não corresponde (does not match) para condições de autoregistro Nome do host (Host name) e Metadados do host (Host metadata)
Monitoramento web Sim Não Variáveis com um prefixo regex:
Campo String requerida
Contexto de macro de usuário Sim Não Em contexto de macro com um prefixo regex:
Funções de macro
regsub() Sim Não parâmetro pattern
iregsub()
Mapeamento de ícone Sim Sim Campo Expressão
Mapeamento de valor Sim Não Campo Valor se o tipo de mapeamento é regexp