Tutorial dashboard di Kibana per principianti
Il motore di ricerca e analisi Elasticsearch è una delle soluzioni open source per l’indicizzazione e la strutturazione di grandi volumi di dati. Spesso si possono acquisire informazioni preziose solo nell’analisi successiva dei dati grezzi, sempre se vengono visualizzati in una forma chiara e facilmente comprensibile. Per la presentazione dei dati Elasticsearch in particolare è stato sviluppato lo strumento di visualizzazione Kibana, che verrà utilizzato in questo tutorial.
Che cos’è Kibana?
Kibana è un’interfaccia web estensibile per la presentazione visiva dei dati raccolti. Insieme ad Elasticsearch e allo strumento di elaborazione Logstash forma il cosiddetto stack ELK (chiamato anche stack elastico). Questa suite open source consente agli utenti di acquisire, organizzare e preparare i dati da diverse origini server (e in qualsiasi formato) ai fini di analisi. Oltre alla possibilità di visualizzare i dati elaborati da Logstash ed Elasticsearch, Kibana fornisce anche un’analisi automatica in tempo reale, un algoritmo di ricerca molto flessibile e vari tipi di visualizzazione (istogrammi, grafici, ecc.) per i singoli dati. Nella dashboard le singole visualizzazioni interattive possono quindi essere combinate in un’immagine complessiva dinamica che può essere filtrata e ricercata.
Come applicazione web scritta in JavaScript, Kibana può essere utilizzato su diverse piattaforme. Occorre pagare solamente se si utilizza un servizio di hosting Elastic Cloud fornito dallo sviluppatore. Questo servizio a pagamento vi consente di implementare e organizzare un cluster sicuro Elasticsearch Kibana su Amazon o Google senza dover mettere a disposizione le vostre risorse.
Tutorial per Kibana: primi passi con il tool di visualizzazione
Kibana offre una vasta gamma di funzioni che possono essere utilizzate per visualizzare file di database analizzati. Tuttavia avete davanti a voi molto lavoro prima di poter filtrare e visualizzare le informazioni nella dashboard in modo da poter facilmente tenere sott’occhio, analizzare e valutare i valori chiave che desiderate. Con questo tutorial di Kibana vogliamo rendere più semplice il primo impatto con la potente interfaccia web. Questo articolo spiega come installare correttamente Kibana, creare la propria dashboard e integrare i database esistenti nello strumento di visualizzazione di Elastic.
Passo 1: come far funzionare Kibana
Siccome Kibana è stato progettato per visualizzare i dati indicizzati con Elasticsearch, è necessario innanzitutto un’installazione funzionante del motore di ricerca e analisi. I pacchetti corrispondenti per Windows, macOS e Linux sono disponibili nell’ Elasticsearch download center. Il prerequisito è che sia installato un ambiente di runtime Java corrente (64 bit).
Kibana è anche disponibile come software multipiattaforma per Windows, macOS e Linux (RPM, DEB). Poiché l’applicazione si basa sull’ambiente di runtime Javascript Node.js, i vari pacchetti di installazione contengono anche i dati binari node.js necessari per eseguire l’ambiente di visualizzazione: le versioni gestite separatamente non sono supportate. I diversi pacchetti (ZIP compressi) si possono trovare come Elasticsearch nella Homepage di Elastic.
Gli utenti di Linux e Mac possono anche installare Kibana attraverso il repository Elastic utilizzando i gestori di pacchetti apt e yum. Istruzioni dettagliate in merito sono disponibili nel manuale online.
Se avete decompresso il pacchetto Kibana, eseguite il file bin/kibana (macOS, Linux) o bin\kibana.bat (Windows) per far funzionare il server Kibana.
Infine potete richiamare il back end Kibana nel vostro browser tramite l’indirizzo 'http://localhost:5601' (Elasticsearch deve già essere in esecuzione).
Passo 2: inserire dati su Kibana
Per far luce sulla dashboard di Kibana e sulle sue funzionalità, l’applicazione deve essere dotata di dati. Sul sito web di Elastic ci sono tre database scaricabili gratuitamente che in questo tutorial utilizziamo a scopo di test. Si tratta dei tre database menzionati sopra “shakespeare.json” (database di opere complete di William Shakespeare), “accounts.zip” (set di account fittizi) e “logs.jsonl.gz” (set di file log generati casualmente).
Scaricate e decomprimete i tre file (file account e file log) e salvateli nella posizione che desiderate.
Prima di immettere i dati è necessario creare mapping (mappature) per i campi del database di Shakespeare e server log. Queste mappature dividono i documenti nell’indice in gruppi logici e specificano anche le proprietà dei cambi, come ad esempio la loro ricercabilità. Lo strumento giusto per la configurazione dei mapping è la console, che può essere trovata nell’interfaccia di Kibana sotto le voci di menu “Dev Tools” “Console”.
Ora inserite i seguenti mapping in successione tramite PUT request:
PUT /shakespeare
{
"mappings": {
"doc": {
"properties": {
"speaker": {"type": "keyword"},
"play_name": {"type": "keyword"},
"line_id": {"type": "integer"},
"speech_number": {"type": "integer"}
}
}
}
}
PUT /logstash-2015.05.18
{
"mappings": {
"log": {
"properties": {
"geo": {
"properties": {
"coordinates": {
"type": "geo_point"
}
}
}
}
}
}
}
PUT /logstash-2015.05.19
{
"mappings": {
"log": {
"properties": {
"geo": {
"properties": {
"coordinates": {
"type": "geo_point"
}
}
}
}
}
}
}
PUT /logstash-2015.05.20
{
"mappings": {
"log": {
"properties": {
"geo": {
"properties": {
"coordinates": {
"type": "geo_point"
}
}
}
}
}
}
}
Ora utilizzate l’API bulk di Elastic per caricare i set di dati con Curl attraverso il terminale. Su Windows invece utilizzate PowerShell con il Invoke-RestMethod (di seguito un esempio di codice):
curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary @accounts.json
curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/shakespeare/doc/_bulk?pretty' --data-binary @shakespeare_6.0.json
curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/_bulk?pretty' --data-binary @logs.jsonl
Invoke-RestMethod "http://localhost:9200/bank/account/_bulk?pretty" -Method Post -ContentType 'application/x-ndjson' -InFile "accounts.json"
Invoke-RestMethod "http://localhost:9200/shakespeare/doc/_bulk?pretty" -Method Post -ContentType 'application/x-ndjson' -InFile "shakespeare_6.0.json"
Invoke-RestMethod "http://localhost:9200/_bulk?pretty" -Method Post -ContentType 'application/x-ndjson' -InFile "logs.jsonl"
A seconda della potenza di calcolo potrebbero essere necessari alcuni minuti per immettere i dati.
Tornate alla console di Kibana per verificare il successo del processo di caricamento con la seguente GET Request:
GET /_cat/indices?v
Se i dati sono inseriti come pianificato, l’output sarà simile al seguente:
Passo 3: definire un primo modello di indice
Affinché Kibana venga a conoscenza di quali dati debba elaborare, è necessario creare modelli per gli Indices “shakespeare”, “bank” e “logstash”. Definite il primo come segue:
- Aprite il menu “Management” e cliccate su “Index patterns”. Quando si crea il primo pattern di indice la pagina “Create index pattern” si apre automaticamente. In alternativa potete richiamarla tramite il pulsante corrispondente che porta lo stesso nome.
- Inserite “shakes*” nel campo “Index pattern” e cliccate su “Next step”.
- Poiché non è necessaria alcuna particolare configurazione per questo modello, saltate il passo successivo di configurazione e terminate la creazione del modello direttamente facendo clic su “Create index pattern”
Ripetete i passaggi per il pattern “ba*” che viene automaticamente assegnato all’indice “bank”. Infine definite anche un modello di indice denominato “logstash*” per gli indici dei tre server log. Tuttavia con questo modello non si salta il menu di configurazione, ma si seleziona invece la voce “@timestamp” nel menu a discesa “Time Filter field name”, poiché questi record contengono dati di serie temporali. Infine fate clic come nei due modelli precedenti su “Create index pattern”.
Passo 4: ricerca nei record inseriti
Dopo aver popolato il server Kibana con i record potete avviare una query Elasticsearch per cercare in quei record e filtrare i risultati. Andate al menu “Discover” e selezionate il modello di indice per la vostra ricerca attraverso l’icona del piccolo triangolo nella barra dei menu a sinistra. Come parte di questo tutorial di Kibana Dashboard abbiamo scelto il record dell’account (ba*):
Come test potete filtrare il record del conto bancario una sola volta in modo da visualizzare solo gli account che soddisfano determinati criteri. Ad esempio, per cercare conti che abbiano un saldo superiore a 47.500 e che appartengano a persone che abbiano più di 38 anni, immettete il seguente comando nella casella di ricerca:
balance:>47500 AND age:>38
Discover restituirà quindi le voci per i quattro conti 97, 177, 878 e 916 che corrispondono alle caratteristiche selezionate.
Utilizzate il pulsante “Save” nella barra dei menu in alto per salvare le ricerche filtrate con il nome desiderato.
Passo 5: visualizzare i dati
Con i preparativi fatti finora in questo tutorial di Kibana siete ora in grado di visualizzare i dati che sono stati implementati per dare vita alla vostra dashboard. A titolo di esempio, a questo punto deve essere generato un grafico a torta per il database del conto bancario. Da un lato questo grafico dovrebbe mostrare quale percentuale del totale di 1.000 conti rientra in determinati intervalli di saldo e dall’altro come cade la distribuzione specifica per età all’interno di questi intervalli.
Aprite in primo luogo il menu “Visualize” e cliccate su “Create a visualization” per ottenere un elenco dei tipi di visualizzazione disponibili. Quindi selezionate l’opzione “Pie”.
All’inizio si vede soltanto un cerchio semplice, che riassume tutte le voci del database, perché nessuna categoria è stata ancora definita. Esse in Kibana sono anche chiamate “Buckets” e possono essere create sotto la voce di menu che porta lo stesso nome.
Per definire innanzitutto ciascuna sezione del saldo del conto, fate clic su “Split Slices” e scegliete “Range” dal menu a discesa “Aggregation”:
Alla voce “Field” cercate ora la voce “balance” e cliccatela, quindi fate clic quattro volte sul pulsante “Add Range” per definire le seguenti sei categorie di saldo del conto:
0 | 999 |
---|---|
1000 | 2999 |
3000 | 6999 |
7000 | 14999 |
15000 | 30999 |
31000 | 50000 |
Alla fine cliccate su “Apply Changes” (icona a forma di triangolo). In questo modo il diagramma a torta mostra la distribuzione dei conti tenendo conto degli intervalli di saldo stabiliti.
Nella seconda fase aggiungete un altro anello al grafico che visualizza la distribuzione delle fasce d’età per ciascuna area dello stato del conto corrente. Per fare ciò cliccate su “Add sub-buckets” quindi su “Split slices” e selezionate poi “Terms” nel menu a discesa. Cercate sotto “Field” la voce “age” e applicate le modifiche con “Apply change”.
La visualizzazione può ora facilmente essere salvata tramite il pulsante “Save” situato nella barra superiore del menu.
Passo 6: organizzare la dashboard
In questo tutorial verrà presa in considerazione brevemente anche la dashboard di Kibana. Ora potete utilizzare la ricerca e la visualizzazione salvate nei passaggi 4 e 5 per creare una prima dashboard di prova. Per fare ciò selezionate la dashboard nella navigazione della pagina e cliccate su “Create new dashboard” e quindi su “Add”. Kibana a questo punto elencherà automaticamente tutte le visualizzazioni memorizzate o le ricerche Elasticsearch:
Facendo clic con il tasto sinistro del mouse sulla dashboard si aggiunge la visualizzazione del saldo del conto corrente e il risultato della ricerca di esempio, dopodiché è possibile visualizzarli entrambi in pannelli separati nella dashboard:
È ora possibile modificare i pannelli, ad esempio regolando le dimensioni o modificando il posizionamento. È anche possibile mostrare una visualizzazione o un risultato di ricerca a tutto schermo o eliminarlo dalla dashboard. Tramite “Inspect” è inoltre possibile visualizzare ulteriori informazioni sui dati e le query sottostanti.
La rimozione di un pannello dalla dashboard di Kibana mantiene tuttavia la visualizzazione o la ricerca salvata.