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

Telecamere Ip con accesso "nascosto"

Telecamere Ip con accesso "nascosto" Storia triste di un auto-hacking obbligato che mi ha fatto scoprire come la nostra privacy è realmente messa a rischi. Storia Ho acquistato dal mercatino/fiera del Radioamatore di Fasano quattro telecamere IP. La scatola riporta "Smart Camera" LF4810. Ne ho montata una e testata in tutte le sue funzionalità per oltre un mese. Chiaramente la manualistica scarsissima, come da tradizione in questi prodotti cinesi di costo molto concorrenziale, consiste in un "pieghevole" di 4 facciate. Chiaramente non erano documentate le impostazioni necessarie per attivare i protocolli ONVIF e RTSP che mi sono indispensabili per l'uso che ne devo fare. Nonostante questa scarsa documentazione dopo l'installazione base fatta con l'apposita app: tutto sembrava corretto. Chiaramente la prima azione che ho compiuto è stata quella di cambiare la password che di default è "123". Subito dopo h...

Dynamic DNS con Duckdns.org in HTTPS

Obiettivo Avere un dominio https con certificato valido da usare come endpoint pubblico per Homeassistant e per un WebHook per i bot telegram. Fase 1 Registrazione del dominio in un servizio di dynamic DNS come https://www.duckdns.org/   : Scegliere per quale sistema operativo installare il client che si occuperà dell'aggiornamento dell'ip: Seguire la semplice guida per la configurazione del processo cron: Fase 2 Creazione del certificato e installazione sul server. Di tutto questo si occuperà una applicazione che si chiama certbot. $ sudo add-apt-repository ppa:certbot/certbot $ sudo apt install python-certbot-apache $ sudo certbot --apache -d ol3.duckdns.org -d www.ol3.duckdns.org Fase 3 Esporre il servizio https sulla rete pubblica. Aprire o reindirizzare la porta 443 verso l'host sul quale si è fatta la configurazione di certbot dal proprio router. Il certificato di certbot è valido per novanta giorn...

Wemos D1 mini ESP8266 - Aggiornamenti OTA

Wemos D1 mini - Aggiornamenti OTA Cosa è Può risultare scomodo dover collegare con un cavo usb un ESP8266 e derivati (come in questo caso un Wemos D1 mini) ad un pc per un semplice aggiornamento software.  OTA sta per "Over The Air". Con questa tecnologia si ha la possibilità di modificare il firmware di questi microcontrollori mediante la wi-fi.  Come funziona Per ottenere questa funzionalità ci si è inventato un meccanismo molto semplice: il nostro microcontrollore, dotato della capacità di aggiornamenti OTA, ha in carico un firmware che all'avvio non fa altro che, usando la libreria ArduinoOTA, collegarsi alla wi-fi (della quale avremo fornito SSID e Password) e mediante il " Multicast DNS " dichiara la sua presenza sulla WI-FI LAN, l' Ide di Arduino rileva questa presenza e ci fornisce il supporto alla comunicazione mediante wi-fi (la porta di rete rilevata prenderà il nome del modello e l'ultima parte del suo mac-address per identificarlo, se non r...