Kibana: costruire la propria dashboard

Con Kibana è possibile costruire dashboard personalizzate per visualizzare in maniera opportuna i nostri dati. Esistono diverse tipologia di visualizzazione tra cui i grafici a torta, i grafici a barre e le mappe geografiche. In questo tutorial scopriremo come costruire una dashboard personalizzata partendo dall'inserimento dei dati.

Share

Reading time: 8 minutes

Negli articoli Kibana: esploriamo i dati abbiamo visto le caratteristiche principali di Kibana e alcune potenzialità dei metodi di visualizzazione e ricerca dei dati offerti dallo strumento. È giunto quindi il momento di provare a creare una propria dashboard con i nostri dati. In questo tutorial vedremo come definire gli indici e la loro mappatura, caricare i dati su Elasticsearch mediante le API bulk e infine creare più pannelli di visualizzazione per comporre una dashboard.

Caricare un dataset in Elasticsearch

Questo tutorial richiede tre datasets:

Per prima cosa dovete decomprimere i file scaricati.

Struttura dei datasets

Il dataset di Shakespeare ha la seguente questa struttura:

{
    "line_id": INT,
    "play_name": "String",
    "speech_number": INT,
    "line_number": "String",
    "speaker": "String",
    "text_entry": "String",
} 

Il dataset dei conti è strutturato come segue:

{
    "account_number": INT,
    "balance": INT,
    "firstname": "String",
    "lastname": "String",
    "age": INT,
    "gender": "M or F",
    "address": "String",
    "employer": "String",
    "email": "String",
    "city": "String",
    "state": "String"
} 

Il dataset dei logs ha dozzine di campi diversi. Ecco i campi degni di nota per questo tutorial:

{
    "memory": INT,
    "geo.coordinates": "geo_point"
    "@timestamp": "date"
} 

Impostare i mapping

Prima di caricare i datasets di Shakespeare e di log, è necessario impostare le mappature per i campi. Le mappature dividono i documenti nell’indice in gruppi logici e specificano le caratteristiche dei campi. Queste caratteristiche includono la ricercabilità del campo e se è tokenizzato, o suddiviso in parole separate.

In Kibana Dev Tools > Console, impostare una mappatura per il set di dati Shakespeare:

PUT /shakespeare
{
 "mappings": {
  "properties": {
    "speaker": {"type": "keyword"},
    "play_name": {"type": "keyword"},
    "line_id": {"type": "integer"},
    "speech_number": {"type": "integer"}
  }
 }
}
 

Questa mappatura specifica le caratteristiche del campo per il set di dati:

  • I campi speaker e play_name sono campi di parole chiave. Questi campi non vengono analizzati. Le stringhe sono trattate come una singola unità anche se contengono più parole.
  • I campi line_id e speech_number sono interi.

Il dataset del log richiede una mappatura per etichettare le coppie di latitudine e longitudine come luoghi geografici applicando il tipo geo_point.

PUT /logstash-2015.05.18
{
  "mappings": {
    "properties": {
      "geo": {
        "properties": {
          "coordinates": {
            "type": "geo_point"
          }
        }
      }
    }
  }
}

PUT /logstash-2015.05.19
{
  "mappings": {
    "properties": {
      "geo": {
        "properties": {
          "coordinates": {
            "type": "geo_point"
          }
        }
      }
    }
  }
}

PUT /logstash-2015.05.20
{
  "mappings": {
    "properties": {
      "geo": {
        "properties": {
          "coordinates": {
            "type": "geo_point"
          }
        }
      }
    }
  }
}
 

Il dataset dei conti non richiede alcuna mappatura.

Caricare i datasets

A questo punto, siete pronti a usare l’API bulk di Elasticsearch per caricare i set di dati:

curl --user elastic:changeme -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/bank/account/_bulk' --data-binary @accounts.json
curl --user elastic:changeme -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/shakespeare/_bulk' --data-binary @shakespeare_6.0.json
curl --user elastic:changeme -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/_bulk' --data-binary @logs.jsonl
 

Questi comandi potrebbero richiedere del tempo per essere eseguiti, a seconda delle risorse di calcolo disponibili.

Verificate che il caricamento sia avvenuto con successo:

GET /_cat/indices?v 

Definire gli index patterns

Gli index patterns dicono a Kibana quali indici Elasticsearch volete esplorare. Un index pattern può corrispondere al nome di un singolo indice, o includere un carattere jolly (*) per corrispondere a più indici.

Per esempio, Logstash crea tipicamente una serie di indici nel formato logstash-YYYY.MMM.DD. Per esplorare tutti i dati di log di maggio 2018, si potrebbe specificare il pattern di indice logstash-2018.05*.

