- 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 degli errori 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
I passaggi di pre-elaborazione sono definiti nella scheda Preprocessing del modulo di configurazione dell'item.

Fare clic su Add per selezionare una trasformazione supportata.
Il campo Type of information viene visualizzato nella parte inferiore della scheda quando è definito almeno un passaggio di pre-elaborazione. Se necessario, è possibile modificare il tipo di informazioni senza uscire dalla scheda Preprocessing. Per una descrizione dettagliata dei parametri, vedere Creazione di un item.
Trasformazioni supportate
Di seguito sono elencate tutte le trasformazioni supportate.
Fare clic sul nome della trasformazione per visualizzarne i dettagli.
| Nome | Descrizione | Tipo |
|---|---|---|
| Espressione regolare | Confronta il valore con l'espressione regolare e lo sostituisce con l'output richiesto. | Testo |
| Sostituzione | Trova la stringa di ricerca e la sostituisce con un'altra stringa (o con nulla). | |
| Rimozione iniziale e finale | Rimuove i caratteri specificati dall'inizio e dalla fine del valore. | |
| Rimozione finale | Rimuove i caratteri specificati dalla fine del valore. | |
| Rimozione iniziale | 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 in formato XML in JSON. | |
| Valore SNMP walk | Estrae il valore tramite il 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à di variazione del valore (differenza tra il valore corrente e quello precedente) al secondo. | |
| 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 un intervallo in cui deve rientrare il valore. | Convalida |
| Corrisponde all'espressione regolare | Specifica un'espressione regolare a cui il valore deve corrispondere. | |
| Non corrisponde all'espressione regolare | Specifica un'espressione regolare a cui il valore non deve corrispondere. | |
| Verifica la presenza di un errore in JSON | Verifica la presenza di un messaggio di errore a livello applicativo individuato tramite JSONPath. | |
| Verifica la presenza di un errore in XML | Verifica la presenza di un messaggio di errore a livello applicativo individuato tramite XPath. | |
| Verifica la presenza di un errore tramite un'espressione regolare | Verifica la presenza di un messaggio di errore a livello applicativo tramite un'espressione regolare. | |
| Verifica la presenza di un 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 memorizzare 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 vengono apportate modifiche 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 un 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 dovrebbe esserlo in base alle regole di eliminazione.
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 corrispondente.
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;
- Consultare la sezione espressioni regolari per alcuni esempi esistenti.
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) #estrae '10' da <document><item><value>10</value></item></document>
number(/document/item/@attribute) #estrae '10' da <document><item attribute="10"></item></document>
/document/item #estrae '<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
Convertire i dati dal formato XML a JSON.
Per ulteriori informazioni, vedere: 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 STRING esadecimale - converte la stringa esadecimale in una stringa UTF-8;
- MAC da STRING esadecimale - convalida la stringa esadecimale come indirizzo MAC e restituisce una stringa con un indirizzo MAC corretto (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
Converti i valori SNMP in JSON.
Specifica 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;
- Puoi 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.).
- Tenere presente che, se il tipo di informazioni dell'item è Numeric (unsigned), 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 Change per second per gli item con il tipo di informazioni impostato su Numeric (unsigned) 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;
- Supportati: 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 in ingresso 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), in modo da eliminare 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 funzionare correttamente, ad esempio, con il riavvolgimento (overflow) dei contatori SNMP a 32 bit.
Boolean to decimal
Converte il valore dal formato booleano al formato 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 (con un numero qualsiasi di cifre, parte decimale facoltativa e 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 degli errori 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 nel caso in cui non sia 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. Interrompi 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 verrà segnalato alcun errore in caso di mancata analisi di un XML non valido.
Verifica degli errori tramite un'espressione regolare
Verifica la presenza di un messaggio di errore a livello applicativo tramite un'espressione regolare.
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.
Parametri:
- pattern - l'espressione regolare;
- output - il template di formattazione dell'output.
La sequenza di escape \N (dove N=1…9) viene sostituita con il gruppo corrispondente.
La sequenza di escape \0 viene sostituita con il testo corrispondente.
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'ispezione 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 informazioni 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 Custom multiplier; vedere Esempi di pre-elaborazione.
- L'acquisizione dei gruppi dell'espressione regolare è supportata 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, dopo il salvataggio delle modifiche all'item, vengono posizionati sopra tutti gli altri;
- Sono supportati più passaggi Check for not supported value, 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.