ELK Stack: cos’è e a cosa serve

ELK Stack, acronimo di Elasticsearch - LogStash - Kibana, è un valido strumento per l'ingest e l'analisi dei dati in diversi contesti applicativi. Nato inizialmente per supportare la ricerca testuale, ad oggi le sue funzionalità sono aumentate considerevolmente. E' possibile, infatti, fare l'ingest dei dati mediante Beats e LogStash e/o creare dashboard interattive di analisi mediante Kibana. Scopriamo le sue caratteristiche principali.

Share

Reading time: 6 minutes

Negli ultimi anni il mondo di Elasticsearch si è ampliato notevolmente. Nato come database NoSQL a supporto della ricerca testuale mediante l’indice di Apache Lucene, il progetto ha visto lo sviluppo di altri prodotti open-source: LogStash, Kibana e Beats.

Logstash è un aggregatore di log che raccoglie dati da varie fonti di input (app, database, server, ecc), esegue diverse trasformazioni e pulizia dei dati e, infine, spedisce i dati così ottenuti a varie destinazioni di output supportate tra cui Elasticsearch. Kibana, invece, è un tool di visualizzazione che lavora sopra Elasticsearch, fornendo agli utenti la possibilità di analizzare e visualizzare i dati. Infine, i Beats sono pacchetti software (agenti) che vengono installati sugli host per raccogliere diversi tipi di dati da inoltrare nello stack.

Tutti questi componenti sono più comunemente utilizzati insieme per il monitoraggio, la risoluzione dei problemi e la sicurezza degli ambienti IT (anche se ci sono molti altri casi d’uso per ELK Stack come la business intelligence e l’analisi web). Beats e Logstash si occupano della raccolta e dell’elaborazione dei dati, Elasticsearch indicizza e memorizza i dati e Kibana fornisce un’interfaccia utente per interrogare i dati e visualizzarli.

Perché ELK stack è popolare?

Come detto in precedenza, ELK stack rappresenta una soluzione open-source per la gestione e l’analisi di grandi moli di dati tra cui i log. Il monitoraggio delle applicazioni moderne e delle infrastrutture IT su cui sono distribuite richiede una soluzione di gestione e analisi dei log che permetta di superare la sfida di monitorare quelli che sono ambienti altamente distribuiti, dinamici e rumorosi.

ELK Stack permette di svolgere queste operazioni fornendo agli utenti una potente piattaforma che raccoglie ed elabora i dati da più fonti di dati e li memorizza in un archivio dati centralizzato. Inoltre, può scalare con la crescita dei dati oltre a fornire una serie di strumenti per l’analisi dei dati stessi.

Essendo open-source è possibile installarlo sui propri server e gestirlo in piena autonomia. Esiste anche la soluzione cloud, disponibile in prova per 14 giorni, che in molti casi può essere una soluzione molto vantaggiosa per implementare una soluzione di monitoraggio e/o analisi dei dati in tempi rapidi, altamente affidabile e sicura. L’interfaccia di Kibana, semplice ed intuitiva, garantisce, inoltre, un’operativa elevata anche ad utenti non esperti. Infine, la comunità è molto attiva. Questo comporta un grande supporto oltre ad un’implementazione costante volta a migliorare l’intero stack.

Perché è importante analizzare i log?

Ad oggi, le compagnie non possono permettersi tempi di inattività o di prestazioni lente da parte delle loro applicazioni. I problemi di performance possono danneggiare un marchio e in alcuni casi tradursi in una perdita diretta di entrate. Basti pensare che un sito lento nel caricamento delle pagine, ossia più di 5 secondi, può ridurre di oltre il 50% l’engagement dei nuovi utenti. In modo analogo, anche le questioni di sicurezza e la non conformità agli standard normativi sono importanti. 

Al fine di garantire l’alta disponibilità, l’alta affidabilità e la sicurezza delle applicazioni, cii si affida ai diversi tipi di dati generati dalle applicazioni stesse e dall’infrastruttura che le ospita. Questi dati, siano essi log di eventi o metriche, o entrambi, permettono il monitoraggio dei sistemi e l’identificazione dei problemi nel caso in cui si verifichino. In questo modo si possono studiare soluzioni per migliorare il software, l’architettura e/o intervenire tempestivamente qualora si verificasse un Deny Of Service (DOS).

I log sono sempre esistiti e così i diversi strumenti disponibili per analizzarli. Ciò che è cambiato, però, è l’architettura sottostante agli ambienti che generano questi log. L’architettura si è evoluta in microservizi, containers (ad esempio Docker, Kubernets) e infrastrutture di orchestrazione distribuiti sul cloud o in ambienti ibridi. Inoltre, il volume di dati generato da questi ambienti è in costante crescita il che costituisce una sfida in sé.

Soluzioni centralizzate di gestione e analisi dei log come ELK Stack, consentono di avere una panoramica delle informazioni catturate e, di conseguenza garantire che le app siano affidabili e performanti in ogni momento.

Le moderne soluzioni di gestione e analisi dei log includono le seguenti capacità chiave:

  • Aggregazione: la capacità di raccogliere e spedire i log da più fonti di dati
  • Elaborazione: la capacità di trasformare i messaggi di log in dati significativi per una più facile analisi
  • Storage: la capacità di memorizzare i dati per periodi di tempo estesi per consentire il monitoraggio, l’analisi delle tendenze e i casi d’uso della sicurezza
  • Analisi: la capacità di sezionare i dati interrogandoli e creando visualizzazioni e dashboard su di essi

