Monitorare le prestazioni dei container Docker è un requisito fondamentale per mantenere applicazioni efficienti, affidabili e scalabili in ambienti di produzione moderni. I container sono effimeri, leggeri e spesso orchestrati in cluster, rendendo la visibilità nel loro consumo di risorse, salute e comportamento essenziale per gli sviluppatori e i team di infrastrutture. Datadog, una piattaforma di osservazione leader, offre una profonda integrazione con Docker per raccogliere, visualizzare e allertare metriche di container in tempo reale.

Comprendere il monitoraggio Docker

I contenitori Docker vengono eseguiti come processi isolati su un sistema host, condividendo il kernel dell’host ma utilizzando il proprio filesystem, lo stack di rete e lo spazio di processo. Il monitoraggio di questi contenitori richiede metriche di tracciamento a livello del contenitore, non solo a livello dell’host.

Sotto il cofano, Docker sfrutta le funzioni del kernel Linux come cgroups] (gruppi di controllo) e namespaces[] per far rispettare i limiti delle risorse e l'isolamento.

Il monitoraggio efficace di Docker va oltre la semplice raccolta di numeri. Si tratta di una correlazione delle metriche con le prestazioni dell'applicazione, l'impostazione di soglie intelligenti, l'integrazione di registri e tracce per formare un'immagine completa. Senza un monitoraggio adeguato, si rischia di inserirsi in una contention delle risorse, perdite di memoria, o strozzature di rete che possono degradare l'esperienza dell'utente o causare interruzioni.

Perché utilizzare Datadog per il monitoraggio Docker?

Datadog è una piattaforma di monitoraggio e analisi basata su cloud che fornisce supporto out-of-the-box per Docker e ambienti containerizzati. La sua integrazione cattura automaticamente oltre 50 metriche specifiche Docker, tra cui CPU contenitore, memoria, rete e utilizzo del disco, così come metriche di livello di sistema dall'host.

