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
In 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:
- Vai a: Administration > General
- Seleziona Regular expressions dal menu a discesa
- Fai 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 da un asterisco rosso.
| Parameter | Description | |
|---|---|---|
| Name | Imposta il nome dell'espressione regolare. Sono consentiti tutti i caratteri Unicode. | |
| Expressions | Fai clic su Add nel blocco Expressions per aggiungere una nuova sottoespressione. | |
| Expression type | Seleziona 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 obliqua (/). 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 | Inserisci la sottostringa/espressione regolare. | |
| Delimiter | Una virgola (,), un punto (.) o una barra obliqua (/) 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 obliqua (/) nell'espressione viene trattata letteralmente, anziché come delimitatore. In questo modo è possibile salvare espressioni contenenti una barra obliqua, senza errori.
Un nome di espressione regolare personalizzata in Zabbix può contenere virgole, spazi, ecc.
Nei casi in cui ciò possa 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à di una regola 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 complessivo dell'espressione personalizzata.
Lo stato complessivo 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 ha 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$

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

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

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 |
|