Creerete schemi per il set di dati Shakespeare, che ha un indice chiamato shakespeare, e il set di dati accounts, che ha un indice chiamato bank. Questi set di dati non contengono dati di serie temporali.

  1. In Kibana, aprire Stack Management e poi fare clic su Index Patterns.
  2. Se questo è il vostro primo modello di indice, la pagina Create index pattern si apre automaticamente. Altrimenti, cliccate in alto a sinistra.
  3. Inserite shakes* nel campo Index pattern.
  1. Cliccate . Per questo pattern, non è necessario configurare alcuna impostazione.
  2. Definite un secondo index pattern chiamato ba* Non è necessario configurare alcuna impostazione per questo pattern.
  3. Adesso create un modello di indice per il set di dati Logstash. Questo dataset contiene dati di serie temporali.
  4. Definire un index pattern chiamato logstash*.
  5. Selezionate @timestamp nel menu a tendina Timestamp.

Scoprire e esplorare i dati

Usando l’applicazione Discover, potete inserire una query Elasticsearch per cercare i vostri dati e filtrare i risultati.

  1. Aprite Discover.
  2. L’index pattern corrente appare sotto la barra del filtro, in questo caso shake*. Potrebbe essere necessario cliccare su New nella barra dei menu per aggiornare i dati.
  3. Fate clic sul cursore a destra del index pattern corrente e selezionate ba*. Nel campo di ricerca, inserite la seguente stringa:
account_number<= 100 and balance >= 47500 
  1. Cliccate

Per impostazione predefinita, tutti i campi sono mostrati per ogni documento corrispondente. Per scegliere quali campi visualizzare, passa il puntatore sull’elenco dei Campi disponibili e poi clicca su aggiungi accanto ad ogni campo che vuoi includere come colonna nella tabella.

Per esempio, se aggiungete il campo account_number, la visualizzazione cambia in una lista di cinque numeri di conto.

Visualizzare i dati

Nell’applicazione Visualize, puoi dare forma ai vostri dati usando una varietà di grafici, tabelle e mappe, e altro ancora. Creerete quattro visualizzazioni: un grafico a torta, un grafico a barre, una mappa e un widget Markdown.

  1. Aprite Visualize Library
  2. Cliccate . Vedrete tutti i tipi di visualizzazione in Kibana.
  1. Cliccate Aggregation based
  1. Cliccate Pie
  2. In New Search, selezionate l’index pattern ba*. Utilizzerete il grafico a torta per avere un’idea dei saldi dei conti.

Pie chart

Inizialmente, la torta contiene una sola “fetta”. Questo perché la ricerca predefinita corrisponde a tutti i documenti.

Per specificare quali fette visualizzare nella torta, si usa un’aggregazione Elasticsearch bucket. Questa aggregazione ordina i documenti che corrispondono ai tuoi criteri di ricerca in diverse categorie, note anche come bucket.

Usate un’aggregazione a bucket per stabilire più intervalli di saldi dei conti e scoprire quanti conti rientrano in ogni intervallo.

  1. Nel pannello Buckets, cliccate Add e poi Split Slices.
  2. Nel menu a tendina Aggregation, selezionate Range.
  3. Nel menu a tendina Field, selezionate balance.
  4. Fate clic su Add Range quattro volte per portare il numero totale di intervalli a sei.
  5. Definite i seguenti intervalli:
0             999
1000         2999
3000         6999
7000        14999
15000       30999
31000       50000 
  1. Cliccate

Ora si può vedere quale proporzione dei 1000 conti rientra in ogni intervallo di bilancio.

Aggiungete un’altra aggregazione di bucket che guarda all’età dei titolari dei conti.

 

  1. Nella parte inferiore del pannello Buckets, cliccate Add.
  2. In Select buckets type, cliccate Split Slices.
  3. Nel menu a tendina Sub Aggregation, selezionate Terms.
  4. Nel menu a tendina Field, selezionate age.
  5. Cliccate .

Adesso potete vedere la ripartizione dell’età dei titolari dei conti, visualizzata in un anello intorno alle fasce di bilancio.

Per salvare questo grafico  

  1. Cliccate su Save nella barra dei menu in alto e inserite Pie Example
  2. Selezionate None tra le opzioni Add to dashboard
  3. Cliccate

Bar chart

Userete un grafico a barre per guardare l’insieme di dati di Shakespeare e confrontare il numero di parti parlate nelle opere.

Create un grafico Vertical Bar e impostate l’origine della ricerca su shakes*.

Inizialmente, il grafico contiene una singola barra che mostra il conteggio totale dei documenti che corrispondono alla query predefinita.