Come usare ELK stack per l’analisi dei log

I vari componenti di ELK Stack sono stati progettati per interagire tra loro senza troppe configurazioni. Tuttavia, il modo in cui si progetta lo stack può differire notevolmente in base al proprio ambiente e caso d’uso.

Per un ambiente di sviluppo di piccole dimensioni, l’architettura classica sarà la seguente.

Tuttavia, per gestire pipeline più complesse costruite per gestire grandi quantità di dati in produzione, è probabile che vengano aggiunti ulteriori componenti nella vostra architettura di log, per la resilienza (Kafka, RabbitMQ, Redis) e la sicurezza (nginx).

Questo è ovviamente un diagramma semplificato a scopo illustrativo. Un’architettura di produzione completa consisterà in più nodi di Elasticsearch con repliche complete in diverse regioni del vostro data center o cloud al fine di garantire alta disponibilità dei dati e del servizio. In alcuni casi saranno necessarie anche più istanze di Logstash e plugin di alerting.

Solo analisi dei log?

Elasticsearch, ovviamente, non viene utilizzato solo per l’analisi dei log. La sua architettura po’ essere impiegata anche per l’analisi di altre tipologie di dati, quali quelli derivanti dall’Internet Of Things (IOT) o dalle transazioni sugli e-commerce.

Grazie, infatti, a LogStash è possibile definire dei trasformatori personalizzati per qualsiasi tipologia di dato. Le funzionalità di indicizzazione dei testi da parte di Apache Lucene permettono di creare motori di ricerca di dati non strutturati. Infine, con i diversi tools di visualizzazione offerti da Kibana si possono creare dashboard per diversi scopi di analisi. La gestione degli accessi, dei ruoli degli utenti e dei workspaces garantiscono la creazione di ambienti orientati alle esigenze delle diverse figure professionali di un’azienda che devono analizzare i dati.

ELK stack è l’unica soluzione?

La risposta alla domanda del titolo è palesemente NO! Come visto anche in altri articoli su questo blog, Data lakes: soluzioni in GCPMongoDB Compass – estrarre statistiche mediante l’aggregation pipeline, esistono anche altri strumenti che permettono la cattura e l’analisi dei dati.

MongoDB, essendo il più popolare database NoSQL, offre diverse opportunità per salvare e analizzare diverse tipologie di dati anche eterogenee tra di loro. Mediante opportuni metodi di modellazione, descritti nel libro Progettare con MongoDB: I migliori modelli per le applicazioni, è possibile ottimizzare lo spazio di archiviazione richiesto oltre ad aumentare le performance di analisi. A differenza di Elastisearch, il polimorfismo dei documenti in MongoDB permette di salvare anche informazioni con caratteristiche diverse mappate sullo stesso campo. Di contro, l’analisi del testo non è così performante e precisa come in Elasticsearch. Solo mediante Atlas Search, funzionalità a pagamento sul cloud, si possono ottenere ad oggi risultati comparabili. Discorso simile per la creazione delle dashboard. MongoDB Charts è sicuramente un prodotto valido ma non è disponibile al di fuori del cloud.

Un’altra soluzione è per esempio un servizio cloud con GCP. Nell’ambiente di Google si possono creare architetture anche molto complesse per fare l’ingest dei dati e analisi correlate. Si possono sfruttare gli strumenti di PubSub per la cattura dei dati, lo storage per creare datalake e i BigTable per la costruzione di data warehouse. Infine, con Google Data Studio è possibile creare dashboard per la condivisione delle analisi. A parte l’ultimo strumento che può essere usato anche senza costi, tutte le altre soluzioni richiedono una spesa in base all’utilizzo delle risorse del cloud. Per questo motivo, il suo impiego è di solito limitato ad ambienti molto complessi in cui l’analisi dei dati per il solo monitoraggio non è il cuore del sistema.

Quindi, in base alle risorse a vostra disposizione, al caso d’uso e alle vostre competenze potete scegliere la soluzione che più soddisfa le vostre esigenze. Tutte sono molto valide, ma rispondono a quesiti diversi (e in alcuni casi anche a tasche diverse!).

Letture consigliate

More To Explore

Intelligenza artificiale

Gradio: applicazioni web in python per AI [parte1]

Scrivere applicazioni web per i nostri modelli di machine learning e/o di intelligenza artificiale può richiedere molto tempo e competenze che non sono in nostro possesso. Per snellire e velocizzare questo compito ci viene in aiuto Gradio, una libreria Python pensata per creare applicazioni web con poche righe di codice. Scopriamo le sue funzionalità base con alcuni esempi.

Intelligenza artificiale

AI: le migliori tecniche di prompt per sfruttare i LLM

Le tecniche di prompt sono alla base dell’uso dei LLM. Esistono diversi studi e linee guide per ottenere i migliori risultati da questi modelli. Analizziamo alcuni di essi per estrarre i principi fondamentali che ci permetteranno di ottenere le risposte desiderate in base al nostro compito.

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!