- 2 Preelaborazione del valore dell'articolo
- Panoramica
- Configurazione
- Trasformazioni supportate
- Espressione regolare
- Sostituisci
- Trim
- Eliminazione a destra
- Left trim
- XML XPath
- JSON Path
- Da CSV a JSON
- XML in JSON
- Valore SNMP walk
- SNMP walk in JSON
- Ottieni valore SNMP
- Moltiplicatore personalizzato
- Modifica semplice
- Variazione al secondo
- Boolean to decimal
- Da ottale a decimale
- Da esadecimale a decimale
- JavaScript
- Nell'intervallo
- Corrisponde all'espressione regolare
- Non corrisponde all'espressione regolare
- Verifica della presenza di un errore nel JSON
- Verifica degli errori nell'XML
- Verifica degli errori tramite un'espressione regolare
- Verifica del valore non supportato
- Scarta invariato
- Scarta i valori invariati con heartbeat
- Pattern di Prometheus
- Prometheus in JSON
- Supporto delle macro
- Test
2 Preelaborazione del valore dell'articolo
Panoramica
La preelaborazione consente di applicare trasformazioni ai valori degli item ricevuti prima di salvarli nel database. Queste trasformazioni/fasi di preelaborazione vengono eseguite da Zabbix server o proxy (se gli item sono monitorati dal proxy).
Questa funzionalità supporta una varietà di casi d'uso, ad esempio:
- conversione dei byte in bit (ad esempio, moltiplicando i valori del traffico di rete per "8");
- calcolo di statistiche al secondo per valori incrementali crescenti;
- applicazione di espressioni regolari per estrarre o modificare valori;
- esecuzione di script personalizzati sui valori;
- scarto dei valori invariati per ottimizzare l'archiviazione nel database.
Per un item è possibile configurare una o più fasi di preelaborazione. Queste fasi vengono eseguite nell'ordine in cui sono configurate.
Se una fase di preelaborazione fallisce, un item diventa unsupported.
Questo può essere evitato tramite la gestione degli errori Custom on fail (disponibile per la maggior parte delle trasformazioni), che consente di scartare i valori o impostare valori personalizzati.
Per gli item di log, i metadati del log (senza valore) reimposteranno sempre lo stato unsupported dell'item, rendendolo nuovamente supportato.
Ciò avviene anche se l'errore iniziale si è verificato dopo aver ricevuto un valore di log da agent.
Tutti i valori passati alla preelaborazione vengono inizialmente trattati come stringhe. La conversione nel tipo di valore desiderato (come definito nella configurazione dell'item) viene eseguita alla fine della pipeline di preelaborazione. Tuttavia, specifiche fasi di preelaborazione possono attivare conversioni anticipate, se necessario. Per informazioni tecniche dettagliate, vedere Dettagli della preelaborazione.
Per assicurarti che la configurazione della preelaborazione funzioni come previsto, puoi testarla.
Vedi anche: Esempi di preelaborazione
Configurazione
Le fasi di preprocessing sono definite nella scheda Preprocessing del modulo di configurazione dell'item.

Fai clic su Add per selezionare una trasformazione supportata.
Il campo Type of information viene visualizzato nella parte inferiore della scheda quando è definita almeno una fase di preprocessing. Se necessario, è possibile modificare il tipo di informazione senza uscire dalla scheda Preprocessing. Vedi Creazione di un item per la descrizione dettagliata dei parametri.
Trasformazioni supportate
Di seguito sono elencate tutte le trasformazioni supportate.
Fare clic sul nome della trasformazione per visualizzarne i dettagli completi.
| Name | Description | Type |
|---|---|---|
| Espressione regolare | Confronta il valore con l'espressione regolare e sostituiscilo con l'output richiesto. | Testo |
| Sostituzione | Trova la stringa di ricerca e sostituiscila con un'altra stringa (o con nulla). | |
| Rimozione degli spazi a sinistra e a destra | Rimuove i caratteri specificati dall'inizio e dalla fine del valore. | |
| Rimozione degli spazi a destra | Rimuove i caratteri specificati dalla fine del valore. | |
| Rimozione degli spazi a sinistra | Rimuove i caratteri specificati dall'inizio del valore. | |
| XML XPath | Estrae un valore o un frammento dai dati XML utilizzando la funzionalità XPath. | Dati strutturati |
| JSON Path | Estrae un valore o un frammento dai dati JSON utilizzando la funzionalità JSONPath. | |
| CSV in JSON | Converte i dati di un file CSV nel formato JSON. | |
| XML in JSON | Converte i dati dal formato XML a JSON. | |
| Valore SNMP walk | Estrae il valore in base al nome OID/MIB specificato e applica le opzioni di formattazione. | SNMP |
| SNMP walk in JSON | Converte i valori SNMP in JSON. | |
| Valore SNMP get | Applica le opzioni di formattazione al valore SNMP get. | |
| Moltiplicatore personalizzato | Moltiplica il valore per il valore intero o a virgola mobile specificato. | Aritmetica |
| Modifica semplice | Calcola la differenza tra il valore corrente e quello precedente. | Modifica |
| Modifica al secondo | Calcola la velocità al secondo della variazione del valore (differenza tra il valore corrente e quello precedente). | |
| Booleano in decimale | Converte il valore dal formato booleano al formato decimale. | Sistemi numerici |
| Ottale in decimale | Converte il valore dal formato ottale al formato decimale. | |
| Esadecimale in decimale | Converte il valore dal formato esadecimale al formato decimale. | |
| JavaScript | Inserisce codice JavaScript. | Script personalizzati |
| Nell'intervallo | Definisce l'intervallo in cui deve rientrare un valore. | Convalida |
| Corrisponde all'espressione regolare | Specifica un'espressione regolare a cui deve corrispondere un valore. | |
| Non corrisponde all'espressione regolare | Specifica un'espressione regolare a cui non deve corrispondere un valore. | |
| Verifica degli errori in JSON | Verifica la presenza di un messaggio di errore a livello applicativo individuato tramite JSONPath. | |
| Verifica degli errori in XML | Verifica la presenza di un messaggio di errore a livello applicativo individuato tramite XPath. | |
| Verifica degli errori tramite un'espressione regolare | Verifica la presenza di un messaggio di errore a livello applicativo utilizzando un'espressione regolare. | |
| Verifica del valore non supportato | Verifica se non è stato possibile recuperare alcun valore dell'item. | |
| Ignora se invariato | Ignora un valore se non è cambiato. | Limitazione |
| Ignora se invariato con heartbeat | Ignora un valore se non è cambiato entro il periodo di tempo definito. | |
| Pattern Prometheus | Utilizza la query seguente per estrarre i dati richiesti dalle metriche Prometheus. | Prometheus |
| Prometheus in JSON | Converte le metriche Prometheus richieste in JSON. |
Se la casella di controllo Personalizzato in caso di errore è abilitata per la trasformazione selezionata, è possibile selezionarla e specificare opzioni personalizzate per la gestione degli errori: Ignora valore (ignora il valore), Imposta valore su (imposta un valore specificato) oppure Imposta errore su (imposta un messaggio di errore specificato).
Se un passaggio di pre-elaborazione non riesce, l'item non diventerà non supportato quando è selezionata l'opzione Ignora valore o Imposta valore su.
Per i passaggi di pre-elaborazione Modifica e Limitazione, Zabbix deve ricordare l'ultimo valore per calcolare o confrontare il nuovo valore come richiesto.
Questi valori precedenti vengono gestiti dal gestore della pre-elaborazione.
Se il server Zabbix o il proxy viene riavviato oppure viene apportata una modifica ai passaggi di pre-elaborazione, l'ultimo valore dell'item corrispondente viene reimpostato, con i seguenti risultati:
- per i passaggi Modifica semplice e Modifica al secondo, il valore successivo verrà ignorato perché non esiste alcun valore precedente da cui calcolare la modifica;
- per i passaggi Ignora se invariato e Ignora se invariato con heartbeat, il valore successivo non verrà mai ignorato, anche se avrebbe dovuto esserlo in base alle regole di scarto.
Espressione regolare
Confronta il valore con l'espressione regolare e sostituiscilo con l'output richiesto.
Parametri:
- pattern - l'espressione regolare;
- output - il template di formattazione dell'output. Una sequenza di escape \N (dove N=1…9) viene sostituita con il gruppo corrispondente acquisito. Una sequenza di escape \0 viene sostituita con il testo acquisito.
Commenti:
- Se non viene trovata alcuna corrispondenza con il valore di input, l'item diventerà non supportato;
- L'espressione regolare supporta l'estrazione di un massimo di 10 gruppi acquisiti con la sequenza \N;
- Per alcuni esempi esistenti, consultare la sezione espressioni regolari.
Sostituisci
Trova la stringa di ricerca e sostituiscila con un'altra (oppure con nulla).
Parametri:
- stringa di ricerca - la stringa da trovare e sostituire, con distinzione tra maiuscole e minuscole (obbligatorio);
- sostituzione - la stringa con cui sostituire la stringa di ricerca. La stringa di sostituzione può anche essere vuota, consentendo di fatto di eliminare la stringa di ricerca quando viene trovata.
Commenti:
- Tutte le occorrenze della stringa di ricerca verranno sostituite;
- È possibile usare sequenze di escape per cercare o sostituire interruzioni di riga, ritorno a capo, tabulazioni e spazi "\n \r \t \s"; il backslash può essere sottoposto a escape come "\\" e le sequenze di escape possono essere sottoposte a escape come "\\n";
- L'escape di interruzioni di riga, ritorno a capo e tabulazioni viene eseguito automaticamente durante il low-level discovery.
Trim
Rimuove i caratteri specificati dall'inizio e dalla fine del valore.
Eliminazione a destra
Rimuove i caratteri specificati dalla fine del valore.
Left trim
Rimuove i caratteri specificati dall'inizio del valore.
XML XPath
Estrae un valore o un frammento dai dati XML utilizzando la funzionalità XPath.
Commenti:
- Affinché questa opzione funzioni, Zabbix server (o Zabbix proxy) deve essere compilato con il supporto per libxml;
- Gli spazi dei nomi non sono supportati.
Esempi:
number(/document/item/value) #estrarrà '10' da <document><item><value>10</value></item></document>
number(/document/item/@attribute) #estrarrà '10' da <document><item attribute="10"></item></document>
/document/item #estrarrà '<item><value>10</value></item>' da <document><item><value>10</value></item></document>
JSON Path
Estrai un valore o un frammento dai dati JSON utilizzando la funzionalità JSONPath.
Da CSV a JSON
Converte i dati di un file CSV nel formato JSON.
Per ulteriori informazioni, vedere: Pre-elaborazione da CSV a JSON.
XML in JSON
Converti i dati dal formato XML a JSON.
Per ulteriori informazioni, consulta: Regole di serializzazione.
Valore SNMP walk
Estrae il valore tramite l'OID/nome MIB specificato e applica le opzioni di formattazione:
- Invariato - restituisce la stringa esadecimale come stringa esadecimale non sottoposta a escape (nota che i suggerimenti di visualizzazione vengono comunque applicati);
- UTF-8 da hex-STRING - converte la stringa esadecimale in una stringa UTF-8;
- MAC da hex-STRING - convalida la stringa esadecimale come indirizzo MAC e restituisce una stringa con un indirizzo MAC valido (dove
' 'viene sostituito da':'); - Intero da BITS - converte i primi 8 byte di una stringa di bit espressa come sequenza di caratteri esadecimali (ad esempio, "1A 2B 3C 4D") in un intero senza segno a 64 bit. Nelle stringhe di bit più lunghe di 8 byte, i byte successivi verranno ignorati.
SNMP walk in JSON
Convertire i valori SNMP in JSON.
Specificare un nome di campo nel JSON e il percorso OID SNMP corrispondente. I valori dei campi verranno popolati con i valori del percorso OID SNMP specificato.
Commenti:
- Sono disponibili opzioni di formattazione dei valori simili a quelle del passaggio Valore SNMP walk;
- È possibile utilizzare questo passaggio di pre-elaborazione per il rilevamento degli OID SNMP.
Ottieni valore SNMP
Applica le opzioni di formattazione al valore ottenuto tramite SNMP:
- UTF-8 da Hex-STRING - converte la stringa esadecimale in una stringa UTF-8;
- MAC da Hex-STRING - convalida la stringa esadecimale come indirizzo MAC e restituisce una stringa con un indirizzo MAC valido (dove
' 'viene sostituito da':'); - Intero da BITS - converte i primi 8 byte di una stringa di bit espressa come sequenza di caratteri esadecimali (ad esempio, "1A 2B 3C 4D") in un intero senza segno a 64 bit. Nelle stringhe di bit più lunghe di 8 byte, i byte successivi verranno ignorati.
Moltiplicatore personalizzato
Moltiplica il valore per il valore intero o a virgola mobile specificato.
Commenti:
- Utilizzare questa opzione per convertire i valori ricevuti in KB, MBps, ecc. in B, Bps.
In caso contrario, Zabbix non può impostare correttamente i prefissi (K, M, G, ecc.).
- Si noti che, se il tipo di informazioni dell'item è Numerico (senza segno), i valori in ingresso con una parte frazionaria verranno troncati (ovvero, '0.9' diventerà '0') prima dell'applicazione del moltiplicatore personalizzato;
- Se si utilizza un moltiplicatore personalizzato o si memorizza il valore come Variazione al secondo per gli item con il tipo di informazioni impostato su Numerico (senza segno) e il valore calcolato risultante è effettivamente un numero a virgola mobile, il valore calcolato viene comunque accettato come corretto troncando la parte decimale e memorizzando il valore come intero;
- Supportato: notazione scientifica, ad esempio
1e+70; macro utente e macro LLD; stringhe che includono macro, ad esempio{#MACRO}e+10,{$MACRO1}e+{$MACRO2}. Le macro devono restituire un numero intero o a virgola mobile.
Modifica semplice
Calcola la differenza tra il valore corrente e quello precedente.
Commenti:
- Questo passaggio può essere utile per misurare un valore in costante crescita;
- Viene valutato come value-prev_value, dove value è il valore corrente; prev_value è il valore ricevuto in precedenza;
- È consentita una sola operazione di modifica per item ("Modifica semplice" o "Modifica al secondo");
- Se il valore corrente è inferiore a quello precedente, Zabbix scarta tale differenza (non memorizza nulla) e attende un altro valore.
Variazione al secondo
Calcola la velocità di variazione del valore (differenza tra il valore corrente e quello precedente) al secondo.
Commenti:
- Questo passaggio è utile per calcolare la velocità al secondo di un valore in costante crescita;
- Poiché questo calcolo può produrre numeri in virgola mobile, si consiglia di impostare il campo "Tipo di informazioni" su Numerico (float), anche se i valori grezzi ricevuti sono numeri interi.
Ciò è particolarmente rilevante per i numeri piccoli, per i quali la parte decimale è importante.
Se i valori in virgola mobile sono grandi e possono superare la lunghezza del campo "float", nel qual caso l'intero valore potrebbe andare perso, si consiglia invece di utilizzare Numerico (senza segno), eliminando così solo la parte decimale.
- Valutato come (value-prev_value)/(time-prev_time), dove value è il valore corrente; prev_value è il valore ricevuto in precedenza; time è il timestamp corrente; *prev_time** è il timestamp del valore precedente;
- È consentita una sola operazione di variazione per item ("Variazione semplice" o "Variazione al secondo");
- Se il valore corrente è inferiore a quello precedente, Zabbix scarta tale differenza (non memorizza nulla) e attende un altro valore. Ciò consente di gestire correttamente, ad esempio, il riavvolgimento (overflow) dei contatori SNMP a 32 bit.
Boolean to decimal
Converte il valore dal formato booleano a decimale.
Commenti:
- La rappresentazione testuale viene convertita in 0 o 1. Pertanto, 'TRUE' viene memorizzato come 1 e 'FALSE' viene memorizzato come 0. Tutti i valori vengono confrontati senza distinzione tra maiuscole e minuscole. I valori attualmente riconosciuti sono, per TRUE: true, t, yes, y, on, up, running, enabled, available, ok, master; per FALSE: false, f, no, n, off, down, unused, disabled, unavailable, err, slave. Inoltre, qualsiasi valore numerico diverso da zero viene considerato TRUE, mentre zero viene considerato FALSE.
Da ottale a decimale
Converte il valore dal formato ottale a quello decimale.
Da esadecimale a decimale
Converte il valore dal formato esadecimale a decimale.
JavaScript
Inserire il codice JavaScript nell'editor modale che si apre facendo clic nel campo del parametro o sull'icona della matita accanto ad esso.
Non utilizzare assegnazioni non dichiarate nel JavaScript di preprocessing.
Usare var per dichiarare le variabili locali.
Commenti:
- La lunghezza disponibile per JavaScript dipende dal database utilizzato;
- Per ulteriori informazioni, vedere: Preprocessing JavaScript.
Nell'intervallo
Definire un intervallo in cui deve rientrare un valore specificando i valori minimo/massimo (inclusi).
Commenti:
- Sono accettati valori numerici (incluso qualsiasi numero di cifre, una parte decimale facoltativa e una parte esponenziale facoltativa, valori negativi);
- Il valore minimo deve essere inferiore al massimo;
- Deve essere presente almeno un valore;
- È possibile utilizzare macro utente e macro di low-level discovery.
Corrisponde all'espressione regolare
Specifica un'espressione regolare a cui deve corrispondere un valore.
Non corrisponde all'espressione regolare
Specificare un'espressione regolare a cui il valore non deve corrispondere.
Verifica della presenza di un errore nel JSON
Verifica la presenza di un messaggio di errore a livello applicativo situato nel JSONPath.
Interrompe l'elaborazione se l'operazione ha esito positivo e il messaggio non è vuoto; in caso contrario, continua l'elaborazione con il valore precedente a questo passaggio di pre-elaborazione.
Commenti:
- Questi errori del servizio esterno vengono segnalati all'utente così come sono, senza aggiungere informazioni sul passaggio di pre-elaborazione;
- Non viene segnalato alcun errore se non è possibile analizzare JSON non valido.
Verifica degli errori nell'XML
Verifica la presenza di un messaggio di errore a livello applicativo situato nel percorso XPath.
Interrompe l'elaborazione se l'operazione ha esito positivo e il messaggio non è vuoto; in caso contrario, continua l'elaborazione con il valore precedente a questo passaggio di pre-elaborazione.
Commenti:
- Questi errori del servizio esterno vengono segnalati all'utente così come sono, senza aggiungere informazioni sul passaggio di pre-elaborazione;
- Non viene segnalato alcun errore se non è possibile analizzare XML non valido.
Verifica degli errori tramite un'espressione regolare
Verifica la presenza di un messaggio di errore a livello applicazione tramite un'espressione regolare.
Interrompe l'elaborazione se la verifica ha esito positivo e il messaggio non è vuoto; in caso contrario, continua l'elaborazione con il valore precedente a questo passaggio di pre-elaborazione.
Parametri:
- pattern - l'espressione regolare;
- output - il template di formattazione dell'output. Una sequenza di escape \N (dove N=1…9) viene sostituita con il gruppo corrispondente trovato. Una sequenza di escape \0 viene sostituita con il testo trovato.
Commenti:
- Questi errori del servizio esterno vengono segnalati all'utente così come sono, senza aggiungere informazioni sul passaggio di pre-elaborazione.
Verifica del valore non supportato
Verifica se non è stato possibile recuperare alcun valore dell'item. Specifica come elaborare l'errore in base all'analisi del messaggio di errore restituito.
Parametri:
- scope - seleziona l'ambito dell'elaborazione dell'errore:
any error - qualsiasi errore;
error matches - solo l'errore che corrisponde all'espressione regolare specificata in pattern;
error does not match - solo l'errore che non corrisponde all'espressione regolare specificata in pattern - pattern - l'espressione regolare con cui confrontare l'errore.
Se nel parametro scope è selezionato any error, questo campo non viene visualizzato.
Se visualizzato, questo campo è obbligatorio.
Commenti:
- Normalmente, l'assenza di un valore o l'impossibilità di recuperarlo farebbe diventare l'item non supportato. Questo passaggio di pre-elaborazione consente di modificare questo comportamento.
- Questo passaggio di pre-elaborazione verifica solo se non è stato possibile recuperare alcun valore dell'item. Non verifica, ad esempio, se il tipo del valore recuperato (ad esempio, stringa) corrisponde al tipo di informazione dell'item (ad esempio, numerico); per i dettagli, vedere Esempi di pre-elaborazione. In caso di mancata corrispondenza dei tipi, l'item potrebbe comunque diventare non supportato dopo l'esecuzione di tutti i passaggi di pre-elaborazione. Per verificare una mancata corrispondenza dei tipi, è possibile utilizzare, ad esempio, il passaggio di pre-elaborazione Moltiplicatore personalizzato; vedere Esempi di pre-elaborazione.
- I gruppi di espressioni regolari acquisiti sono supportati nei campi Set value to o Set error to. Utilizzare \N (dove N=1…9) per recuperare l'N-esimo gruppo corrispondente; utilizzare \0 per recuperare il testo corrispondente;
- Questi passaggi vengono sempre eseguiti come primi passaggi di pre-elaborazione e vengono posizionati sopra tutti gli altri dopo il salvataggio delle modifiche all'item;
- Sono supportati più passaggi Verifica del valore non supportato, nell'ordine specificato. Un passaggio per any error verrà posizionato automaticamente come ultimo passaggio di questo gruppo.
Scarta invariato
Scarta un valore se non è cambiato.
Commenti:
- Se un valore viene scartato, non viene salvato nel database e Zabbix server non ha alcuna conoscenza del fatto che questo valore sia stato ricevuto.
Non verrà valutata alcuna espressione di trigger e, di conseguenza, non verranno creati/risolti problemi per i trigger correlati.
Le funzioni funzioneranno solo in base ai dati effettivamente salvati nel database.
Poiché i trend vengono costruiti in base ai dati nel database, se per un'ora non viene salvato alcun valore, non ci saranno dati di trend nemmeno per quell'ora.
- È possibile specificare una sola opzione di limitazione per item.
Scarta i valori invariati con heartbeat
Scarta un valore se non è cambiato entro il periodo di tempo definito (in secondi).
Commenti:
- Sono supportati valori interi positivi per specificare i secondi (minimo: 1 secondo);
- È possibile utilizzare i suffissi temporali (ad esempio,
30s,1m,2h,1d);
- È possibile utilizzare macro utente e macro di low-level discovery;
- Se un valore viene scartato, non viene salvato nel database e Zabbix server non è a conoscenza del fatto che questo valore sia stato ricevuto.
Non verrà valutata alcuna espressione di trigger e, di conseguenza, non verranno creati o risolti problemi per i trigger correlati.
Le funzioni funzioneranno solo in base ai dati effettivamente salvati nel database.
Poiché i trend vengono creati in base ai dati presenti nel database, se per un'ora non viene salvato alcun valore, non saranno disponibili nemmeno i dati dei trend per quell'ora.
- È possibile specificare una sola opzione di limitazione per item.
Pattern di Prometheus
Usa la seguente query per estrarre i dati richiesti dalle metriche di Prometheus.
Vedi Controlli Prometheus per maggiori dettagli.
Prometheus in JSON
Converti le metriche Prometheus richieste in JSON.
Vedi Prometheus checks per maggiori dettagli.
Supporto delle macro
Le macro utente e le macro utente con contesto sono supportate in:
- parametri dei passaggi di preprocessing, incluso il codice JavaScript;
- parametri personalizzati di gestione degli errori (campi Imposta valore a e Imposta errore a).
Il contesto della macro viene ignorato quando una macro viene sostituita con il suo valore. Il valore della macro viene inserito nel codice così com'è; non è possibile aggiungere un escaping aggiuntivo prima di inserire il valore nel codice JavaScript. Si noti che in alcuni casi ciò può causare errori JavaScript.
Test
Vedere test di preprocessing.