[BigData] ELK Stack: ElasticSearch + Logstash + Kibana

ELK Stack

Nel presente articolo riporto alcune informazioni rilevanti relative all’ ELK Stack, set di tecnologie open-source più diffuse e utilizzate per l’implementazione di una soluzione di Log Management, costituito dai seguenti prodotti:

  • ElasticSearch: server di ricerca basato su Lucene, e, dunque, con capacità “full-text”, e con supporto ad architetture distribuite e su larga scala. Le modalità di interazione e di interrogazione con la base dati proprietaria (su file system) avvengono attraverso interfaccia RESTful. Le informazioni sono memorizzate internamente come documenti JSON; Riferimento: https://www.elastic.co
  • LogStash: progetto Open Source scritto in JRuby, distribuito in formato JAR, la cui funzione principale è quella di fare il pipe di un qualsiasi evento, che può essere un log di sistema, una riga di testo, un tweet, ecc. Logstash può interfacciarsi con numerosi input, elaborarli, filtrarli e passarli ad un motore di ricerca o memorizzazione, come MongoDB, Redis, ElasticSearch e molto altro, configurando (attraverso un opportuno file di configurazione) la pipeline per l’acquisizione, il filtering e l’invio dei dati. L’integrazione con ElasticSearch è quella più potente e veloce per l’implementazione di una soluzione di log managementRiferimento: https://www.elastic.co/products/logstash
  • Kibana: è un tool che permette di visualizzare, grazie a strumenti di data analytics, le informazioni indicizzate ed acquisite da ElasticSearch o altri prodotti. Permette la rappresentazione delle informazioni in tempo reale, attraverso dashboard configurabili con vari tipi di widget (pie chart, istogrammi, grafici cartesiani, ecc.). Riferimento: https://www.elastic.co/products/kibana

La soluzione ELK Stack permette di implementare differenti modelli architetturali di alta scalabilità. Per maggiori dettagli su LogStash, vi consiglio il seguente riferimento: LogStask Book. Si riportano, di seguito, alcuni dei modelli di riferimento dell’ELK stack.

Modelli di riferimento: soluzioni con ELK Stack

Soluzione di base
La soluzione di base proposta da ELK Stack prevede la configurazione di una singola istanza di LogStash in modo da acquisire i dati non strutturati da differenti sorgenti. E’ possibile configurare più istanze di LogStash (Agent Shipper), in modo da acquisire i dati da datasource differenti ed indirizzare le informazioni strutturate (documenti JSON) ad un’unica istanza di ElasticSearch. Quest’ultimo effettua l’indicizzazione e la memorizzazione dei documenti JSON acquisiti.

ELKStack_SoluzioneBase

Tramite un file di configurazione è possibile far puntare l’istanza agent di LogStash ad uno o più datasource (SysLog Server, File System, DBMS, ecc.), grazie all’utilizzo di vari input plugin.

Inoltre, è possibile configurare le destinazioni, a cui inviare i documenti JSON degli eventi acquisiti, utilizzando vari output plugin. Il parsing e il filtering degli eventi acquisiti dai vari datasource può essere configurato grazie a filter plugin.

ELKStack_SoluzioneBase

Di seguito, si riporta un esempio di trasformazione di un evento di log in formato SysLog (formato non strutturato) in un documento JSON (formato strutturato):

SysLog Message:

Dec 17 16:00:35 joker systemd-logind[2113]: New session 31581 of user bob.

JSON Log Event:

{
  "host" : "joker.example.com",
  "priority" : 13,
  "timestamp" : "Dec 17 16:00:35",
  "logsource" : "joker.example.com",
  "program" : "bob",
  "pid" : "23262",
  "severity" : 5,
  "facility" : 1,
  "facility_label" : "user-level",
  "severity_label" : "Notice",
  "@timestamp" : "2012-12-17T16:00:35.000Z",
  "@version" : "1",
  "message" : "New session 31581 of user bob",
  "type" : "syslog"
}

Soluzione con coda di messaggi
Quando i dati inviati alla pipeline di LogStash eccedono l’abilità del cluster di ElasticSearch di poterli prendere in input, conviene utilizzare un message queue come buffer. Prevedendo un message queue nell’architettura si garantisce un livello di protezione per evitare la perdita dei dati. In questo modo si riesce ad evitare la congestione dell’istanza Indexer, la quale “scoda” i messaggi sulla coda uno alla volta e in maniera asincrona.

ELKStack_SoluzioneCodaJMS

Soluzione ad alta affidabilità
ELKStack_SoluzioneAltaAffidabilità