Visualizzate il numero di parti parlate per spettacolo lungo l’asse Y. Questo richiede la configurazione dell’aggregazione delle metriche sull’asse Y. Questa aggregazione calcola la metrica in base ai valori dei risultati della ricerca.

  1. Nel pannello Metrics, espandete Y-Axis
  2. Settate Aggregation a Unique Count
  3. Settate Field a speaker
  4. Nella casella Custom Label, inserite Speaking Parts
  5. Cliccate

Visualizzate le opere lungo l’asse delle X.

  1. Nel pannello Buckets, cliccate Add e poi X-Axis.
  2. Settate Aggregation a Terms e Field a play_name.
  3. Per elencare le opere in ordine alfabetico, nel menu a discesa Order, selezionate Ascending.
  4. Date all’asse un’etichetta personalizzata, Play Name.
  5. Cliccate

Passando il mouse su una barra viene visualizzato un tooltip con il numero di parti parlate per quell’opera.

Notate come i singoli nomi delle opere appaiono come frasi intere, invece che spezzati in singole parole. Questo è il risultato della mappatura che avete fatto all’inizio del tutorial, quando avete segnato il campo play_name come non analizzato.

Per salvare questo grafico  

  1. Cliccate su Save nella barra dei menu in alto e inserite Bar Example
  2. Selezionate None tra le opzioni Add to dashboard
  3. Cliccate

Map

Utilizzando una mappa, è possibile visualizzare le informazioni geografiche nei dati campione del file di log.

  1. Dai tipi di visualizzazione selezionate Map
  1. Cliccate Add layer
  2. Selezionate Heat map
Schermata 2021-12-17 alle 18.54.37
  1. Nel menu index pattern selezionate logstash*
  2. Cliccate
  3. Inserite il nome events
  4. Cliccate
  5. Nella barra dei menu in alto, clicca sul selezionatore del tempo all’estrema destra.
  6. Cliccate Absolute.
  7. Impostate l’ora di inizio al 18 maggio 2015 e l’ora di fine al 20 maggio 2015.
  8. Cliccate Update.

Per salvare questo grafico  

  1. Cliccate su Save nella barra dei menu in alto e inserite Map Example
  2. Selezionate None tra le opzioni Add to dashboard
  3. Cliccate

Testo

La visualizzazione finale è un widget Markdown che renderizza il testo formattato.

  1. Nel menu del tipo di visualizzazione selezionate Text sotto Tools. Nella casella di testo, inserite quanto segue:
# This is a tutorial dashboard!
The Markdown widget uses **markdown** syntax.
> Blockquotes in Markdown use the > character.
 
  1. Cliccate

Il Markdown viene visualizzato nel pannello di anteprima:

Per salvare questo grafico  

  1. Cliccate su Save nella barra dei menu in alto e inserite Markdown Example
  2. Selezionate None tra le opzioni Add to dashboard
  3. Cliccate

Aggiungere visualizzazioni ad una dashboard

Una dashboard è una collezione di visualizzazioni che potete organizzare e condividere. Costruirete una dashboard che contiene le visualizzazioni che avete salvato durante questo tutorial.

  1. Aprite Dashboard
  2. Cliccate
  3. Cliccate
  4. Aggiungete Bar Example, Map Example, Markdown Example, e Pie Example.

Potete riorganizzare le visualizzazioni cliccando sull’intestazione di una visualizzazione e trascinandola. L’icona dell’ingranaggio in alto a destra di una visualizzazione mostra i controlli per modificare e cancellare la visualizzazione. Un controllo di ridimensionamento è in basso a destra.

Per ottenere un link da condividere o un codice HTML per incorporare la dashboard in una pagina web, salvare la dashboard. Il pulsante Share permette di condividere la dashboard come Embedded code, Permalinks, report in PDF e PNG.

Letture consigliate

More To Explore

Elasticsearch

Elasticsearch: aggregazioni a bucket [parte 1]

Con le aggregazioni a bucket di Elasticsearch possiamo creare gruppi di documenti. In questo articolo ci concentreremo principalmente sulle aggregazioni basate sui campi di tipo keyword presenti negli indici. Utilizzeremo diversi esempi per capire le principali differenze tra le funzioni di aggregazione disponibili.

Elasticsearch

Elasticsearch: aggregazioni metriche

Oltre alla ricerca testuale, Elasticsearch permette di effettuare analisi sui dati mediante le aggregazioni. Tra le varie tipologie di aggregazione disponibili quelle metriche sono orientate proprio a calcolare statistiche su uno o più campi. Mediante degli esempi vedremo quali informazioni possiamo estrarre con questa tipologia di aggregazione.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Design with MongoDB

Design with MongoDB!!!

Buy the new book that will help you to use MongoDB correctly for your applications. Available now on Amazon!