Dec 4th, 2021: [it] Trucchi e consigli avanzati per Lens

Questo articolo è disponibile anche in inglese.

Lens è uno strumento relativamente nuovo in Kibana, rilasciato in versione stabile meno di un anno fa come strumento universale per visualizzazioni, ma ha già attratto molto interesse per le sue funzionalità avanzate ad ogni nuova versione "minor".
Lo strumento è solo uno dei tanti in Kibana, quindi è facile che alcune nuove funzionalità possano sfuggire ad una prima revisione: scopo di questo post è quello di rivisitare alcuni casi d'uso avanzati, sfruttando alcune di queste funzionalità.

Affronteremo alcuni casi d'uso interessanti emersi negli ultimi mesi, sfruttando nuove funzionalità in Lens.

Tecniche di gestione di valori mancanti

Non tutti i record vengono salvati con tutti i valori inseriti, a volte per scelte di design di avere campi opzionali, altre volte per ragioni fuori dal nostro controllo (come un reset o timeout di uno strumento di monitoring, il riavvio di un'app, ecc... ). Questo si ripercuote nel processo di aggregazione, con risultati che possono essere inaspettati.
Di seguito una raccolta di alcune soluzioni offerte da Lens per gestire questo tipo di problemi.

Quali opzioni ho per rappresentare valori mancanti sui grafici?

Quando si utilizza una grafico Linea o Area i valori mancanti vengono nascosti automaticamente in Lens.

Qualora si volessero altri tipi di rappresentazioni, Lens offre una varietà di interpolazioni per questo tipo di problema tra cui scegliere:

Calcolo della differenza tra valori contigui: cosa succede se il valore precedente è vuoto?

Sicuramente la soluzione più semplice per calcolare la differenza tra due valori contigui è la funzione differences:

differences( max(fieldA) )

o una sua versione più sofisticata utilizzando last_value:

differences(last_values( fieldA ))

Le formule sopra riportate funzionano correttamente, anche se bisogna tenere conto che valori nulli vengono ignorati quando presenti, producendo risultati inaspettati con valori negativi.
Quando si vogliono ottenere unicamente valori positivi dalla differenza tra valori contigui, è possibile utilizzare una funzione specifica in Lens, chiamata Counter rate:

Qualora richiesto il valore può essere normalizzato secondo l'unità temporale voluta mediante il campo apposito nel pannello di configurazione.

Costruire una tabella contenente solo gli ultimi valori utili

La visualizzazione tabellare è una dei modi più semplici, ma molto utili, di rappresentare i nostri dati in Lens: dati aggregati possono essere rappresentati sia come righe, colonne che metriche.
In questo scenario abbiamo la necessità di mostrare come metrica nella tabella l'ultimo valore utile per un campo in particolare:

Nella tabella riportata vengono mostrati gli ultimi valori per ciascun intervallo di 12 ore del campo geoip.city_name: l'ultimo valore viene raccolto dopo aver ordinato i record per ciascun intervallo secondo il criterio scelto (temporale nel caso sopra), scegliendo appunto l'ultimo ( come ci si aspetterebbe da una funzione Last Value).
Nel caso d'uso specifico siamo alla ricerca unicamente degli ultimi valori utili da mostrare nella tabella, quindi filtrare i dati prima che la funzione Last value proceda ad estrarre i valori: fortunatamente Lens può venirci incontro con la funzionalità di "metrica filtrata".

Nel pannello di configurazione per la dimensione Last value, cliccare nella lista disponibile sotto Add advanced options l'opzione Filter by e applicare il filtro sotto forma di query:

È possibile utilizzare sia la sintassi KQL che Lucene per il filtro desiderato.

Sviluppi futuri

Siamo consapevoli che ci sia molto lavoro ancora da completare per la gestione completa di valori mancanti, in particolare sono già stati individuati scenari da migliorare, a partire da ottimizzazioni visuali fino alla gestione per metrica di valori mancanti.

Comparare valori in una formula

Comparare due valori tra loro, che siano costanti o dinamici, per ottenere un terzo valore è una pratica piuttosto frequente in un ambiente di analitiche. In questa sezione scopriremo come sfruttare operatori matematici per ottenere risultati assimilabili a comparazioni classiche.

Comparare un valore ad un numero costante

Consideriamo il seguente caso d'uso:

stiamo cercando un modo di riportare il valore di una metrica quando questa supera il valore costante 1000

Per semplificare il ragionamento dell'esempio, faremo l'ipotesi che i valori ottenibili dalla metrica siano unicamente interi e non decimali. A questo punto proviamo a modellare il problema nel seguente modo:

  • se valore >= 1000 restituisci valore
  • altrimenti restituisci 0

Con lo strumento formula in Lens possiamo sfruttare la funzione matematica clamp (disponibile in Tinymath) per limitare il valore tra 0 e 1:

clamp( metric(field) - 1000, 0, 1) * metric(field)

Nella formula precedente la parte condizionale a sinistra può essere spiegata come segue:

  • se valore - 1000 è positivo restituisci 1
  • altrimenti restituisci 0

Il risultato viene poi moltiplicato per il valore della metrica, rispettando la modellazione iniziale.

L'assunzione iniziale su valori unicamente interi garantisce che qualsiasi valore della differenza valore - 1000 non cada all'interno dell'intervallo (0-1). Lo stesso procedimento può essere esteso anche a calcoli con decimali, considerando di prendere accorgimenti particolari per valori nell'intervallo di massimo/minimo utilizzati in clamp.

Comparare due valori dinamici

In questo caso d'uso entrambi i valori dell'operazione di confronto sono il risultato di una funzione di aggregazione:

stiamo cercando il valore maggiore tra la metrica A e metrica B

Come potete immaginare anche in questo caso la soluzione prevede l'utilizzo della funzione clamp similmente a sopra:

clamp( metric(fieldA) - metric(fieldB), 0, 1) * metric(fieldA) +
clamp( metric(fieldB) - metric(fieldA), 0, 1) * metric(fieldB)

In questo scenario clamp è ripetuto due volte dove in ciascuno gli operatori della differenza sono scambiati, con una somma tra le due condizioni: la differenza tra le due metriche potrà essere positiva solo in uno dei due casi, mentre l'altra sarà sicuramente negativa, ottenendo sempre l'azzeramento di una delle due parti per la metrica minore e restituendo la metrica maggiore.

Sviluppi futuri

La funzionalità formula in Lens è stata rilasciata pochi mesi fa, ma ha già ottenuto un forte riscontro nell'uso comune. L'idea di estendere la sintassi corrente con operatori condizionali nativi al fine di supportare un controllo migliore in caso di confronti più avanzati dei casi d'uso sopra descritti è stata già registrata tra gli sviluppi futuri.

2 Likes

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.