La soluzione su rappresentata è quella più completa dal punto di vista dell’alta affidabilità. Grazie ad un bilanciatore è possibile instradare differenti datasource verso una istanza agent di LogStash attiva ed inviare il messaggio di evento sul message queue. In pratica, ogni istanza agent di LogStash viene configurata su input multipli e l’architettura può essere scalata orizzontalmente. Pipeline separate incrementano, dunque, la reliability del sistema ed eliminano i single points of failure.

Modello per la memorizzazione degli eventi
Nella soluzione con l’ELK Stack, il prodotto ElasticSearch usa Apache Lucene per la creazione degli indici. Ogni indice è un namespace logico che permette di recuperare tutti gli eventi collezionati nella base dati NOSQL di ElasticSearch. Di default, LogStash invia il documento JSON sull’indice che ha nel nome il suffisso del giorno di acquisizione dell’evento, ad esempio: logstash-2015.11.31.

Questo tipo di memorizzazione potrebbe essere preso come riferimento per collezionare le informazioni in tabelle/indici creati su base temporale (ad esempio, mensilmente). In questo modo si potrebbero salvare tutti gli eventi su base temporale, evitando di caricare di troppi record una singola tabella. Tale scelta dipende anche dai tipi di correlazione che occorrerà fornire per la Log Analysis.

Volendo comparare il modello di memorizzazione di ElasticSearch con quello di un database relazionale si ha che:

  • Un index è una tabella
  • Un document è una riga della tabella
  • Un field è una colonna della tabella.

 

Per maggiori dettagli vi rimando ai tutorial su Mokabyte:

 

Protetto: [BigData&NoSQL] Log Management: un caso d’uso di Big Data e di Operational Intelligence

Il contenuto è protetto da password. Per visualizzarlo inserisci di seguito la password:

[Gartner] Il futuro degli Analytics: precisi, trasparenti e decisivi

Interessante il webinar di Gartner intitolato The future of Analytics: precise, transparent and decisive (Il Futuro degli Analytics: Precisi, Trasparenti e Decisivi), tenutosi online il 18 giugno scorso.

Si è parlato dei limiti attuali e delle prossime “sfide” degli analytics , che da “semplici” strumenti di monitoraggio del traffico web (web analytics) sono diventati vere e proprie tecnologie di misurazione (business analytics), in grado di prevedere opportunità di business, scoprire le abitudini degli internauti (pagine visitate, ricerche, preferiti, ecc.), monitorare la “visibilità” delle risorse web sulla rete e il loro impatto (buzzing), in grado di costruire “conoscenza”.

Per far sì che gli strumenti di analytics siano efficaci, occorre “scremare” le informazioni carpite dalla rete, fornendo loro soltanto quelle strettamente necessarie. Ad esempio, costruendo vere e proprie “basi di conoscenza”, in cui memorizzare soltanto le informazioni di interesse per il dominio di analisi. Su tali informazioni, un’organizzazione, ad esempio, si può condurre operazioni di sintesi e di analisi per supportare i propri processi decisionali.

Dunque, gli obiettivi degli Analytics sono riassunti da Gartner nei seguenti punti:

  1. Creare sistemi di misurazione e di classificazione precisi ed operativi. Quest’ultima caratteristica è espressa dal termine “actionable“: gli analytics devono essere finalizzati ad una azione o in qualche modo la devono preparare
  2. Far sì che dall’ “esperienza” dei clienti (customer-facing experience), semplicemente monitorandone e valutandone il grado di soddisfazione (customer satisfaction) o il sentiment, si possano costruire Modelli di Business
  3. Supportare il processo decisionale (decision making)

 

Il futuro degli analytics è la precisione: nel 20° secolo, i processi di business furono standardizzati, rendendoli più omogenei per arrivare all’efficienza. Nel 21° secolo, i processi di business saranno personalizzati, diventando più precisi per arrivare all’efficacia. Si ricorda che per efficacia si intende la capacità di raggiungere un determinato obiettivo, mentre per efficienza la capacità di raggiungerlo con la minima allocazione possibile di risorse.

Per raggiungere questa efficacia occorre mettere su un Performance Measurement System, nel quale distinguere una fase “intensiva” ed una “estensiva”. Nella fase intensiva, detta “esecutiva“, si vengono a definire le strategie di business, le metriche e gli obiettivi di ogni metrica. Nella fase estensiva, detta “di integrazione e di analisi“, si integrano i dati (interni ed esterni), si calcolano le metriche, si riportano i valori attuali e gli obiettivi per ogni metrica, per poi esaminare le varianze, gli indicatori e gli impatti dei cambiamenti. L’obiettivo di un sistema siffatto è quello di analizzare i dati, per ottimizzare l’allocazione di risorse (la performance, appunto).

La sfida è di passare dai tradizionali strumenti di Business Intelligence e di Analytics a strumenti in grado di supportare il decision making, per attuare azioni-risposte efficaci in tempo reale.

