Il motore di ricerca e analisi Ela­stic­search è una delle soluzioni open source per l’in­di­ciz­za­zio­ne e la strut­tu­ra­zio­ne di grandi volumi di dati. Spesso si possono acquisire in­for­ma­zio­ni preziose solo nell’analisi suc­ces­si­va dei dati grezzi, sempre se vengono vi­sua­liz­za­ti in una forma chiara e fa­cil­men­te com­pren­si­bi­le. Per la pre­sen­ta­zio­ne dei dati Ela­stic­search in par­ti­co­la­re è stato svi­lup­pa­to lo strumento di vi­sua­liz­za­zio­ne Kibana, che verrà uti­liz­za­to in questo tutorial.

Che cos’è Kibana?

Kibana è un’in­ter­fac­cia web esten­si­bi­le per la pre­sen­ta­zio­ne visiva dei dati raccolti. Insieme ad Ela­stic­search e allo strumento di ela­bo­ra­zio­ne Logstash forma il co­sid­det­to stack ELK (chiamato anche stack elastico). Questa suite open source consente agli utenti di acquisire, or­ga­niz­za­re e preparare i dati da diverse origini server (e in qualsiasi formato) ai fini di analisi. Oltre alla pos­si­bi­li­tà di vi­sua­liz­za­re i dati elaborati da Logstash ed Ela­stic­search, Kibana fornisce anche un’analisi au­to­ma­ti­ca in tempo reale, un algoritmo di ricerca molto fles­si­bi­le e vari tipi di vi­sua­liz­za­zio­ne (isto­gram­mi, grafici, ecc.) per i singoli dati. Nella dashboard le singole vi­sua­liz­za­zio­ni in­te­rat­ti­ve possono quindi essere combinate in un’immagine com­ples­si­va dinamica che può essere filtrata e ricercata.

Mz8avM1oOKQ.jpg Per visualizzare questo video, sono necessari i cookie di terze parti. Puoi accedere e modificare le impostazioni dei cookie qui.

Come ap­pli­ca­zio­ne web scritta in Ja­va­Script, Kibana può essere uti­liz­za­to su diverse piat­ta­for­me. Occorre pagare solamente se si utilizza un servizio di hosting Elastic Cloud fornito dallo svi­lup­pa­to­re. Questo servizio a pagamento vi consente di im­ple­men­ta­re e or­ga­niz­za­re un cluster sicuro Ela­stic­search Kibana su Amazon o Google senza dover mettere a di­spo­si­zio­ne le vostre risorse.

Tutorial per Kibana: primi passi con il tool di vi­sua­liz­za­zio­ne

Kibana offre una vasta gamma di funzioni che possono essere uti­liz­za­te per vi­sua­liz­za­re file di database ana­liz­za­ti. Tuttavia avete davanti a voi molto lavoro prima di poter filtrare e vi­sua­liz­za­re le in­for­ma­zio­ni nella dashboard in modo da poter fa­cil­men­te tenere sott’occhio, ana­liz­za­re e valutare i valori chiave che de­si­de­ra­te. Con questo tutorial di Kibana vogliamo rendere più semplice il primo impatto con la potente in­ter­fac­cia web. Questo articolo spiega come in­stal­la­re cor­ret­ta­men­te Kibana, creare la propria dashboard e integrare i database esistenti nello strumento di vi­sua­liz­za­zio­ne di Elastic.

Passo 1: come far fun­zio­na­re Kibana

Siccome Kibana è stato pro­get­ta­to per vi­sua­liz­za­re i dati in­di­ciz­za­ti con Ela­stic­search, è ne­ces­sa­rio in­nan­zi­tut­to un’in­stal­la­zio­ne fun­zio­nan­te del motore di ricerca e analisi. I pacchetti cor­ri­spon­den­ti per Windows, macOS e Linux sono di­spo­ni­bi­li nell’ Ela­stic­search download center. Il pre­re­qui­si­to è che sia in­stal­la­to un ambiente di runtime Java corrente (64 bit).

Kibana è anche di­spo­ni­bi­le come software mul­ti­piat­ta­for­ma per Windows, macOS e Linux (RPM, DEB). Poiché l’ap­pli­ca­zio­ne si basa sull’ambiente di runtime Ja­va­script Node.js, i vari pacchetti di in­stal­la­zio­ne con­ten­go­no anche i dati binari node.js necessari per eseguire l’ambiente di vi­sua­liz­za­zio­ne: le versioni gestite se­pa­ra­ta­men­te non sono sup­por­ta­te. I diversi pacchetti (ZIP compressi) si possono trovare come Ela­stic­search nella Homepage di Elastic.