I vantaggi principali dell'utilizzo di Datadog per il monitoraggio Docker includono:

  • Riscoperta automatica e tagging:[[]] L'agente di Datadog rileva automaticamente i contenitori in esecuzione e li arricchisce con tag come nome del contenitore, immagine e etichette Docker.
  • dashboard e avvisi relativi a tempo reale:[] Crea dashboard personalizzabili con grafici, mappe di calore e visualizzazioni topologiche. Impostare avvisi basati sulle soglie (ad esempio, CPU > 80%) o anomalie utilizzando l'apprendimento automatico.
  • Integrazione con piattaforme di orchestrazione:[[] Datadog lavora con Docker Swarm, Kubernetes, Amazon ECS e Azure Container, dandovi una visibilità costante in ambienti ibridi.
  • Correlazione completa:[] Combina le metriche Docker con il monitoraggio delle prestazioni delle applicazioni (APM), i registri e le prestazioni della rete per tracciare i problemi dalla salute dei container alle richieste di accesso agli utenti.
  • Contenuto pre-costruito:[ Datadog fornisce dashboard out-of-the-box per Docker, tra cui una panoramica dei container, mappa host e dashboard di monitoraggio del processo.

Per le squadre che utilizzano già Datadog per altre parti della loro infrastruttura, aggiungere il monitoraggio Docker è semplice e amplia i flussi di lavoro esistenti senza richiedere un altro strumento.

Impostazione di Datadog con Docker

Prerequisiti

[LT]] [[LT]]]] Un account Datadog (

  • ] [[FLT:]]]]
  • ]
  • Docker installato sulla macchina host (versione 19.03 o successiva consigliata).
  • ]

    Installazione dell'agente Datadog come contenitore Docker

    Il modo più semplice per monitorare i contenitori Docker è quello di eseguire l'agente Datadog stesso come contenitore sull'host. L'agente può essere utilizzato con il comando ] o come parte di uno stack Docker Compose.

    docker run -d --name datadog-agent \
     -e DD_API_KEY=YOUR_API_KEY \
     -e DD_SITE="datadoghq.com" \
     -v /var/run/docker.sock:/var/run/docker.sock:ro \
     -v /proc/:/host/proc/:ro \
     -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
     datadog/agent:latest

    Sostituire con la chiave reale. I supporti di volume forniscono all'agente l'accesso alla presa Docker per la scoperta dei container, il filesystem proc dell'host per i dati di processo, e il filesystem cgroup per le metriche delle risorse dei container. La variabile di ambiente dovrebbe corrispondere al tuo sito Datadog (ad esempio, per i clienti UE).

    Per le distribuzioni di produzione, prendere in considerazione l'utilizzo ]Docker Compose] o un Kubernetes DaemonSet se i vostri contenitori sono orchestrati.

    Configurazione dell'agente tramite Variabili Ambiente

    Il comportamento dell'agente Datadog può essere controllato tramite variabili di ambiente.

    • – La chiave API (richiesto).
    • – Sito Datadog (default []).
    • – Importa automaticamente le etichette Docker come tag.
    • – Importare variabili di ambiente dei container come tag.
    • – Impostare ] per la risoluzione dei problemi.

    È inoltre possibile attivare ulteriori integrazioni impostando [] per raccogliere i registri dei container Docker, o [] per ricevere tracce APM da applicazioni containerizzate.

    Verifica dell'installazione

    Dopo aver avviato il contenitore dell'agente, eseguire per confermare che si collega con successo a Datadog. Si dovrebbe vedere messaggi come “nfo: miry - miry è disabilitato” (se Sentry non è configurato) e “Nfo: OK - DataDog agente è in esecuzione”

    Configurazione della collezione Metrics

    Docker Metrics automatico

    Una volta che l'agente è in esecuzione, raccoglie automaticamente un insieme completo di metriche Docker.

    • , ,
    • , , ]
    • ,
    • ,
    • ,

    Queste metriche vengono raccolte ad un intervallo di default di 10 secondi. È possibile regolare l'intervallo impostando la variabile ambiente [] o modificando il file di configurazione principale dell'agente.

    Metriche personalizzate tramite Docker Checks

    Datadog consente di definire controlli personalizzati per raccogliere metriche specifiche dell’applicazione da contenitori interni. Ad esempio, è possibile utilizzare un controllo personalizzato Python che interroga l’API interna della tua applicazione e emette metriche di misura o di conteggio.

    -v /host/path/to/conf.d:/etc/datadog-agent/conf.d \
    -v /host/path/to/checks.d:/etc/datadog-agent/checks.d

    Quindi creare file di configurazione YAML sotto e script Python sotto []. L'agente scoprirà automaticamente ed eseguirà questi controlli. Questo approccio è potente per il monitoraggio di metriche come profondità della coda, richiesta di latenza, o connessioni attive.

    Tagging e arricchimento

    Senza tag, le metriche diventano rumore. Datadog tags automaticamente le metriche Docker con host, nome del contenitore, immagine e altri attributi. È possibile estend tagging] utilizzando etichette Docker o variabili di ambiente. Per esempio, è possibile aggiungere tag di importazione specifica etichetta come file di sistema di importazione.

    Inoltre, è possibile configurare l'agente per raccogliere metriche solo per i contenitori che corrispondono a determinati nomi di immagini o escludere contenitori specifici utilizzando le variabili di ambiente [[ e .

    Visualizzazione di metriche e creazione di Dashboard

    Utilizzo di Docker Dashboards pre-costruito

    Datadog fornisce diversi dashboard out-of-the-box per Docker: Docker - Panoramica], [Docker - Container, e Docker - Host]. Questi dashboard visualizzano metriche chiave come l'utilizzo della CPU, il consumo di memoria, la rete di punti di input e di fondo di ricerca possono trovare i contenitori di alto.

    Costruzione di pannelli personalizzati

    Per creare un cruscotto su misura per i tuoi servizi, fare clic su New Dashboard[] in Datadog. Aggiungi widget come timeseries grafici, tabelle di query o heatmaps. Per il monitoraggio Docker, i widget comuni includono:

    • Series di tempo[] – CPU di trama e memoria nel tempo per contenitori o gruppi specifici.
    • Top List[] – Mostra contenitori con più alta CPU o memoria di utilizzo.
    • Change[] – La pista aumenta nei riavviiimenti dei container o disco I/O.
    • Table] – Visualizzare un elenco di contenitori con l'utilizzo delle risorse attuali accanto alle etichette.

    Usa la lingua di query di Datadog per misurare le metriche di portata per tag: ad esempio ] per vedere l'utilizzo medio della CPU attraverso il servizio frontend in produzione.

    Impostazione di avvisi

    In Datadog, è possibile creare regole di monitoraggio per le metriche Docker. Ad esempio, creare un monitor che avverte quando l'utilizzo della CPU di qualsiasi contenitore supera l'85% per cinque minuti, o quando l'utilizzo della memoria si avvicina al 90% del suo limite.

    Gli utenti avanzati possono sfruttare Anomaly Detection[]] monitor che utilizzano l'apprendimento automatico per rilevare comportamenti insoliti senza soglie statiche, che è particolarmente utile per i servizi con carico variabile.

    Migliori Pratiche per il monitoraggio Docker

    1. Utilizzare una strategia di Tagging coerente

    Tag container con etichette significative che riflettono proprietà, ambiente, nome di servizio e versione. Questo rende la selezione, filtrazione e avviso molto più facile. Ad esempio, utilizzare etichette Docker come [, , e .

    2. Monitorare a livelli multipli

    Combinate con metriche di livello host (memoria, disco, CPU) per comprendere la soddisfazione delle risorse tra i contenitori. Inoltre, monitora le metriche di livello orchestratore se si utilizza Kubernetes o Swarm, come lo stato del pod e la salute di distribuzione. Datadog si integra con Kubernetes per fornire una visione completa della salute dei cluster.

    3. Impostare limiti di risorse e avvisi di conseguenza

    I contenitori Docker che non sono limitati alle risorse possono consumare tutte le risorse host. Impostare sempre i limiti di CPU e memoria sui contenitori. Quindi configurare gli avvisi per sparare quando l'uso si avvicina al limite (ad esempio, all'80% del limite di memoria) per darti il tempo di rispondere prima che il contenitore venga ucciso dall'assassino di Docker OOM.

    4. Correlate Metrics con log e tracce

    Con una correlazione delle metriche con i log delle applicazioni (ad esempio, tassi di errore) e delle tracce (ad esempio, latenza delle richieste), è possibile identificare rapidamente le cause della radice. Datadog rende questo facile unificando log, metriche e APM sotto una singola piattaforma – è possibile saltare da un grafico a log relativi con un clic.

    5. Controlla regolarmente e sintonizza il tuo monitoraggio

    Rivedere periodicamente i dashboard per rimuovere le metriche obsolete, regolare le soglie di avviso in base ai dati storici e aggiungere nuove metriche per le funzionalità recentemente introdotte.

    6. Considerare i multi-container Pods (Kubernetes)

    Se si esegue contenitori all'interno di baccelli Kubernetes, ricorda che più contenitori possono condividere lo stesso pod IP e montature di volume. Datadog tagga automaticamente metriche con nome di pod, namespace e nome del contenitore, permettendo di perforare in singoli contenitori all'interno di un baccello.

    Capacità di monitoraggio avanzate

    Vista del contenitore dal vivo

    La funzione Datadog Live Containers[[] fornisce un elenco in tempo reale e interattivo di tutti i contenitori che funzionano attraverso l'infrastruttura. È possibile cercare, filtrare e ispezionare le metriche, i processi e le connessioni di rete direttamente dall'interfaccia utente Datadog, senza bisogno di SSH in host.

    Monitoraggio dei processi

    Installando il filesystem dell'host, l'agente Datadog può raccogliere metriche di livello di processo da contenitori interni. Questo consente di vedere quali processi all'interno di un contenitore consumano CPU o memoria. Il monitoraggio dei processi viene attivato impostando .

    Ottimizzazione dei costi attraverso la tutela dei diritti

    I parametri storici possono aiutarti a dimensionare i contenitori. Le risorse di rifiuti dei container sovraprovviste; quelle sottoprovviste possono causare problemi di prestazioni. Utilizzare i database ]Metrics Explorer] o i dashboard per analizzare le tendenze di utilizzo delle risorse nel corso delle settimane. Confrontare il ] contro il limite del contenitore per vedere se si possono ridurre in modo sicuro i limiti di memoria e risparmiare sui costi del cloud.

    Risoluzione dei problemi Problemi comuni

    Agente Incapace di connettersi a Datadog

    Se le metriche non appaiono nell'interfaccia utente Datadog, controlla che il contenitore dell'agente sia in esecuzione e che la chiave API sia corretta. Correre []. Le cause comuni includono i proxy di rete che bloccano le connessioni in uscita a , o un'impostazione scorretta.

    Metriche mancanti per contenitori specifici

    Se alcuni contenitori non mostrano metriche, verificano che siano in esecuzione e che l'agente abbia accesso alla presa Docker. Verifica se il contenitore è escluso dall'impostazione [. Inoltre, confermare che il contenitore non è un sidecar senza limiti di risorse; Datadog può ancora raccogliere metriche ma saranno vicino a zero. Per i contenitori con brevissime vite (± 10 secondi), l'agente potrebbe non avere tempo per raccogliere metriche prima di terminare.

    Utilizzo delle risorse dell'agente Datadog alto

    L'agente Datadog è progettato per essere leggero ma può diventare resistente alle risorse se si raccoglie molti log o metriche personalizzate.Per ridurre l'impatto, limitare la raccolta dei log a solo contenitori necessari, aumentare l'intervallo di controllo, o utilizzare la variabile ambiente per disabilitare il monitoraggio del processo a meno che non sia necessario.

    Per una risoluzione dei problemi più dettagliata, fare riferimento a Datadog Guida alla risoluzione dei problemi di errore[.

    Conclusioni

    Integrare Datadog con Docker fornisce una visione completa e in tempo reale delle prestazioni dei container che è essenziale per mantenere alta disponibilità, ottimizzare i costi e risolvere rapidamente i problemi. Seguire le fasi di configurazione descritte in questa guida, configurare tag e avvisi significativi, e adottare le migliori pratiche per il monitoraggio, è possibile trasformare metriche dei container raw in insights attuabili.