analytics_1

 

Potremmo definire dei livelli di crescita strutturata per quanto riguarda la “maturità” degli Analytics, visti come tecnologie di supporto alle decisioni di una organizzazione:

  • Livello 1. Caotico: ogni evento che porta ad una decisione viene trattato differentemente. Non vi è uno scambio di feedback tra i processi di business;
  • Livello 2. Ripetibile: alcuni processi che portano ad una decisione vengono condivisi tra gruppi e vi è un minimo scambio di feedback sulle decisioni;
  • Livello 3. Definito: si definiscono processi per il supporto alla decisione all’interno di una organizzazione. Vi è scambio di feedback, ma non vi è alcuna connessione tra i tipi di decisione;
  • Livello 4. Gestito: le decisioni sono collegate da metriche di performance, processi e sistemi di registrazione (link operazionali, decisioni tattiche e strategiche)
  • Livello 5. Ottimizzato: il processo di decisione è continuamente rivisto e migliorato. Il feedback è proattivo tra i diversi tipi di decisione (tecniche ottimizzate di decisione).

 

analytics_2

Ecco i livelli di business analytics in cui ci si muove:

  • Dall’INFORMAZIONE si riesce a capire attualmente cosa succede e perchè; DESCRIPTIVE & DIAGNOSTIC ANALYTICS. Ad esempio, “Chi sono i miei clienti?
  • Dai FORESIGHT (previsioni) si riesce a capire cosa accadrà: PREDICTIVE ANALYTICS. Ad esempio, “A quali clienti potrebbe interessare la mia prossima offerta?”
  • Dalle DECISIONI si riesce a capire cosa fare e come muoversi: PRESCRIPTIVE ANALYTICS. Ad esempio, “Quale offerta fare a ciascun cliente?”

La frontiera finale delle capacità analitiche (Analytic Capabilities) è costituita dal Prescriptive Analytics. L’Analisi prescrittiva è un’area di business analytics (BA) dedicata a trovare le migliori linee d’azione per una data situazione. Mentre l’analisi descrittiva si propone di fornire indicazioni (insight) su ciò che è successo e quella predittiva aiuta a costruire modelli di previsione su quello che potrebbe accadere, l’analisi prescrittiva serve a determinare la soluzione migliore o l’esito tra le varie scelte, dati parametri noti. L’Analisi prescrittiva può anche suggerire opzioni decisionali per il modo di usufruire di una futura opportunità o attenuare un rischio futuro, e illustrare le implicazioni di ciascuna opzione di decisione. In pratica, l’analisi prescrittiva può continuamente e automaticamente processare nuovi dati per migliorare l’accuratezza delle previsioni e per fornire migliori opzioni decisionali.

Le tecnologie di analisi prescrittiva devono essere adattive per prendere in considerazione il Big Data, la velocità e la varietà di dati che i processi mission critical e i loro ambienti produrranno.

In un processo ad alta intensità di lavoro, l’approccio prescrittivo analizza le potenziali decisioni, le interazioni tra le decisioni, le influenze che portano a queste decisioni e produrre, infine, un “corso” ottimale di azioni da eseguire in tempo reale.

Per attuare un PRESCRIPTIVE ANALYTICS, occorre definire ciò che segue:

  • un insieme di azioni (decisioni e non solo predizioni)
  • calcolare i risultati attesi delle opzioni di decisioni alternative (spesso chiamati “decision model“)

analytics_3

 

L’idea è quella di supportare il processo decisionale come segue:

  • si scoprono gli eventi di interesse sulle informazioni
  • tali eventi verranno analizzati ed utilizzati dai processi decisionali per poter attuare delle azioni
  • le azioni svolte sono continuamente valutate, in modo da monitorarne le performance

L’Analisi prescrittiva anticipa non solo che cosa accadrà e quando accadrà, ma anche perché accadrà. Inoltre, suggerisce opzioni di decisione su come approfittare di una futura opportunità o attenuare un rischio futuro e dimostra l’implicazione di ogni opzione. L’Analisi prescrittiva può continuamente e automaticamente prendere nuovi dati per migliorare la precisione di previsione e fornire migliori opzioni decisionali. Essa ingerisce “dati ibridi”, una combinazione di dati strutturati e non strutturati, e regole di business per prevedere quello che ci aspetta e di prescrivere come approfittare di questo futuro predetto senza compromettere le altre priorità.

Progressi nella velocità di calcolo e lo sviluppo di complessi algoritmi matematici applicati ai set di dati (Big Data) hanno reso possibile l’analisi prescrittiva. Tecniche specifiche utilizzate nelle analisi prescrittive comprendono l’ottimizzazione, la simulazione, la teoria dei giochi e metodi di decisione-analisi.

