Monitoraggio Kubernetes con Prometheus
Il monitoraggio di cluster Kubernetes automatizzato con Prometheus
Kubernetes
Il Kubernetes (o k8s) è una piattaforma self-healing e opensource per l’automazione dei deploy, l’orchestrazione dinamica e la gestione delle applicazioni nei container. È stata originalmente sviluppata da Google e successivamente donata alla CCNF.
Raggruppa i container che compongono un’applicazione in unità logiche atte a semplificarne la gestione e il discovery.
Anche utilizzando i cluster Kubernetes, in qualsiasi momento è possibile che le applicazioni, i nodi o la rete s rompano, o comunque abbiano un malfunzionamento. La possibilità di consultare i log e un sistema di monitoraggio appropriato, con tanto alert e generazione automatica di pannelli con grafici (CPU, Rete,…), diventa fondamentale per evitare interruzioni e analizzare disservizi in genere.
Tutto il progetto Kubernetes ha abbracciato la tecnologia Prometheus e quindi offre supporto al relativo protocollo per il monitoraggio sui servizi presenti nella suite k8s.
Il monitoraggio del cluster k8s può essere molto utile per:
- effettuare il monitoraggio proattivo, quindi la necessità di monitorare lo stato di tutti i servizi e della rete H24.
- determinare la visibilità del cluster, cioè la la capacità dei nodi di vedersi reciprocamente.
- valutare la necessità di modifiche alla capacità del cluster stesso.
- inviare alert e notifiche, per indicare particolari condizioni critiche.
- ottenere pannelli con grafici, realizzati con le metriche fornite dal k8s.
Metriche Kubernetes
Ma quali metriche sono disponibili con il Kubernetes per il Prometheus?
Per ciascun nodo presente in Kubernetes saranno disponibili i dati relativi:
- all’uso della CPU
- al carico del sistema (System Load)
- al disk I/O,
- allo spazio disco utilizzato
- al traffico di rete sia ricevuto che trasmesso.
Prometheus Operator
Per far si che tutti i container caricati sul k8s siano automaticamente sotto monitoraggio si può utilizzare il Prometheus Operator, sviluppato in seno alla CoreOS. Lo scopo di questo elemento è la creazione, la configurazione e la gestione di istanze Prometheus per il monitoraggio. Quello che fa è generare le configurazioni per il monitoraggio basandosi sulle label del Kubernetes.
Il Prometheus Operator fornisce il monitoraggio configurando appropriatamente i servizi Prometheus, Alertmanager e Grafana.
Monitoraggio automatico su k8s
Quando si fa il deploy di una nuova versione di una applicazione, il k8s crea un nuovo pod (container) e solo quando il nuovo pod è pronto, viene distrutto il precedente. Prometheus in questa configurazione è sempre vigilante, in ascolto sulle appropriate API k8s (watching), e quando nota una modifica crea in automatico la configurazione appropriata, basandosi su questo cambiamento di pod.
Articoli correlati
Monitoraggio Kubernetes con Prometheus esterno al kube
Prometheus Tips: Time based alerts
Prometheus Tutorial: 5 - Recording rules e Federazione
Prometheus Tutorial: 4 - Alert Manager
Prometheus Tutorial: 3 - Exporter
Prometheus Tutorial: 2 - Getting started
Prometheus Tutorial: 1 - Intro
Micrometer, il monitoraggio in Java
Prometheus
Microservizi, Netflix Stack, Spring Cloud