N.B.

Gli utenti di Linux e Mac possono anche in­stal­la­re Kibana at­tra­ver­so il re­po­si­to­ry Elastic uti­liz­zan­do i gestori di pacchetti apt e yum. Istru­zio­ni det­ta­glia­te in merito sono di­spo­ni­bi­li nel manuale online.

Se avete de­com­pres­so il pacchetto Kibana, eseguite il file bin/kibana (macOS, Linux) o bin\kibana.bat (Windows) per far fun­zio­na­re il server Kibana.

Infine potete ri­chia­ma­re il back end Kibana nel vostro browser tramite l’indirizzo 'http://localhost:5601' (Ela­stic­search deve già essere in ese­cu­zio­ne).

Passo 2: inserire dati su Kibana

Per far luce sulla dashboard di Kibana e sulle sue fun­zio­na­li­tà, l’ap­pli­ca­zio­ne deve essere dotata di dati. Sul sito web di Elastic ci sono tre database sca­ri­ca­bi­li gra­tui­ta­men­te che in questo tutorial uti­liz­zia­mo a scopo di test. Si tratta dei tre database men­zio­na­ti sopra “sha­ke­spea­re.json” (database di opere complete di William Sha­ke­spea­re), “accounts.zip” (set di account fittizi) e “logs.jsonl.gz” (set di file log generati ca­sual­men­te).

Scaricate e de­com­pri­me­te i tre file (file account e file log) e salvateli nella posizione che de­si­de­ra­te.

Prima di immettere i dati è ne­ces­sa­rio creare mapping (mappature) per i campi del database di Sha­ke­spea­re e server log. Queste mappature dividono i documenti nell’indice in gruppi logici e spe­ci­fi­ca­no anche le proprietà dei cambi, come ad esempio la loro ri­cer­ca­bi­li­tà. Lo strumento giusto per la con­fi­gu­ra­zio­ne dei mapping è la console, che può essere trovata nell’in­ter­fac­cia di Kibana sotto le voci di menu “Dev Tools” “Console”.

