12. 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
Puoi inserire manualmente un'espressione regolare nelle posizioni supportate. Nota che l'espressione potrebbe non iniziare con @ perché quel simbolo è usato in Zabbix per fare riferimento a espressioni regolari globali.
È possibile esaurire lo stack quando si utilizzano le espressioni regolari. Vedi pcrestack man page per ulteriori informazioni informazione.
Si noti che nella corrispondenza multilinea, gli ancoraggi ^ e $ corrispondono
rispettivamente inizio/fine di ogni riga, invece dell'inizio/fine di
l'intera stringa.
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 viene fornito con diverse espressioni regolari globali nella sua impostazione predefinita insieme di dati.
| Nome | Espressione | Corrispondenze |
|---|---|---|
| File system per la scoperta | ^(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" |
| Interfacce di rete per il rilevamento | ^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", quindi "B" o "b", quindi "ack", che può essere facoltativamente seguito da qualsiasi numero di cifre, punti o caratteri di sottolineatura. | |
^NULL[0-9.]*$ |
Stringhe che iniziano con "NULL" eventualmente seguito da qualsiasi numero di cifre o punti. | |
^[Ll]o[0-9.]*$ |
Stringhe che iniziano con "Lo" o "lo" e facoltativamente seguite da qualsiasi numero di cifre o punti. | |
^[Ss]ystem$ |
"Sistema" o "sistema" | |
^Nu[0-9.]*$ |
Stringhe che iniziano con "Nu" eventualmente seguito da qualsiasi numero di cifre o punti. | |
| Dispositivi di archiviazione per rilevamento SNMP | ^(Memoria fisica\|Memoria virtuale\|Buffer di memoria\|Memoria cache\|Spazio di scambio)$ |
"Memoria fisica" o "Memoria virtuale" o "Buffer di memoria" o " Memoria cache" o "Scambia spazio" |
| Nomi dei servizi Windows per il rilevamento | ^(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" dove al posto dei punti puoi inserire qualsiasi carattere tranne la nuova riga. |
| Stati di avvio del servizio Windows per il rilevamento | ^(automatico\|automatico ritardato)$ |
"automatico" o "automatico ritardato" |
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 per le espressioni regolari in base alla posizione
| Posizione | Espressione regolare | Espressione regolare globale | Corrispondenza multilinea | Commenti | |
|---|---|---|---|---|---|
| Elementi agente | |||||
| registro eventi[] | Sì | Sì | Sì | 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.mem[] | |||||
| proc.num[] | |||||
| sensor[] | parametri device e sensor su Linux 2.4 |
||||
| system.hw.macaddr[] | parametro interface |
||||
| system.sw.packages[] | parametro pacchetto |
||||
| vfs.dir.count[] | regex_incl, regex_excl, regex_excl_dir parametri |
||||
| vfs.dir.size[] | regex_incl, regex_excl, regex_excl_dir parametri |
||||
| vfs.file.regexp[] | Sì | parametro regexp |
|||
| vfs.file.regmatch[] | |||||
| web.page.regexp[] | |||||
| Trap SNMP | |||||
| snmptrap[] | Sì | Sì | No | parametro regexp |
|
| Preelaborazione valore elemento | Sì | No | No | parametro pattern |
|
| Funzioni per trigger/elementi 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() | |||||
| Scoperta di basso livello | |||||
| Filtri | Sì | Sì | No | Campo espressione regolare | |
| Sostituisce | Sì | No | In corrisponde, non corrisponde alle opzioni per le condizioni di Operazione | ||
| Condizioni azione | Sì | No | No | In corrisponde, non corrisponde alle opzioni per Nome host e Metadati host condizioni di registrazione automatica | |
| Monitoraggio web | Sì | No | Sì | Variabili con prefisso regex: Campo Stringa obbligatoria* |
|
| Contesto macro utente | Sì | No | No | Nel contesto macro con prefisso regex: | |
| Funzioni macro | |||||
| regsub() | Sì | No | No | parametro pattern |
|
| iregsub() | |||||
| Mappatura icone | Sì | Sì | No | Espressione campo | |
| Mappatura valori | Sì | No | No | Campo valore se il tipo di mappatura è regexp |
|