Ecco video di IBM che spiegano il passaggio dal descrittive analytics, ai predicative analytics e prescriptive analytics: http://searchcio.techtarget.com/definition/Prescriptive-analytics

Il Tag Cloud: dai blog al Big Data

Ultimamente si parla molto del tag cloud (o word cloud), uno strumento che sta diventando particolarmente utile nell’ambito della data analysis. Basta guardare il grande successo di Expert Systems, nell’ambito appunto dell’analisi semantica di varie fonti online (Expert Systems Rassegna Stampa). Ma il tag cloud c’è da un bel po’: nei blog, per esempio, esiste dalla notte dei tempi, e nell’era del Big Data e dell’Internet of Things ha acquisito la sua giusta notorietà, visto come uno strumento utile per filtrare un bel po’ di informazioni e concetti sulla miriade di contenuti sparsi in rete.

Il Tag Cloud non è altro che una rappresentazione visiva di concetti, detti keyword metadata (tags), ricercati su fonti online e visualizzati sotto forma di testo semplice. I tag sono solitamente parole singole e l’importanza di ognuno di essi è mostrata con un font di dimensione diffente e/o uno specifico colore. Avere una rappresentazione “a nuvola” ci aiuta ad estrapolare meglio i concetti del dominio di analisi e a navigarlo (magari associando ai singoli tag anche dei link ipertestuali agli articoli/fonti da cui sono stati estratti).

Solitamente i tag cloud si basano sul concetto di “frequency“, ossia associano a ciascun tag una frequenza, il numero di volte in cui quel tag è stato “rintracciato” in un singolo item (articolo, pagina web o fonte) e, dunque, sulla “popularity” di quel concetto sulla rete.
Esiste anche un modo per “categorizzare” i tag, con i cosiddetti tag cluster (clustering): i tag che si riferiscono allo stesso contesto (categoria o tassonomia) possono essere classificati in “sotto-nuvole”, dette appunto cluster. La categorizzazione avviene spesso applicando algoritmi di similarità semantica (Natural Language Processing) o statistici.

Sui blog, questa categorizzazione di informazioni viene generata dagli utenti mediante l’utilizzo di parole chiave (o tag) scelte liberamente, e si parla di Folksonomie. Vi invito a leggere l’interessante articolo: “Folksonomy: questione di semantica“.

Vi riporto ora delle librerie che ho studiato e utilizzato per la realizzazione di una tag cloud:

 

Creative Commons License
This work by Francesco Ficetola is licensed under a Creative Commons Attribution 4.0 International License.
Based on a work at www.francescoficetola.it.
Permissions beyond the scope of this license may be available at http://www.francescoficetola.it/2012/12/06/il-tag-cloud-dai-blog-al-big-data/.

[BigData] Il Big Data Forum 2012 a Roma: le soluzioni ICT per un vantaggio competitivo

Il 21 Novembre scorso si è tenuta a Roma la 2° edizione del Big Data Forum, dallo slogan “Big Data Forum 2012: per fare chiarezza sul fenomeno dell’esplosione dei dati e scoprire le soluzioni ICT che consentono di trasformarlo in vantaggio competitivo“.

L’evento, pubblicizzato da ICT4Executive, con partner di eccezione come Microsoft, Oracle e Informatica Software, è stato condotto da relatori di riguardo, particolarmente distinti sia nel campo della ricerca ICT (in particolare, nella Business Intelligence), che in quello strategico aziendale.

Ho partecipato all’evento e vi riporto un resoconto dettagliato delle tematiche affrontate ed estrapolate dagli interventi dei relatori presenti.

 

La Big Data Analysis

Il moderatore Carlo Vercellis, responsabile dell’Osservatorio di Business Intelligence & Big Data Analytics e professore alla School Management del Politecnico di Milano, ha sottolineato che il BigData è un tema di attualità molto in voga nell’ultimo periodo, come il cloud computing del resto, ma che da fenomeno del momento deve trasformarsi in innovazione tecnologica, in grado di cambiare gli attuali schemi e paradigmi del modo di trattare le informazioni su Internet.
Come non citare lo slogan di Tim Berners-LeeROW DATA, NOW!“. Dati grezzi da trattare, che sono diventati (e diventeranno ancora) troppi e dai cui è difficile poter estrarre informazione. Un fenomeno di cui si vocifera particolarmente nell’ultimo periodo, visti gli impegni delle varie iniziative di Open Data e eGov, che “impongono” ai detentori illegittimi di dati (ndr. come pubbliche amministrazioni) di distribuire informazioni di proprietà dei cittadini.

 

I dati diventano “interessanti” solo se siamo capaci di estrarre da essi un contenuto utile, da trasformare in servizio per gli utenti finali.

 

Continua la lettura