Ora inserite i seguenti mapping in suc­ces­sio­ne 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 uti­liz­za­te l’API bulk di Elastic per caricare i set di dati con Curl at­tra­ver­so il terminale. Su Windows invece uti­liz­za­te Po­wer­Shell con il Invoke-Rest­Me­thod (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"
N.B.

A seconda della potenza di calcolo po­treb­be­ro essere necessari alcuni minuti per immettere i dati.

Tornate alla console di Kibana per ve­ri­fi­ca­re il successo del processo di ca­ri­ca­men­to con la seguente GET Request:

GET /_cat/indices?v

Se i dati sono inseriti come pia­ni­fi­ca­to, l’output sarà simile al seguente:

Passo 3: definire un primo modello di indice

Affinché Kibana venga a co­no­scen­za di quali dati debba elaborare, è ne­ces­sa­rio creare modelli per gli Indicessha­ke­spea­re”, “bank” e “logstash”. Definite il primo come segue:

  1. Aprite il menu “Ma­na­ge­ment” e cliccate su “Index patterns”. Quando si crea il primo pattern di indice la pagina “Create index pattern” si apre au­to­ma­ti­ca­men­te. In al­ter­na­ti­va potete ri­chia­mar­la tramite il pulsante cor­ri­spon­den­te che porta lo stesso nome.
  2. Inserite “shakes*” nel campo “Index pattern” e cliccate su “Next step”.
  3. Poiché non è ne­ces­sa­ria alcuna par­ti­co­la­re con­fi­gu­ra­zio­ne per questo modello, saltate il passo suc­ces­si­vo di con­fi­gu­ra­zio­ne e terminate la creazione del modello di­ret­ta­men­te facendo clic su “Create index pattern

Ripetete i passaggi per il pattern “ba*” che viene au­to­ma­ti­ca­men­te assegnato all’indice “bank”. Infine definite anche un modello di indice de­no­mi­na­to “logstash*” per gli indici dei tre server log. Tuttavia con questo modello non si salta il menu di con­fi­gu­ra­zio­ne, ma si seleziona invece la voce “@timestamp” nel menu a discesa “Time Filter field name”, poiché questi record con­ten­go­no dati di serie temporali. Infine fate clic come nei due modelli pre­ce­den­ti su “Create index pattern”.

Passo 4: ricerca nei record inseriti

Dopo aver popolato il server Kibana con i record potete avviare una query Ela­stic­search per cercare in quei record e filtrare i risultati. Andate al menu “Discover” e se­le­zio­na­te il modello di indice per la vostra ricerca at­tra­ver­so 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 vi­sua­liz­za­re solo gli account che sod­di­sfa­no de­ter­mi­na­ti criteri. Ad esempio, per cercare conti che abbiano un saldo superiore a 47.500 e che ap­par­ten­ga­no a persone che abbiano più di 38 anni, immettete il seguente comando nella casella di ricerca:

balance:>47500 AND age:>38

Discover re­sti­tui­rà quindi le voci per i quattro conti 97, 177, 878 e 916 che cor­ri­spon­do­no alle ca­rat­te­ri­sti­che se­le­zio­na­te.

Uti­liz­za­te il pulsante “Save” nella barra dei menu in alto per salvare le ricerche filtrate con il nome de­si­de­ra­to.

Passo 5: vi­sua­liz­za­re i dati

Con i pre­pa­ra­ti­vi fatti finora in questo tutorial di Kibana siete ora in grado di vi­sua­liz­za­re i dati che sono stati im­ple­men­ta­ti 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 per­cen­tua­le del totale di 1.000 conti rientra in de­ter­mi­na­ti in­ter­val­li di saldo e dall’altro come cade la di­stri­bu­zio­ne specifica per età all’interno di questi in­ter­val­li.

Aprite in primo luogo il menu “Visualize” e cliccate su “Create a vi­sua­li­za­tion” per ottenere un elenco dei tipi di vi­sua­liz­za­zio­ne di­spo­ni­bi­li. Quindi se­le­zio­na­te 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 in­nan­zi­tut­to ciascuna sezione del saldo del conto, fate clic su “Split Slices” e scegliete “Range” dal menu a discesa “Ag­gre­ga­tion”:

Alla voce “Field” cercate ora la voce “balance” e clic­ca­te­la, 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 di­stri­bu­zio­ne dei conti tenendo conto degli in­ter­val­li di saldo stabiliti.

Nella seconda fase ag­giun­ge­te un altro anello al grafico che vi­sua­liz­za la di­stri­bu­zio­ne 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 se­le­zio­na­te poi “Terms” nel menu a discesa. Cercate sotto “Field” la voce “age” e applicate le modifiche con “Apply change”.

La vi­sua­liz­za­zio­ne può ora fa­cil­men­te essere salvata tramite il pulsante “Save” situato nella barra superiore del menu.

Passo 6: or­ga­niz­za­re la dashboard

In questo tutorial verrà presa in con­si­de­ra­zio­ne bre­ve­men­te anche la dashboard di Kibana. Ora potete uti­liz­za­re la ricerca e la vi­sua­liz­za­zio­ne salvate nei passaggi 4 e 5 per creare una prima dashboard di prova. Per fare ciò se­le­zio­na­te la dashboard nella na­vi­ga­zio­ne della pagina e cliccate su “Create new dashboard” e quindi su “Add”. Kibana a questo punto elencherà au­to­ma­ti­ca­men­te tutte le vi­sua­liz­za­zio­ni me­mo­riz­za­te o le ricerche Ela­stic­search:

Facendo clic con il tasto sinistro del mouse sulla dashboard si aggiunge la vi­sua­liz­za­zio­ne del saldo del conto corrente e il risultato della ricerca di esempio, dopodiché è possibile vi­sua­liz­zar­li entrambi in pannelli separati nella dashboard:

È ora possibile mo­di­fi­ca­re i pannelli, ad esempio regolando le di­men­sio­ni o mo­di­fi­can­do il po­si­zio­na­men­to. È anche possibile mostrare una vi­sua­liz­za­zio­ne o un risultato di ricerca a tutto schermo o eli­mi­nar­lo dalla dashboard. Tramite “Inspect” è inoltre possibile vi­sua­liz­za­re ulteriori in­for­ma­zio­ni sui dati e le query sot­to­stan­ti.

N.B.

La rimozione di un pannello dalla dashboard di Kibana mantiene tuttavia la vi­sua­liz­za­zio­ne o la ricerca salvata.

Vai al menu prin­ci­pa­le