- 7 Elementi calcolati
- Panoramica
- Campi configurabili
- Formula di calcolo semplice
- Aggregazioni dei dati
- Esempi di item calcolati
- (1) Traffico totale sull'interfaccia
- (2) Percentuale di spazio libero su disco
- (3) Percentuale del traffico in ingresso
- (4) Numero medio di valori elaborati
- (5) Traffico totale in ingresso per il host
- (6) Spazio totale su disco per il gruppo
- (7) Carico medio del processore per il gruppo
- (8) Carico medio del processore per gruppo e tag
- (9) Numero medio di query per gruppo
- (10) Numero totale di controlli DNS riusciti
- (11) Numero totale di item non supportati per gruppo
- (12) Statistiche dell'interfaccia per il gruppo
- Esempi di sintassi corretta/non corretta
7 Elementi calcolati
Panoramica
Questo tipo di item consente di eseguire calcoli sulle metriche già esistenti. Un item calcolato non raccoglie alcun dato di per sé.
Ad esempio, potresti voler:
- Contare due valori.
- Calcolare la media di diversi valori di item.
- Calcolare il valore totale per un gruppo di item.
Il valore risultante viene memorizzato nel database di Zabbix come per qualsiasi altro item; vengono memorizzati sia i valori di storico sia quelli di trend ed è possibile generare grafici.
Il calcolo si basa su una formula. La sintassi della formula è condivisa con le espressioni dei trigger.
In effetti, è possibile mantenere semplici i trigger inserendo una logica complessa di elaborazione dei dati in un item calcolato, per poi fare riferimento all'item calcolato in un trigger utilizzando la chiave dell'item.
Esistono due possibilità per specificare la sorgente dati per i calcoli:
- Specificare gli item nella formula.
- Eseguire l'aggregazione dei dati in base a un filtro che seleziona gli item.
La seconda opzione consente di calcolare medie di gruppo, totali, ecc.
Tutti i calcoli vengono eseguiti da Zabbix server; proxy o agent non sono coinvolti in alcun modo. Si noti che un uso estensivo degli item calcolati con lunghi periodi di tempo può influire sulle prestazioni del server.
Campi configurabili
Per utilizzare item calcolati, scegliere il tipo di item Calculated.

