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
C'è un editor avanzato per la creazione e il test delle espressioni regolari complesse nel frontend di Zabbix.
Una volta che un'espressione regolare è stata creata in questo modo, può essere utilizzata in diversi posti nel frontend facendo riferimento al suo nome, preceduto da @, ad esempio, \@mycustomregexp.
Per creare un'espressione regolare globale:
- Vai a: Amministrazione → Generale
- Seleziona Espressioni regolari dal menu a discesa
- Clicca 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 | |
|---|---|---|
| Name | Imposta il nome dell'espressione regolare. Sono consentiti tutti i caratteri Unicode. | |
| Espressioni | Clicca su Aggiungi nel blocco Espressioni per aggiungere una nuova sottoespressione. | |
| Tipo di espressione | Seleziona il tipo di espressione: Stringa di caratteri inclusa - corrisponde alla sottostringa Qualsiasi stringa di caratteri inclusa - corrisponde a qualsiasi sottostringa da un elenco delimitato. L'elenco delimitato include una virgola (,), un punto (.) o una barra (/). Stringa di caratteri non inclusa: corrisponde a qualsiasi stringa tranne la sottostringa Il risultato è VERO - corrisponde all'espressione regolare Il risultato è FALSO** - non corrisponde all'espressione regolare |
|
| Espressione | Inserisci 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". | |
| Case sensitive | Una casella di controllo per specificare se un'espressione regolare è sensibile all'uso delle lettere maiuscole. | |
Una barra (/) nell'espressione viene trattata letteralmente, piuttosto che un delimitatore. In questo modo è possibile salvare espressioni contenenti a barra, senza errori.
::: nota importante
Un nome di espressione regolare personalizzato in Zabbix potrebbe
contenere virgole, spazi, ecc. Nei casi in cui ciò può portare a
interpretazione errata quando si fa riferimento (ad esempio, una virgola nel file
parametro di una chiave di elemento) l'intero riferimento può essere messo tra virgolette come
this: "\@My custom regexp for purpose1, purpose2".
I nomi delle espressioni regolari non devono essere racchiusi tra virgolette in altre posizioni (ad es
esempio, nelle proprietà della regola LLD).
:::
Nella scheda Test l'espressione regolare e le sue sottoespressioni possono essere testato fornendo una stringa di prova.

I risultati mostrano lo stato di ciascuna sottoespressione e il totale personalizzato stato di espressione.
Lo stato dell'espressione personalizzata totale è definito come Risultato combinato. Se diverse sottoespressioni sono definite Zabbix usa l'operatore logico AND to calcolare Risultato combinato. Significa che se almeno un Risultato è Anche False Risultato combinato ha lo 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$

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

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

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[] | 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[] | |||||
| Trap SNMP | |||||
| snmptrap[] | Sì | Sì | No | Parametro regexp |
|
| Preelaborazione 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 di Operazione | ||
| Condizioni azione | 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 validazione 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 item di testo) | |
| Mappatura icone | Sì | Sì | No | Campo Espressione | |
| Mappatura valori | Sì | No | No | Campo Valore se il tipo di mappatura è regexp |
|