Comparthing Logo
monitoraggioosservabilitàinfrastruttura cloudDevOpsregistrazionemetrica

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.

Confronti correlati

Aggregazione dei dati di telemetria vs. registrazione da un'unica fonte

L'aggregazione della telemetria consolida metriche, log e tracce provenienti da diverse fonti in un'unica pipeline, mentre la registrazione da una singola fonte si concentra sull'acquisizione e l'analisi dei dati provenienti da un'unica origine specifica. La scelta più appropriata dipende dalla complessità del sistema, dagli obiettivi di osservabilità e dalla scalabilità operativa.

AWS vs Google Cloud

Questo confronto esamina Amazon Web Services e Google Cloud analizzando le loro offerte di servizi, modelli di prezzo, infrastruttura globale, prestazioni, esperienza degli sviluppatori e casi d'uso ideali, aiutando le organizzazioni a scegliere la piattaforma cloud che meglio si adatta alle loro esigenze tecniche e aziendali.

Bilanciamento del carico nei sistemi di apprendimento automatico vs. gestione semplice delle richieste API

Nei sistemi di machine learning, il bilanciamento del carico gestisce i carichi di lavoro di inferenza e addestramento che richiedono un uso intensivo della GPU su hardware specializzato, mentre la semplice gestione delle richieste API distribuisce il traffico HTTP leggero su server generici. Le due soluzioni differiscono notevolmente in termini di complessità, requisiti di risorse e intelligenza di routing.

Cache locale vs. cluster di cache centralizzata

La cache locale memorizza i dati direttamente sui server applicativi per un accesso a bassissima latenza, mentre i cluster di cache centralizzati implementano un'infrastruttura dedicata e condivisa a cui più servizi possono accedere simultaneamente per una gestione dello stato coerente.

Calcolo distribuito contro centri dati centralizzati

Il calcolo distribuito ripartisce i carichi di lavoro su molte macchine interconnesse, mentre i data center centralizzati concentrano la potenza di elaborazione in un'unica struttura fisica. Entrambi gli approcci sono alla base dei moderni servizi cloud, ma differiscono notevolmente in termini di scalabilità, tolleranza ai guasti e struttura dei costi.