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 è 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 su 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 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 in modo letterale, 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 di 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.
| 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" 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", e che possono essere 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, è possibile inserire qualsiasi carattere tranne il newline. |
| 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, inclusa un modificatore inline (?i), per corrispondere ai caratteri "error":
(?i)error

Tipo di espressione selezionato: "Result is 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 di pcresyntax. Per ulteriori informazioni sulla sintassi PCRE, fare riferimento alla documentazione HTML di PCRE.
Supporto delle espressioni regolari per posizione
| Posizione | Espressione regolare | Espressione regolare globale | Corrispondenza multilinea | Commenti | |
|---|---|---|---|---|---|
| Elementi agent | |||||
| eventlog[] | Sì | Sì | Sì | 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[] | Sì | parametro regexp |
|||
| vfs.file.regmatch[] | |||||
| web.page.regexp[] | |||||
| SNMP traps | |||||
| snmptrap[] | Sì | Sì | No | parametro regexp |
|
| Preprocessing del valore dell'item | Sì | No | No | parametro pattern |
|
| Funzioni per trigger/item calcolati | |||||
| count() | Sì | Sì | Sì | parametro pattern se il parametro operator è regexp o iregexp |
|
| countunique() | Sì | Sì | |||
| find() | Sì | Sì | |||
| logeventid() | Sì | Sì | No | parametro pattern |
|
| logsource() | |||||
| Low-level discovery | |||||
| Filtri | Sì | Sì | No | campo Espressione regolare | |
| Override | Sì | No | nelle opzioni corrisponde, non corrisponde per le condizioni Operazione | ||
| Condizioni delle azioni | Sì | No | No | nelle opzioni corrisponde, non corrisponde per le condizioni di autoregistrazione Nome host e Metadati host | |
| Script | Sì | Sì | No | campo Regola di convalida input | |
| Monitoraggio web | Sì | No | Sì | Variabili con prefisso regex: campo Stringa richiesta |
|
| Contesto macro utente | Sì | No | No | nel contesto macro con prefisso regex: | |
| Funzioni macro | |||||
| regsub() | Sì | No | No | parametro pattern |
|
| iregsub() | |||||
| Indicatori di collegamento nelle mappe | Sì | No | No | campo Pattern (per elementi di testo) | |
| Mappatura icone | Sì | Sì | No | campo Espressione | |
| Mappatura valori | Sì | No | No | campo Valore se il tipo di mappatura è regexp |
|
| Parametri di configurazione dell'agent | |||||
| AllowKeyRegexp | Sì | No | No | Pattern | |
| DenyKeyRegexp | |||||