12 Espressioni regolari

Panoramica

Perl Compatible Regular Expressions (PCRE, PCRE2) sono supportate in Zabbix.

Esistono due modi per usare le espressioni regolari in Zabbix:

  • inserire manualmente un'espressione regolare
  • usare un'espressione regolare globale creata in Zabbix

Espressioni regolari

È possibile inserire manualmente un'espressione regolare nei punti supportati. Si noti che l'espressione non può iniziare con @ perché quel simbolo viene usato in Zabbix per fare riferimento alle espressioni regolari globali.

È possibile esaurire la memoria dello stack quando si usano espressioni regolari. Per ulteriori informazioni, vedere PCRE PERFORMANCE.

Si noti che, nella corrispondenza multilinea, gli ancoraggi ^ e $ corrispondono rispettivamente all'inizio/fine di ogni riga, invece che all'inizio/fine dell'intera stringa.

Vedere anche gli esempi di escaping corretto in vari contesti.

Espressioni regolari globali

Nel frontend Zabbix è disponibile un editor avanzato per creare e testare espressioni regolari complesse.

Dopo aver creato un'espressione regolare in questo modo, è possibile utilizzarla in diversi punti del frontend facendo riferimento al suo nome, preceduto da @, ad esempio @mycustomregexp.

Per creare un'espressione regolare globale:

  • Vai a: Amministrazione > Generale
  • Seleziona Espressioni regolari dall'elenco a discesa
  • Fai clic su Nuova espressione regolare

La scheda Espressioni consente di impostare il nome dell'espressione regolare e aggiungere sottoespressioni.

Tutti i campi obbligatori sono contrassegnati da un asterisco rosso.

Parametro Descrizione
Nome Imposta il nome dell'espressione regolare. Sono consentiti tutti i caratteri Unicode.
Espressioni Fai clic su Aggiungi nel blocco Espressioni per aggiungere una nuova sottoespressione.
Tipo di espressione Seleziona il tipo di espressione:
Stringa di caratteri inclusa - trova la sottostringa
Qualsiasi stringa di caratteri inclusa - trova una qualsiasi sottostringa da un elenco delimitato. L'elenco delimitato include una virgola (,), un punto (.) o una barra (.).
Stringa di caratteri non inclusa - trova qualsiasi stringa tranne la sottostringa
Il risultato è TRUE - trova l'espressione regolare
Il risultato è FALSE - non trova l'espressione regolare
Espressione Inserisci la sottostringa/espressione regolare.
Delimitatore Una virgola (,), un punto (.) o una barra (/) per separare le stringhe di testo in un'espressione regolare. Questo parametro è attivo solo quando è selezionato il tipo di espressione "Qualsiasi stringa di caratteri inclusa".
Maiuscole/minuscole Una casella di controllo per specificare se l'espressione regolare distingue tra maiuscole e minuscole.

Una barra (/) nell'espressione viene trattata letteralmente, anziché come delimitatore. In questo modo è possibile salvare espressioni contenenti una barra senza errori.

Un nome di espressione regolare personalizzata in Zabbix può contenere virgole, spazi e così via. Nei casi in cui ciò potrebbe causare un'interpretazione errata durante il riferimento, ad esempio una virgola nel parametro di una chiave item, è possibile racchiudere l'intero riferimento tra virgolette, come segue: "@My custom regexp for purpose1, purpose2".
I nomi delle espressioni regolari non devono essere racchiusi tra virgolette in altre posizioni, ad esempio nelle proprietà delle regole LLD.

Nella scheda Test è possibile testare l'espressione regolare e le relative sottoespressioni fornendo una stringa di test.

I risultati mostrano lo stato di ogni sottoespressione e lo stato totale dell'espressione personalizzata.

Lo stato totale dell'espressione personalizzata è definito come Risultato combinato. Se sono definite più sottoespressioni, Zabbix utilizza l'operatore logico AND per calcolare il Risultato combinato. Ciò significa che, se almeno un risultato è False, anche il Risultato combinato avrà lo stato False.

Espressioni regolari globali predefinite

Zabbix include diverse espressioni regolari globali nel proprio set di dati predefinito.

