Passa ai contenuti principali

Microservizi - Monitoraggio






Microservizi - Monitoraggio

Costruzione di una "Dashboard" di monitoraggio di un sistema software con componenti a microservizi e non. Gestione dei log.


Introduzione




Sempre nel contesto delle architetture a microservizi, ma anche in un contesto più generale di applicazioni distribuite risulta necessario avere e/o fornire all'utente un pannello di controllo o Dashboard. Può essere orientata a fornire dati di sintesi come "numero di processi completati con successo" e "numero di processi completati con insuccesso" ma anche a avere informazioni tecniche sul funzionamento delle componenti del sistema. Ultimo, ma non ultimo, avere uno storico di queste informazioni. Essendo, le architetture a microservizi, parcellizzate per natura in tante componenti avere uno strumento che consenta una visione d'insieme è indispensabile anche per capire dove intervenire in caso di anomalie.


Dashboard

Vogliamo aggregare e rappresentare sinteticamente i dati provenienti da svariate sorgenti. Il meccanismo migliore per raccogliere informazioni in una architettura a componenti come quella che stiamo costruendo è mediante i log.
A questo punto esistono due tipi di scenari da gestire: il primo è dato dalle applicazioni sviluppate da noi stessi. In questo caso possiamo decidere come e quando scrivere log in modo da poter rispondere in maniera adeguata ad una serie di domande. Ad esempio: quante elaborazioni, svolte da uno specifico microservizio, sono andate a buon fine ? Quante in errore ? Ecc. Il secondo scenario è dato dalle app di terze parti, che possono girare dentro la nostra infrastruttura ma anche fuori. Di queste applicazioni bisogna raccogliere i log e sicuramente filtrarli e modificarli perché possano rispondere a domande come quelle precedenti. E poi vanno "inviati" ad uno strumento di raccolta unico, sia per le nostre applicazioni che per quelle di terze parti.


Soluzione proposta


La soluzione proposta si basa su uno stack relativamente recente ma che ha definito un modello di riferimento in questo campo: ELK.
Cioè Elasticserach + Logstash + Kibana. Nello specifico si è partiti dalla "JHipster Console" (progetto git) che al momento della scrittura di questo post usa la versione 6.4 di ELK corredato da altre componenti. Dettaglio delle componenti di questa soluzione:

Elasticsearch : fornisce la storicizzazione dei dati e gli strumenti di ricerca e filtraggio all'interno di questi

Logstash : fornisce un servizio in ascolto per la raccolta dei log, il filtraggio e la trasformazione di questi e l'inserimento in Elasticsearch

Kibana : rappresenta i dati di sintesi letti da Elasticsearch

elasticAlert : fornisce un sistema di messaggistica su eventi

Beats : fornisce l'invio versi Elasticsearch dei log provenienti dalle componenti sviluppate da terze parti delle quali non possimao impostare il logging.

Il progetto git citato prima e lo si è fatto evolvere alla versione di ELK 7.1.0 mediante l'adeguamento di tutte le componenti e impostazioni. Il progetto utilizzato per la console qui esposta è questo:

DashboardConsole






Licenza Creative Commons
Quest'opera è distribuita con Licenza Creative Commons Attribuzione 4.0 Internazionale (CC BY 4.0) - Condividi allo stesso modo

Commenti

Post popolari in questo blog

Alzatapparella con Shelly 2 e Alexa

Alzatapparella con Shelly 2 e Alexa

Qui spiego tutti i passaggi per installare lo Shelly 2 per automatizzare una tapparella e come configurarlo in Alexa.

Impianto attuale




Collegamenti da effettuare:

Schema teorico:





Collegamenti reali:



Impostazioni:

Dopo aver collegato tutto si procede alla configurazione.
Prima di tutto installare la App "Shelly" cercandola nel proprio store e create un account:

















JHipster - Microservizi 1

Microservizi - 1

Introduzione
In questo post descrivo come creare una architettura a microservizi con JHipster. ArchitetturaMicroservizio
Il microservizio che andremo a creare deve avere totale autonomia ed essere auto-consistente. Questo dice la letteratura. In effetti il microservizio deve svolgere un servizio "completo" a livello di modulo di business logic. Ad esempio in un sistema complesso la gestione delle mail integrata. Quindi deve fornire servizi come l'elenco delle mail di uno specifico utente, crearne, cancellarne, inviarne di nuove. Per fare questo userà il database per accedere alla lista della mail dello specifico utente (che qui ipotizziamo stiano su un db). Questo quello che deve fare. Quello che NON deve fare è autenticare l'utente che gli invia le richieste. Quindi di questa fase se ne occuperà un altro modulo. L'autenticazione, in questo prototipo, avverrà mediante token JWT. Creaiamo il microservizio.
Creato con il wizard di JHipster selezionando il…

Docker

Introduzione a Docker Cosa èDocker è un sistema di "containerizzazione" che punta a costruire uno stack tecnologico virtuale per far girare le applicazioni allo stesso modo in qualunque contesto di delivery. La virtualizzazione avviene a livello di kernel di sistema operativo quindi risulta molto più leggero un docker rispetto ad una macchina virtuale: virtualizza solo ciò che è necessario al funzionamento dello stack anziché virtualizzare l'intero sistema operativo. Con stack tecnologico intendo l'insieme di applicazioni server, librerie e componenti software in generale necessarie a far funzionare una certa applicazione.


Docker è stato sviluppato per semplificare il delivery di applicazioni complesse e supporta le architetture a microservizi.

Docker si presenta come un demone che va installato sulle macchine che devono far girare i "docker". Esistono dei meccanismo di bilanciamento per garantire l'affidabilità e la continuità del servizio oltre a gestire …