La guida completa al monitoraggio dei container
L'uso dei container è diventato sempre più popolare negli ultimi anni. Le applicazioni containerizzate offrono molti vantaggi, tra cui l'efficienza delle risorse, la portabilità e la possibilità per i team di sviluppo e DevOps di sviluppare, gestire e distribuire le applicazioni in modo più rapido e sicuro. Ecco perché l’osservabilità dei container è diventata cruciale.
Il monitoraggio dei container può anche contribuire a garantire l'affidabilità, la sicurezza e le prestazioni delle applicazioni containerizzate, poiché l'uso di ambienti container altamente distribuiti presenta nuove sfide per il monitoraggio delle prestazioni e la risoluzione dei problemi.
Che cos'è il monitoraggio dei container?
Il monitoraggio dei container è il processo che fornisce la visibilità necessaria per garantire la salute e le prestazioni dei container. Comprende il monitoraggio continuo dei container stessi e dei nodi su cui sono in esecuzione, il che lo rende una parte essenziale di un ambiente cloud-native e un fattore chiave per mantenere un ecosistema di container solido. È il processo che consente di tenere traccia delle metriche relative alle prestazioni e allo stato di salute delle applicazioni containerizzate, ottenendo al contempo approfondimenti sul comportamento dei container. Queste informazioni possono essere utilizzate anche per scalare in modo efficiente l'ambiente dei container.
Le metriche tipiche controllate dagli strumenti di monitoraggio dei container includono il numero totale di container, la memoria dei container e l'utilizzo della CPU. Le soluzioni di monitoraggio con rilevamento automatico dei servizi e la possibilità di aggiungere o rimuovere automaticamente i container da monitorare possono semplificare notevolmente il flusso di lavoro.
Potenti strumenti di monitoraggio all-in-one come Checkmk forniscono tutte le informazioni necessarie che consentono di sfruttare al meglio gli stack IT statici e dinamici.
Chi utilizza il monitoraggio dei container?
La densità di applicazioni e runtime containerizzati è in aumento. Piccole e grandi organizzazioni utilizzano ambienti containerizzati nelle loro strategie di distribuzione delle applicazioni DevOps.
Docker è attualmente la piattaforma più diffusa per la creazione, la distribuzione e la gestione dei container. Oltre 13 milioni di sviluppatori utilizzano Docker per più di 7 milioni di applicazioni.
Kubernetes è diventata rapidamente la piattaforma più diffusa per la gestione di carichi di lavoro e servizi containerizzati. Nel 2022, oltre il 60% delle organizzazioni in tutto il mondo ha adottato Kubernetes.
Per garantire il buon funzionamento dell'ambiente dei container, le aziende che li utilizzano devono anche monitorarli in modo efficace.
Perché monitorare i container?
Il monitoraggio dei container può essere utilizzato per monitorare le prestazioni e l’affidabilità degli ambienti di container. Ad esempio, è possibile utilizzare le informazioni fornite da una soluzione di monitoraggio dei container per identificare i colli di bottiglia e i problemi di risorse in tempo reale, determinare se i container sono sottodimensionati o sovradimensionati, rilevare problemi e guasti nelle applicazioni, verificare che il numero di microservizi rientri nell'intervallo previsto per una singola applicazione o garantire che lo scaling dinamico di uno strumento di orchestrazione funzioni correttamente e che i carichi siano distribuiti uniformemente tra i container.
Il monitoraggio dei container deve sempre far parte di un sistema di monitoraggio completo che fornisca visibilità sull'intera infrastruttura IT. Ciò consente alle aziende di comprendere meglio il proprio IT e di collegare le prestazioni dei container a quelle di altri servizi IT. Il monitoraggio dei container non solo aiuta a gestire i problemi esistenti e potenziali, ma anche a ottimizzare continuamente l'implementazione. Il risultato è un miglioramento delle prestazioni e dei tempi di attività delle applicazioni e una migliore esperienza degli utenti.
Sfide da affrontare nel monitoraggio dei container
I vantaggi dell’adozione dei container sono evidenti. Allo stesso tempo, il comportamento naturale dei container richiede un approccio al monitoraggio diverso rispetto all’hardware fisico. Sebbene il recupero dei dati di monitoraggio, lo stato del monitoraggio e l’impostazione delle soglie siano simili in entrambi i tipi di deployment, le somiglianze finiscono qui. I container sono effimeri e possono avere una durata di vita di pochi secondi, il che rende difficile tracciare i cambiamenti. Inoltre, condividono le risorse, rendendo complesso comprendere lo stato di salute di un’applicazione e le prestazioni dei container.
Le principali sfide del monitoraggio dei container sono:
- Tracciare i container durante il loro ciclo di vita.
- Scalare il monitoraggio al crescere dell'ambiente dei container.
- Controllare l'utilizzo delle risorse dei singoli container e delle risorse condivise, come lo storage.
- Definire soglie ragionevoli per avvisare dei problemi.
Per superare queste sfide, il monitoraggio dei container richiede soluzioni che abbiano, tra le altre, le seguenti caratteristiche:
- Rilevamento automatico per scoprire nuovi container e aggiungerli al monitoraggio.
- Inventario automatico di tutti gli aspetti hardware e software di nodi e container.
- Semplice scalabilità del monitoraggio.
- Registrazione di metriche delle prestazioni come l'utilizzo della CPU, della memoria o della velocità di trasferimento di rete dei singoli container.
- Rappresentazione visiva delle metriche dei container, per facilitare l'individuazione dei problemi.
- Supporto per strumenti di orchestrazione come Kubernetes o Docker Swarm o piattaforme cloud su cui sono ospitati i container.