La key è un identificatore univoco dell'item (per host). È possibile creare qualsiasi nome di key utilizzando i simboli supportati. La key consente di fare riferimento all'item calcolato nei trigger.
La definizione del calcolo deve essere inserita nel campo Formula.
Non esiste alcuna connessione tra la formula e la key. I parametri della key non vengono utilizzati nella formula in alcun modo.
A differenza delle espressioni dei trigger, Zabbix elabora gli item calcolati in base all'intervallo di aggiornamento dell'item, non alla ricezione di un nuovo valore.
Si noti che se si seleziona Numeric (unsigned) come tipo di informazione e il risultato del calcolo è un valore float, questo viene troncato a un intero.
Formula di calcolo semplice
La sintassi di una formula semplice è:
function(/host/key,<parameter1>,<parameter2>,...)
dove:
| Elemento | Descrizione |
|---|---|
function |
Una delle funzioni supportate: last, min, max, avg, count, ecc. |
host |
Host dell'item utilizzato per il calcolo. L'host corrente può essere omesso (cioè come in function(//key,parameter,...)). |
key |
Chiave dell'item utilizzato per il calcolo. Gli item che restituiscono valori con tipo di dato binario o JSON data type non sono supportati. Se si modifica la chiave item di un item referenziato, la chiave deve essere aggiornata manualmente nella formula. Tutti gli item referenziati dalle funzioni cronologia devono esistere e raccogliere dati. |
parameter(s) |
Parametri della funzione, se richiesti. Sono supportati i suffissi di tempo e i suffissi di dimensione della memoria. |
Una formula più complessa può utilizzare una combinazione di funzioni, operatori e parentesi.
Vedere esempi di formule di item calcolati:
- (1) Traffico totale sull'interfaccia
- (2) Percentuale di spazio libero su disco
- (3) Percentuale di traffico in ingresso
- (4) Numero medio di valori elaborati
Alcune variabili possono essere passate alla formula con macro utente. Si noti che le macro utente:
- verranno risolte - se utilizzate per fare riferimento a un parametro di funzione, a un parametro di filtro item o a una costante.
- non verranno risolte - se fanno riferimento a una funzione, al nome host, alla chiave item, a un parametro della chiave item o a un operatore.
È consentito il confronto con stringhe.
Se nella cache non sono presenti dati recenti e nella funzione non è definito alcun periodo di interrogazione, Zabbix per impostazione predefinita risalirà fino a una settimana nel passato per interrogare il database alla ricerca di valori storici.
Un item calcolato può diventare non supportato in diversi casi:
- item referenziato
- non viene trovato
- è disabilitato oppure appartiene a un host disabilitato
- non è supportato (tranne con la funzione nodata() e gli operatori con valori sconosciuti)
- nessun dato per calcolare una funzione
- divisione per zero
- sintassi non corretta utilizzata
Aggregazioni dei dati
Le aggregazioni dei dati si basano su un filtro che seleziona più item. Anche le aggregazioni dei dati sono un tipo di item calcolato, tuttavia nella formula si utilizza una sintassi leggermente diversa.
Per recuperare le aggregazioni utilizzare una delle funzioni di aggregazione supportate: avg, max, min, sum, ecc.
Quindi aggiungere la funzione foreach come unico parametro e il relativo filtro item per selezionare gli item richiesti:
aggregate_function(function_foreach(/host/key?[group="host group"],timeperiod))
Una funzione foreach (ad esempio avg_foreach, count_foreach, ecc.) restituisce un valore aggregato per ciascun item selezionato.
Gli item vengono selezionati utilizzando il filtro item (/host/key?[group="host group"]), dalla cronologia degli item.
Per maggiori dettagli, vedere funzioni foreach.
Se alcuni item non hanno dati per il periodo richiesto, vengono ignorati nel calcolo. Se nessun item ha dati, la funzione restituirà un errore.
In alternativa, è possibile elencare più item come parametri per l'aggregazione:
aggregate_function(function(/host/key,parameter),function(/host2/key2,parameter),...)
Si noti che function qui deve essere una funzione di cronologia/trend.
Vedere esempi di calcoli aggregati:
- (5) Traffico totale in ingresso per host
- (6) Spazio totale su disco per gruppo
- (7) Carico medio del processore per gruppo
- (8) Carico medio del processore per gruppo e tag
- (9) Numero medio di valori elaborati
- (10) Numero medio di query per gruppo
- (11) Numero totale di controlli DNS riusciti
- (12) Numero totale di item non supportati per gruppo
- (13) Statistiche dell'interfaccia per gruppo
Le macro utente e le macro di low-level discovery sono supportate in:
- parametri della chiave item
- parametri della funzione
- condizioni del filtro (nome del gruppo host e nome del tag)
- costanti dell'espressione
Un calcolo aggregato può diventare non supportato se:
- non viene trovato nessuno degli item referenziati (ciò può accadere se la chiave item non è corretta, nessuno degli item esiste oppure tutti i gruppi inclusi non sono corretti)
- non ci sono dati per calcolare una funzione
Esempi di item calcolati
(1) Traffico totale sull'interfaccia
last(//net.if.in[eth0,bytes])+last(//net.if.out[eth0,bytes])
Calcola la larghezza di banda totale su eth0.
(2) Percentuale di spazio libero su disco
100*last(//vfs.fs.size[/,free])/last(//vfs.fs.size[/,total])
Zabbix prenderà gli ultimi valori dello spazio libero e dello spazio totale su disco (su /) e calcolerà la percentuale in base alla formula indicata.
(3) Percentuale del traffico in ingresso
100*last(//net.if.in[eth0,bytes])/(last(//net.if.in[eth0,bytes])+last(//net.if.out[eth0,bytes]))
Calcola la percentuale del traffico in ingresso rispetto al traffico totale.
(4) Numero medio di valori elaborati
avg(/Zabbix server/zabbix[wcache,values],10m)
Calcola una media su 10 minuti del numero di valori elaborati da Zabbix.
(5) Traffico totale in ingresso per il host
sum(last_foreach(/host/net.if.in[*]))
Calcola il totale di tutti gli item che corrispondono a net.if.in[*] sul host.
(6) Spazio totale su disco per il gruppo
sum(last_foreach(/*/vfs.fs.size[/,total]?[group="MySQL Servers"]))
Calcola lo spazio totale su disco per tutti i MySQL Servers.
(7) Carico medio del processore per il gruppo
avg(last_foreach(/*/system.cpu.load[,avg1]?[group="MySQL Servers"]))
Calcola il carico medio del processore per tutti i MySQL Servers.
(8) Carico medio del processore per gruppo e tag
avg(last_foreach(/*/system.cpu.load?[(group="Servers A" or group="Servers B" or group="Servers C") and (tag="Service:" or tag="Importance:High")]))
Calcola il carico medio della CPU su tutti gli host in più gruppi di host che hanno tag specifici.
(9) Numero medio di query per gruppo
avg(avg_foreach(/*/mysql.qps?[group="MySQL Servers"],5m))
Calcola la media a 5 minuti del numero di query al secondo per MySQL Servers.
(10) Numero totale di controlli DNS riusciti
sum(last_foreach(/*/net.dns[*,*,*]))
Calcola il numero totale di controlli DNS riusciti su tutti gli host.
La forma di item mostrata è net.dns[192.0.2.0,example.com,A] come esempio di una possibile chiave.
Nota che i caratteri jolly devono corrispondere al numero di parametri nella chiave (qui net.dns ha tre parametri: ip, name, type).
(11) Numero totale di item non supportati per gruppo
sum(last_foreach(/*/zabbix[host,,items_unsupported]?[group="Zabbix servers"]))
Calcola il numero totale di item non supportati per Zabbix servers.
(12) Statistiche dell'interfaccia per il gruppo
sum(last_foreach(/*/net.if.out[eth0,bytes]?[group="video"])) / sum(last_foreach(/*/nginx_stat.sh[active]?[group="video"]))
Calcola le statistiche dell'interfaccia per il gruppo video.
Esempi di sintassi corretta/non corretta
Le espressioni (incluse le chiamate di funzione) non possono essere utilizzate come parametri delle funzioni history, trend o foreach. Tuttavia, queste funzioni stesse possono essere utilizzate in altri parametri di funzione (non storici).
| Espressione | Esempio |
|---|---|
| Valida | avg(last(/host/key1),last(/host/key2)*10,last(/host/key1)*100)max(avg(avg_foreach(/*/system.cpu.load?[group="Servers A"],5m)),avg(avg_foreach(/*/system.cpu.load?[group="Servers B"],5m)),avg(avg_foreach(/*/system.cpu.load?[group="Servers C"],5m))) |
| Non valida | sum(/host/key,10+2)sum(/host/key, avg(10,2))sum(/host/key,last(/host/key2)) |
Si noti che in un'espressione come:
sum(sum_foreach(//resptime[*],5m))/sum(count_foreach(//resptime[*],5m))
non è possibile garantire che entrambe le parti dell'equazione abbiano sempre lo stesso insieme di valori. Mentre una parte dell'espressione viene valutata, può arrivare un nuovo valore per il periodo richiesto e quindi l'altra parte dell'espressione avrà un insieme di valori diverso.