Architettura Monitoring-Alerting

Il nostro ERP cloud, intuitivo e di facile utilizzo a livello di frontend, nasconde una infrastruttura molto articolata.

Per gestire al meglio questa complessità, garantirti un‘immediata gestione di eventuali problematiche e un controllo costante delle prestazioni di tutto il sistema, abbiamo progettato un granulare sistema di Monitoring e Alerting. Grazie a metriche personalizzate, hai sempre sotto controllo le prestazioni del sistema e puoi monitorare lo stato di salute della struttura.

L’architettura di sistema è basata su Docker ed è semplificata nel grafico qui sotto:

Nella stessa macchina dove sono presenti le installazioni di Grafana e dell’applicativo MagoCloud è installato anche Prometheus, che recupera e monitora metriche infrastrutturali e applicative. Il servizio node_exporter consente di recuperare le informazioni delle istanze EC2, cAdvisor quelle dei container Docker, mentre blackbox_exporter gestisce le HTTP response e recupera le metriche dei database.

Sempre nella stessa macchina, vengono gestite le metriche applicative utilizzando il discovery service nativo di Prometheus, che consente di recuperare le informazioni in automatico in caso di scalabilità dei micro servizi.

A livello di architettura, questi sono gli oggetti correlati che svolgono attività di monitoraggio per ogni stack docker di MagoCloud:

  • Docker Swarm
  • cAdvisor
  • exporters di Prometheus (node_exporter, wmi_exporter, blackbox_exporter etc)
  • LOKI (logging, auditing)

Grafana rende possibile la visualizzazione intuitiva di queste metriche.

Prometheus

Per il rilevamento delle metriche, sia applicative che infrastrutturali, utilizziamo Prometheus (prometheus.io). Lo abbiamo scelto perché:

  • Possiede un’ottima documentazione CC-BY-4.0
  • È un progetto Open Source (Apache Licence)
  • Dispone di uno storage data efficiente
  • È facilmente integrabille con prodotti di terze parti (Docker, HAProxy, cAdvisor etc)
  • Possiede una client library Integration (c#, c++, ecc.)


Come funziona Prometheus e quali sono le sue componenti?

Prometheus è un database time series creato utilizzando un modello pull HTTP con query molto flessibili e alerting in tempo reale.

È composto da differenti componenti che abbiamo sintetizzato in questo grafico:


Alert Manager è la funzionalità di Prometheus che ti consente, una volta configurati i relativi check e definite le soglie critiche oltre le quali inviare alert, di ricevere un messaggio di warning in caso si verifichino anomalie. Puoi inoltre disporre di una visione sintetica dello stato dei servizi.


Il sistema è configurato in modo tale da eseguire una chiamata a un webhook, nel caso in cui venga superata una soglia impostata come critica. Il webhook attiva una serie di azioni che permettono di continuare a lavorare con l’ERP MagoCloud, senza fermi o errori.


Un sistema di Health Check invece permette di monitorare il corretto funzionamento dei microservizi. Eventuali disservizi vengono segnalati dall’Alert Manager e sono inoltre consultabili nelle dashboard di Grafana, che ti permette in tempi rapidissimi di comprendere la natura di eventuali disservizi.

Grafana

Se Prometheus rappresenta il cuore e il motore del sistema di monitoraggio, Grafana, invece, è il suo frontend. Viene spesso utilizzato per una lettura più accattivante delle metriche, che vengono raccolte e riorganizzate in dashboard, basate su file di configurazione json.

Abbiamo scelto Grafana per diverse ragioni:

  • La soluzione dispone di un’ottima documentazione
  • È un Progetto Open Source
  • Le specifiche architetturali sono corrispondenti a quelle del nostro sistema
  • È integrabile con Prometheus, con un sistema di logging LOKI e con strumenti di automation deployment


Grafana si è dimostrato un ottimo strumento semplice da configurare e da utilizzare.

LOKI

Uno step importante che è stato aggiunto al sistema di monitoraggio è il logging. Il prodotto utilizzato è LOKI, uno strumento potentissimo poiché sfrutta il linguaggio PromQL e si integra perfettamente con la nostra infrastruttura. LOKI permette di recuperare agevolmente informazioni sia applicative che strutturali con delle semplici query e di monitorare anche informazioni applicative di auditing.

Abbiamo scelto LOKI perché:

  • Presenta un’ottima documentazione
  • Si tratta di un progetto Open Source
  • Le specifiche architetturali sono corrispondenti a quelle del nostro Sistema
  • È integrabile con Prometheus, Grafana e strumenti di automation deployment

Il motore che raccoglie i dati viene strutturato attraverso una configurazione che fa una selezione di informazioni in base alla configurazione di un plugin per il motore di Docker. I logs di Docker vengono redirezionati in due modalità:

  • Locale sulle macchine
  • Formato json verso il container LOKI

cAdvisor

cAdvisor (Container Advisor) ti permette di monitorare lo stato di utilizzo delle risorse e le caratteristiche prestazionali dei loro container in esecuzione.

Raccoglie, aggrega, elabora ed esporta informazioni sull’esecuzione dei container.

In particolare, per ciascun container cAdvisor ti permette di verificare i parametri di isolamento delle risorse, l’utilizzo delle risorse storiche, gli istogrammi dell’utilizzo completo delle risorse storiche e le statistiche di rete. Questi dati vengono esportati per container e a livello di macchina.

Abbiamo scelto di utilizzare cAdvisor nell’architettura di Monitoring/ Alerting per la sua integrabilità con Prometheus e il supporto nativo fornito per i container Docker, oltre che per la possibilità di containerizzare la soluzione e inserirla all’interno di uno swarm.

Siamo a tua disposizione! Parlaci del tuo problema, noi ti offriamo la soluzione.