Come funziona il monitoraggio dei container?
Esistono due modi per monitorare i container. Uno è quello di utilizzare la riga di comando delle piattaforme di orchestrazione, come Docker o Kubernetes, per accedere ai log e alle informazioni sui container. In questo modo si ottiene una panoramica di base e si possono utilizzare i log per analizzare le possibili cause di errore. Tuttavia, lo svantaggio principale è che il monitoraggio manuale è inefficiente e richiede molto tempo, ed è facile perderne il controllo. Inoltre, questo metodo non fornisce avvisi quando si verificano problemi.
La seconda opzione consiste nell'utilizzare una soluzione di monitoraggio progettata specificamente per un efficiente monitoraggio dei container e che fornisca tutta la visibilità necessaria sull'utilizzo delle risorse dei container, oltre a funzioni quali l'analisi dei dati storici, la visualizzazione dei dati e gli avvisi.
Come si possono monitorare i container in Docker?
La riga di comando di Docker include alcuni comandi che possono essere utilizzati per il monitoraggio dei container Docker:
- Il comando
docker stats [OPTIONS] [CONTAINER...]
visualizza in tempo reale le statistiche sull'uso delle risorse per tutti i container in esecuzione, fornendo informazioni sulla CPU, sull'uso della memoria, sul limite della memoria e sulle metriche dell'IO di rete. Se si desidera concentrarsi su uno o più container specifici, è possibile specificare un elenco di nomi o ID di container separati da spazi. - È possibile visualizzare l'elenco dei container in esecuzione usando il comando
docker ps [OPTIONS]
. Il comando-all
va utilizzato invece per mostrare tutti i container. - È possibile usare il comando
docker top CONTAINER [ps OPTIONS]
per visualizzare i processi di un contenitore specifico.
In alternativa, i container Docker possono essere monitorati con una soluzione di monitoraggio. I vantaggi di un software di monitoraggio dedicato ai container includono:
- Informazioni dettagliate sulle prestazioni e sull'utilizzo delle risorse dei nodi e dei contenitori Docker. Ad esempio, l'utilizzo della CPU, della memoria e dell'I/O del disco.
- Visualizzazione di metriche chiave e dati di serie temporali in dashboard.
- Informazioni contestuali per un'efficace analisi delle cause principali e per la risoluzione di problemi complessi.
- Archiviazione dei dati storici per analizzare le tendenze o i cambiamenti nella topologia Docker.
- Avvisi su eventi critici o anomalie nell'ambiente dei container.
Ad esempio, Checkmk utilizza un agente per ottenere informazioni dettagliate sul nodo Docker e su ogni singolo container.
Come si possono monitorare i container in Kubernetes?
Kubernetes offre la possibilità di monitorare i container attraverso il server delle metriche. Questo permette di recuperare un insieme limitato di metriche, come l'utilizzo della CPU e della memoria, tramite l'API Kubernetes Metrics. Con Kubernetes Dashboard, la piattaforma di container offre anche un'interfaccia utente basata sul web che fornisce un modo pratico per gestire e monitorare le applicazioni containerizzate in un cluster Kubernetes una volta distribuite:
- Il server delle metriche di Kubernetes consente di raccogliere metriche, come l'utilizzo della CPU e della memoria, tramite l'API Kubernetes Metrics.
- Kubernetes Dashboard è un'interfaccia basata sul web che consente di:
- Distribuire e risolvere i problemi delle applicazioni.
- Gestire le risorse del cluster.
- Monitorare le applicazioni containerizzate in esecuzione e modificare le risorse Kubernetes come le distribuzioni, i lavori e i set di demoni.
- Eseguire azioni quali il ridimensionamento delle distribuzioni, l'avvio di aggiornamenti periodici, il riavvio dei pod e la distribuzione di nuove applicazioni.
- Ottenere visibilità sulle risorse del cluster e sugli errori.
Checkmk utilizza il server API per ottenere informazioni di base sul cluster. Il Checkmk Node Collector e il Checkmk Cluster Collector, che fornisce informazioni sulla quantità di memoria attualmente consumata da un DaemonSet, offrono un quadro completo e approfondimenti sul comportamento dei container. L'integrazione di un software di monitoraggio Kubernetes dedicato, come Checkmk, migliora le capacità di:
- Raccolta di un'ampia serie di metriche, oltre l'ambito di monitoraggio predefinito di Kubernetes.
- Monitoraggio dei componenti di Kubernetes, compresi cluster, nodi, distribuzioni, pod, set di demoni e set stateful, con il rilevamento di metriche chiave quali CPU, memoria, file system, I/O su disco, prestazioni del kernel e thread.
- Avvisi intelligenti: Il monitoraggio Kubernetes di Checkmk fornisce avvisi intelligenti che tengono conto delle caratteristiche di self-healing di Kubernetes, che generano notifiche solo se i problemi persistono oltre una certa soglia.
- Una visione completa dell'ambiente Kubernetes attraverso le dashboard interconnesse di Checkmk, che offrono preziose informazioni contestuali per la risoluzione dei problemi e un'elevata visibilità sui container.

