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$

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