Monitoraggio basato sui log vs. monitoraggio basato sulle metriche
Il monitoraggio basato sui log acquisisce registrazioni dettagliate degli eventi per una risoluzione approfondita dei problemi, mentre il monitoraggio basato sulle metriche tiene traccia dei dati numerici nel tempo per ottenere informazioni sulle prestazioni in tempo reale. Entrambi gli approcci servono a scopi distinti nei moderni stack di osservabilità e la maggior parte dei team trae vantaggio dall'utilizzarli insieme piuttosto che sceglierne uno a discapito dell'altro.
In evidenza
log conservano il contesto degli eventi per le indagini forensi, mentre le metriche riepilogano lo stato del sistema per query rapide.
Le metriche consentono l'invio di avvisi quasi istantanei basati su soglie, mentre gli avvisi basati sui log richiedono l'analisi e il riconoscimento di modelli.
I costi di archiviazione dei log aumentano con il volume e la verbosità degli eventi, mentre l'archiviazione delle metriche rimane compatta e prevedibile.
La combinazione di entrambi gli approcci fornisce il quadro completo di osservabilità richiesto dai moderni sistemi distribuiti.
Cos'è Monitoraggio basato sui log?
Registra eventi discreti con dettagli contestuali, consentendo analisi forensi e indagini sulle cause profonde in sistemi distribuiti.
I log sono registrazioni strutturate o non strutturate, con timestamp, degli eventi generati da applicazioni, server e componenti dell'infrastruttura.
In genere, ogni voce del registro contiene un timestamp, un livello di gravità, un identificativo della sorgente e un messaggio descrittivo sull'accaduto.
Strumenti come ELK Stack (Elasticsearch, Logstash, Kibana), Splunk e Loki sono comunemente utilizzati per aggregare e ricercare i dati di log.
Il monitoraggio basato sui log eccelle nel rispondere alla domanda "perché è successo questo?" perché preserva il contesto completo dei singoli eventi.
I costi di archiviazione per i log tendono ad essere superiori a quelli delle metriche perché ogni evento può contenere centinaia di byte di informazioni dettagliate.
Cos'è Monitoraggio basato su metriche?
Raccoglie dati numerici in serie temporali per monitorare lo stato di salute del sistema, le tendenze delle prestazioni e l'utilizzo delle risorse in tempo reale.
Le metriche sono misurazioni numeriche campionate a intervalli regolari, come la percentuale di utilizzo della CPU, la latenza delle richieste o il consumo di memoria.
I database per serie temporali come Prometheus, InfluxDB e Graphite sono progettati specificamente per archiviare e interrogare dati metrici in modo efficiente.
Il monitoraggio basato su metriche risponde alla domanda "cosa sta succedendo in questo preciso istante" tramite dashboard, avvisi e notifiche basate su soglie.
Un singolo dato metrico è in genere molto più piccolo di una voce di registro, spesso costituito solo da un nome, una data e un'ora e un valore.
Tra gli strumenti di visualizzazione più diffusi figurano Grafana, le dashboard di Datadog e le viste delle metriche di CloudWatch.
Tabella di confronto
Funzionalità
Monitoraggio basato sui log
Monitoraggio basato su metriche
Tipo di dati
Registrazione degli eventi con contesto dettagliato
Punti dati numerici di serie temporali
Caso d'uso principale
Analisi delle cause principali e debug
Avvisi in tempo reale e analisi delle tendenze
Ingombro di stoccaggio
Maggiore è il numero di voci, maggiori sono i costi di stoccaggio.
Punti dati compatti, costi di archiviazione ridotti
Metodo di interrogazione
Ricerca e filtraggio a testo completo
Aggregazione, funzioni matematiche, interrogazioni con finestre temporali
Tempo di risposta
Più lento per query su larga scala
Quasi istantaneo per le query del dashboard
Ideale per rispondere
Perché si è verificato proprio questo evento?
Qual è lo stato attuale del sistema?
Strumenti comuni
ELK Stack, Splunk, Loki, Fluentd
Prometeo, Grafana, Datadog, CloudWatch
Capacità di allerta
Limitato, spesso richiede regole di analisi dei log
Avvisi basati su soglie native e anomalie
Confronto dettagliato
Granularità dei dati e contesto
Il monitoraggio basato sui log cattura ogni singolo evento con il relativo contesto, inclusi ID utente, payload delle richieste, stack trace degli errori e variabili ambientali. Questo rende i log preziosi quando è necessario ricostruire esattamente cosa è successo durante un incidente specifico. Il monitoraggio basato sulle metriche, al contrario, riassume il comportamento del sistema in valori numerici, sacrificando i dettagli dei singoli eventi a favore di un formato compatto e interrogabile, più adatto a periodi di tempo prolungati.
Prestazioni e scalabilità
database di metriche sono ottimizzati per un'elevata velocità di scrittura e un'aggregazione rapida, motivo per cui piattaforme come Prometheus possono raccogliere migliaia di target ogni pochi secondi senza problemi. I sistemi di log richiedono un maggiore carico computazionale perché indicizzano testo libero e supportano query di ricerca complesse. Man mano che i volumi di log crescono fino a raggiungere i terabyte al giorno, i team spesso devono investire in sistemi di archiviazione a livelli, strategie di campionamento o politiche di conservazione per mantenere i costi sotto controllo.
Allerta e visibilità in tempo reale
Le metriche si rivelano particolarmente utili per gli avvisi in tempo reale, poiché la valutazione di una soglia numerica rispetto a una serie temporale è computazionalmente banale. È possibile impostare avvisi come "CPU superiore al 90% per 5 minuti" con un sovraccarico minimo. Gli avvisi basati sui log sono possibili, ma in genere richiedono regole di analisi o motori di query sui log per rilevare i pattern, il che aggiunge latenza e complessità. Per le notifiche istantanee sullo stato di salute del sistema, le metriche rappresentano solitamente la soluzione più rapida.
Debugging e analisi forense
Quando qualcosa si rompe, i log sono spesso il primo posto in cui gli ingegneri guardano perché conservano la cronologia degli eventi. Una singola voce di log può rivelare il messaggio di errore esatto, l'utente interessato e il percorso del codice che ha causato il problema. Le metriche possono indicare un picco di errori alle 14:34, ma raramente ne spiegano il motivo. Ecco perché i team di ingegneri più esperti considerano i log come strumento di indagine e le metriche come sistema di allarme precoce.
Considerazioni relative a costi e stoccaggio
L'archiviazione dei log è generalmente più costosa rispetto all'archiviazione delle metriche, poiché ogni voce contiene più dati e i periodi di conservazione sono spesso più lunghi per motivi di conformità o di audit. Un'applicazione di medie dimensioni potrebbe generare milioni di righe di log al giorno, producendo solo poche centinaia di serie di metriche univoche. Molte organizzazioni implementano il campionamento dei log, il filtraggio alla fonte o l'archiviazione a livelli per controllare i costi, mentre la conservazione delle metriche può in genere estendersi a mesi o anni a costi contenuti.
Integrazione nell'osservabilità moderna
tre pilastri dell'osservabilità sono i log, le metriche e le tracce, e la maggior parte dei sistemi di produzione si basa su tutti e tre. Le metriche forniscono una panoramica generale dello stato di salute, i log offrono dettagli diagnostici approfonditi e le tracce distribuite collegano i due elementi mostrando i flussi di richiesta tra i servizi. La scelta tra monitoraggio basato sui log e monitoraggio basato sulle metriche raramente è una decisione binaria; piuttosto, i team decidono come bilanciare l'investimento in ciascuno in base alle proprie esigenze operative e al budget disponibile.
Pro e Contro
Monitoraggio basato sui log
Vantaggi
+Ricchi dettagli contestuali
+Ottimo per il debug
+Supporta la ricerca full-text
+Cattura eventi rari
Consentiti
−Costi di stoccaggio più elevati
−Prestazioni di query più lente
−Configurazione complessa degli avvisi
−Richiede regole di analisi sintattica
Monitoraggio basato su metriche
Vantaggi
+Avvisi rapidi in tempo reale
+Bassi costi di magazzinaggio
+Creazione semplificata di dashboard
+Aggregazione efficiente
Consentiti
−Contesto limitato dell'evento
−Non rileva anomalie rare
−Richiede metriche predefinite
−Meno dettagli forensi
Idee sbagliate comuni
Mito
Per un sistema affidabile è sufficiente un solo tipo di monitoraggio.
Realtà
La maggior parte dei sistemi di produzione trae vantaggio da entrambi gli approcci. Le metriche individuano i problemi tempestivamente tramite avvisi, mentre i log aiutano gli ingegneri a comprenderne la causa principale una volta rilevato un problema. Affidarsi a un solo metodo lascia dei punti ciechi che possono prolungare le interruzioni.
Mito
La legna da ardere è sempre troppo costosa da conservare a lungo termine.
Realtà
Sebbene l'archiviazione dei log grezzi possa essere costosa, le strategie di archiviazione a livelli, la compressione e il campionamento intelligente rendono fattibile la conservazione a lungo termine. Molti framework di conformità richiedono infatti di conservare determinati log per mesi o anni, quindi la gestione dei costi si basa sulla strategia piuttosto che sull'evitamento.
Mito
Le metriche possono sostituire i log per il debug.
Realtà
Le metriche indicano che qualcosa è cambiato, ma raramente ne spiegano il motivo. Quando si indaga su una segnalazione specifica di un utente o su un errore raro, i log sono solitamente l'unico modo per individuarne la causa effettiva. Metriche e log svolgono ruoli complementari nella gestione degli incidenti.
Mito
Una maggiore quantità di dati di registro si traduce sempre in un monitoraggio migliore.
Realtà
Un'eccessiva registrazione dei log crea rumore, aumenta i costi e può effettivamente rallentare la risoluzione dei problemi. Un monitoraggio efficace basato sui log si concentra sull'acquisizione di eventi significativi con campi strutturati, piuttosto che riversare ogni possibile dettaglio in testo non strutturato.
Mito
Il monitoraggio basato su metriche rileva automaticamente ogni anomalia.
Realtà
Le metriche rilevano solo ciò che viene misurato esplicitamente. Se emerge una nuova modalità di errore che nessuno aveva pensato di monitorare, le metriche non la rileveranno affatto. I log, al contrario, registrano gli eventi imprevisti finché l'applicazione li scrive.
Domande frequenti
Qual è la principale differenza tra il monitoraggio basato sui log e quello basato sulle metriche?
Il monitoraggio basato sui log registra i singoli eventi con un contesto dettagliato, risultando ideale per il debug e l'analisi forense. Il monitoraggio basato sulle metriche raccoglie dati numerici nel tempo, risultando ideale per gli avvisi in tempo reale e la visualizzazione delle tendenze. I log rispondono al "perché", mentre le metriche rispondono al "cosa" e al "quanto".
Cosa è più economico, il monitoraggio dei log o il monitoraggio delle metriche?
Il monitoraggio delle metriche è generalmente più economico perché ogni dato è piccolo e compatto. Il monitoraggio dei log costa di più a causa del volume e della verbosità delle voci di log, soprattutto su larga scala. Tuttavia, i costi dipendono fortemente dalle politiche di conservazione, dalle velocità di acquisizione e dal modello di prezzo specifico del fornitore.
È possibile implementare un sistema di allerta con il monitoraggio basato sui log?
Sì, ma è più complesso rispetto agli avvisi basati su metriche. Strumenti come Elasticsearch, Splunk e Loki supportano regole di avviso che si attivano quando compaiono specifici pattern nei log. Il compromesso è una latenza maggiore e un maggiore carico di elaborazione rispetto alla valutazione di una semplice soglia numerica.
Quali sono gli strumenti migliori per il monitoraggio basato sui log?
Tra le opzioni più diffuse per la raccolta dati figurano ELK Stack (Elasticsearch, Logstash, Kibana), Splunk, Grafana Loki e Fluentd. I provider di servizi cloud offrono anche servizi gestiti come AWS CloudWatch Logs, Google Cloud Logging e Azure Monitor Logs per i team che preferiscono non gestire la propria infrastruttura.
Quali sono gli strumenti migliori per il monitoraggio basato su metriche?
Prometheus è l'opzione open-source più diffusa, spesso abbinata a Grafana per la visualizzazione dei dati. Piattaforme commerciali come Datadog, New Relic e Dynatrace offrono la raccolta gestita di metriche con funzionalità di avviso integrate. Tra le opzioni cloud-native si annoverano AWS CloudWatch Metrics e Google Cloud Monitoring.
Per il debug in produzione, dovrei usare i log o le metriche?
Utilizzate prima le metriche per rilevare eventuali problemi, quindi passate ai log per indagarne la causa. Le metriche restringono l'intervallo di tempo e i sistemi interessati, mentre i log forniscono la descrizione dettagliata dell'evento necessaria per identificare la causa principale. Questo approccio in due fasi è una prassi standard nei team SRE e DevOps.
In che modo i log e le metriche interagiscono nell'ambito dell'osservabilità?
Insieme alle tracce distribuite, costituiscono due dei tre pilastri dell'osservabilità. Le metriche forniscono un quadro generale dello stato di salute, i log offrono dettagli diagnostici approfonditi e le tracce collegano le singole richieste tra i diversi servizi. La maggior parte delle piattaforme moderne, come Datadog, Honeycomb e Grafana, integra tutti e tre gli elementi.
Per quanto tempo dovrei conservare i log rispetto alle metriche?
La prassi comune è quella di conservare le metriche per 13 mesi o più, poiché sono economiche da archiviare e utili per la pianificazione della capacità. I log vengono spesso conservati per 30-90 giorni in un archivio a caldo, mentre i log più vecchi vengono archiviati in un archivio a freddo o in un archivio di oggetti come S3 per esigenze di conformità o per indagini occasionali.
La registrazione strutturata è migliore di quella non strutturata per il monitoraggio?
La registrazione strutturata (in genere in formato JSON) è nettamente superiore per il monitoraggio perché consente un'analisi, un filtraggio e un'aggregazione affidabili. I log non strutturati richiedono l'utilizzo di espressioni regolari o una revisione manuale, il che rallenta sia gli avvisi che il debug. La maggior parte delle applicazioni moderne genera log strutturati per impostazione predefinita.
Il monitoraggio basato su metriche è in grado di rilevare problemi che sfuggono ai log?
Sì, soprattutto in caso di degrado graduale delle prestazioni o saturazione delle risorse. Una perdita di memoria lenta potrebbe non generare mai una voce di registro, ma si manifesterà chiaramente nelle metriche di utilizzo della memoria nel tempo. Le metriche sono inoltre più efficaci nell'individuare modelli aggregati su migliaia di richieste, laddove le singole voci di registro sarebbero troppo rumorose da analizzare.
Verdetto
Scegli il monitoraggio basato sui log quando la tua esigenza principale è il debug approfondito, la tracciabilità delle attività o la comprensione del contesto alla base di eventi specifici. Scegli il monitoraggio basato sulle metriche quando hai bisogno di dashboard in tempo reale, avvisi rapidi e analisi delle tendenze a lungo termine su larga scala. In pratica, le strategie di osservabilità più efficaci combinano entrambi gli approcci, utilizzando le metriche per il rilevamento precoce e i log per un'indagine approfondita.