Quali sono le caratteristiche importanti del sistema di monitoraggio dei container?
Quando si valuta una soluzione di monitoraggio dei container, si deve considerare in primis il seguente aspetto: Il monitoraggio in tempo reale di tutte le metriche chiave dell'ambiente container per il rilevamento immediato di stati problematici delle applicazioni esistenti o l'identificazione di colli di bottiglia della CPU o della memoria, instabilità o forti consumi. Ma una buona soluzione di monitoraggio deve anche fornire:
- Supporto per il monitoraggio di tutti i componenti della piattaforma container in uso, compresi cluster, nodi, distribuzioni, pod, DaemonSet e StatefulSet per Kubernetes.
- Avvisi precisi quando si verificano problemi reali - che includano informazioni dettagliate sulle cause principali.
- Visualizzazione chiara dei dati per un'analisi più semplice delle relazioni dinamiche.
Riflessioni finali
L'adozione e la crescita diffusa dei container testimoniano i vantaggi che essi offrono a sviluppatori, organizzazioni e utenti. Il monitoraggio svolge un ruolo fondamentale nel garantire disponibilità, prestazioni, compliance e sicurezza dei carichi di lavoro containerizzati.
È importante utilizzare una soluzione di monitoraggio come Checkmk, in grado di gestire i requisiti unici delle applicazioni container.
FAQ
Docker genera automaticamente flussi di output e di errore per i container. I registri dei container Docker aggregano questi flussi di output. È possibile analizzare i registri dei container Docker per valutare le prestazioni e lo stato di salute dei container.
Il monitoraggio delle risorse dei container si riferisce alla misurazione delle risorse host (CPU, memoria, rete, storage, ecc.) utilizzate da un container durante il suo ciclo di vita. È possibile monitorare l'utilizzo delle risorse dei singoli container e l'utilizzo totale delle risorse di tutti i container in esecuzione su un nodo. Il vantaggio del monitoraggio delle risorse dei container è che consente di essere proattivi. Invece di reagire all'indisponibilità delle risorse che porta a un degrado delle prestazioni, è possibile aggiungere o liberare risorse in tempo, in modo da non compromettere le prestazioni del container e dell'applicazione.
La natura "effimera" dei container si riferisce al fatto che il provisioning e la distruzione di un container sono processi rapidi. Dopo l'avvio, un container dura il tempo necessario e poi viene distrutto dallo scheduler di orchestrazione del container.