Nome Espressione Corrispondenze
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 Stringhe che iniziano con "Software Loopback Interface".
^lo$ "lo"
^(In)?[Ll]oop[Bb]ack[0-9._]*$ Stringhe che iniziano facoltativamente con "In", poi hanno "L" o "l", quindi "oop", poi "B" o "b", quindi "ack", seguite facoltativamente da un numero qualsiasi di cifre, punti o underscore.
^NULL[0-9.]*$ Stringhe che iniziano con "NULL" seguite facoltativamente da un numero qualsiasi di cifre o punti.
^[Ll]o[0-9.]*$ Stringhe che iniziano con "Lo" o "lo" e sono seguite facoltativamente da un numero qualsiasi di cifre o punti.
^[Ss]ystem$ "System" o "system"
^Nu[0-9.]*$ Stringhe che iniziano con "Nu" seguite facoltativamente da un numero qualsiasi di cifre o punti.
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 stringhe come "clr_optimization_v2.0.50727_32" e "clr_optimization_v4.0.30319_32" in cui, al posto dei punti, puoi inserire qualsiasi carattere tranne il ritorno a capo.
Windows service startup states for discovery ^(automatic|automatic delayed)$ "automatic" o "automatic delayed"

Esempi

Esempio 1

Uso della seguente espressione nella discovery a basso livello per individuare database, ad eccezione di un database con un nome specifico:

^TESTDATABASE$

regexp\_expr\_2.png

Tipo di espressione scelto: "Il risultato è FALSE". Non corrisponde al nome, contenente la stringa "TESTDATABASE".

Esempio con un modificatore regex inline

Uso della seguente espressione regolare, incluso un modificatore inline (?i), per corrispondere ai caratteri "error":

(?i)error

regexp\_expr\_3a.png

Tipo di espressione scelto: "Il risultato è TRUE". I caratteri "error" corrispondono.

Un altro esempio con un modificatore regex inline

Uso della seguente espressione regolare, che include più modificatori inline, per corrispondere ai caratteri dopo una riga specifica:

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

regexp\_expr\_4\_new.png

Tipo di espressione scelto: "Result is TRUE". I caratteri dopo una riga specifica vengono corrisposti.

Il modificatore g non può essere specificato in linea. L'elenco dei modificatori disponibili è disponibile nella pagina man pcresyntax. Per ulteriori informazioni sulla sintassi PCRE, fare riferimento alla documentazione HTML PCRE.

Supporto delle espressioni regolari per posizione

Posizione Espressione regolare Espressione regolare globale Corrispondenza multilinea Commenti
Item agent
eventlog[] Yes Yes Yes parametri regexp, severity, source, eventid
eventlog.count[] parametri regexp, severity, source, eventid
log[] parametro regexp
log.count[]
logrt[] Yes/No il parametro regexp supporta entrambi, il parametro file_regexp supporta solo espressioni non globali
logrt.count[]
proc.cpu.util[] No No parametro cmdline
proc.get[]
proc.mem[]
proc.num[]
sensor[] parametri device e sensor su Linux 2.4
system.hw.macaddr[] parametro interface
system.sw.packages[] parametro regexp
system.sw.packages.get[] parametro regexp
vfs.dir.count[] parametri regex_incl, regex_excl, regex_excl_dir
vfs.dir.get[] parametri regex_incl, regex_excl, regex_excl_dir
vfs.dir.size[] parametri regex_incl, regex_excl, regex_excl_dir
vfs.file.regexp[] Yes parametro regexp
vfs.file.regmatch[]
web.page.regexp[]
SNMP traps
snmptrap[] Yes Yes No parametro regexp
Preprocessing del valore dell'item Yes No No parametro pattern
Funzioni per trigger/item calcolati
count() Yes Yes Yes parametro pattern se il parametro operator è regexp o iregexp
countunique() Yes Yes
find() Yes Yes
logeventid() Yes Yes No parametro pattern
logsource()
Low-level discovery
Filters Yes Yes No campo Regular expression
Overrides Yes No nelle opzioni matches, does not match per le condizioni Operation
Action conditions Yes No No nelle opzioni matches, does not match per le condizioni di autoregistrazione Host name e Host metadata
Scripts Yes Yes No campo Input validation rule
Web monitoring Yes No Yes Variables con prefisso regex:
campo Required string
Contesto macro utente Yes No No nel contesto macro con prefisso regex:
Macro functions
regsub() Yes No No parametro pattern
iregsub()
Indicatori di collegamento nelle mappe Yes No No campo Pattern (per gli item di testo)
Mappatura icone Yes Yes No campo Expression
Mappatura valori Yes No No campo Value se il tipo di mapping è regexp