10 Espressioni regolari

Panoramica

Espressioni regolari compatibili con Perl (PCRE, PCRE2) sono supportati in Zabbix.

Esistono due modi per utilizzare le espressioni regolari in Zabbix:

  • inserendo manualmente un'espressione regolare
  • utilizzando un'espressione regolare globale creata in Zabbix

Espressioni regolari

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

È possibile esaurire lo stack durante l'uso delle espressioni regolari. Per ulteriori informazioni, vedere la pagina man di pcrestack.

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

Vedere anche gli esempi di escaping corretto in vari contesti.

Espressioni regolari globali

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

Una volta creata in questo modo, un'espressione regolare può essere utilizzata in diversi punti del frontend facendo riferimento al suo nome, preceduto da @, ad esempio \@mycustomregexp.

Per creare un'espressione regolare globale:

  • Andare in: Administration → General
  • Selezionare Regular expressions dal menu a discesa
  • Fare clic su New regular expression

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

Tutti i campi di input obbligatori sono contrassegnati con un asterisco rosso.

Parameter Description
Name Impostare il nome dell'espressione regolare. Sono consentiti tutti i caratteri Unicode.
Expressions Fare clic su Add nel blocco Expressions per aggiungere una nuova sottoespressione.
Expression type Selezionare il tipo di espressione:
Character string included - corrisponde alla sottostringa
Any character string included - corrisponde a qualsiasi sottostringa da un elenco delimitato. L'elenco delimitato include una virgola (,), un punto (.) o una barra (/).
Character string not included - corrisponde a qualsiasi stringa tranne la sottostringa
Result is TRUE - corrisponde all'espressione regolare
Result is FALSE - non corrisponde all'espressione regolare
Expression Inserire la sottostringa/espressione regolare.
Delimiter 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 "Any character string included".
Case sensitive Una casella di controllo per specificare se un'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 personalizzato di espressione regolare in Zabbix può contenere virgole, spazi, ecc. In quei casi in cui ciò può portare a un'interpretazione errata durante il riferimento (ad esempio, una virgola nel parametro di una chiave item), l'intero riferimento può essere racchiuso tra virgolette in questo modo: "\@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 l'espressione regolare e le sue sottoespressioni possono essere testate fornendo una stringa di test.

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

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

Espressioni regolari globali predefinite

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

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" oppure "ext2" oppure "ext3" oppure "ext4" oppure "jfs" oppure "reiser" oppure "xfs" oppure "ffs" oppure "ufs" oppure "jfs" oppure "jfs2" oppure "vxfs" oppure "hfs" oppure "refs" oppure "apfs" oppure "ntfs" oppure "fat32" oppure "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 contengono "L" oppure "l", quindi "oop", poi "B" oppure "b", quindi "ack", che può essere seguito facoltativamente da un numero qualsiasi di cifre, punti o caratteri di sottolineatura.
^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" oppure "lo" e sono seguite facoltativamente da un numero qualsiasi di cifre o punti.
^[Ss]ystem$ "System" oppure "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" oppure "Virtual memory" oppure "Memory buffers" oppure "Cached memory" oppure "Swap space"
Windows service names for discovery ^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$ "MMCSS" oppure "gupdate" oppure "SysmonLog" oppure stringhe come "clr_optimization_v2.0.50727_32" e "clr_optimization_v4.0.30319_32" dove al posto dei punti può essere inserito qualsiasi carattere tranne l'a-capo.
Windows service startup states for discovery ^(automatic|automatic delayed)$ "automatic" oppure "automatic delayed"

Esempi

Esempio 1

Uso della seguente espressione nella scoperta di basso livello da scoprire database tranne un database con un nome specifico:

^DATABASEDIPROVA$

regexp\_expr\_2.png

Tipo di espressione scelto: "Il risultato è FALSO". 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 abbinare i caratteri "errore":

(?i)errore

regexp\_expr\_3a.png

Tipo di espressione scelto: "Il risultato è VERO". I caratteri "errore" sono abbinato.

Un altro esempio con un modificatore regex inline

Uso della seguente espressione regolare incluso multiple inline modificatori per abbinare i caratteri dopo una riga specifica:

(?<=match (?i)everything(?-i) after this line\n)(?sx).*# aggiungiamo il modificatore s per consentire . corrispondere ai caratteri di nuova riga

regexp\_expr\_4\_new.png

Tipo di espressione scelto: "Il risultato è VERO". Caratteri dopo uno specifico linea sono abbinati.

::: nota importante Il modificatore g non può essere specificato nella riga. Il l'elenco dei modificatori disponibili può essere trovato in pcresyntax man page. Per ulteriori informazioni sulla sintassi PCRE si prega di fare riferimento a PCRE HTML documentazione.

:::

Supporto delle espressioni regolari per posizione

Posizione Espressione regolare Espressione regolare globale Corrispondenza multilinea Commenti
Item agent
eventlog[] Parametri regexp, severity, source, eventid
eventlog.count[] Parametri regexp, severity, source, eventid
log[] Parametro regexp
log.count[]
logrt[] Sì/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[] Parametro regexp
vfs.file.regmatch[]
web.page.regexp[]
Trap SNMP
snmptrap[] No Parametro regexp
Preelaborazione del valore dell'item No No Parametro pattern
Funzioni per trigger/item calcolati
count() Parametro pattern se il parametro operator è regexp o iregexp
countunique()
find()
logeventid() No Parametro pattern
logsource()
Low-level discovery
Filtri No Campo Espressione regolare
Override No Nelle opzioni corrisponde, non corrisponde per le condizioni di Operazione
Condizioni azione No No Nelle opzioni corrisponde, non corrisponde per le condizioni di autoregistrazione Nome host e Metadati host
Script No Campo Regola di validazione input
Monitoraggio web No Variabili con prefisso regex:
Campo Stringa richiesta
Contesto macro utente No No Nel contesto macro con prefisso regex:
Funzioni macro
regsub() No No Parametro pattern
iregsub()
Indicatori di collegamento nelle mappe No No Campo Pattern (per item di testo)
Mappatura icone No Campo Espressione
Mappatura valori No No Campo Valore se il tipo di mappatura è regexp