Monitoraggio vs osservabilità: la vera differenza, con log, metriche e tracce

  1. Home
  2. Blog
  3. DevOps

DevOps

Monitoraggio vs osservabilità: La vera differenza, con log, metriche e tracce

Il monitoraggio ti dice che qualcosa non va. L’osservabilità ti aiuta a capire perché, anche quando il fallimento è qualcosa che non avresti mai previsto. Segui un incidente di pagamento per vedere come i due lavorano insieme.

9 min di lettura
Monitoraggio vs osservabilità: la vera differenza, con log, metriche e tracce

Punti chiave

  • Il monitoraggio rileva i problemi noti, utilizzando metriche e avvisi predefiniti.
  • L’osservabilità indica la capacità di comprendere lo stato interno di un sistema dai suoi output.
  • Log, metriche e tracce sono segnali comuni, ma raccoglierli non garantisce informazioni dettagliate.
  • Funzionano insieme: il monitoraggio lancia l’allarme e l’osservabilità aiuta a trovare la causa.

Il dashboard è verde, eppure i clienti si lamentano che il checkout non funziona. Se ti sei trovato in questa posizione, capisci già la differenza tra monitoraggio e osservabilità. Il tuo monitoraggio ha controllato solo ciò che pensavi di controllare e questo fallimento è qualcosa di nuovo.

Questa guida spiega entrambe le idee senza usare il linguaggio del marketing e segue un incidente immaginario dall’allarme alla causa principale. I registri, la traccia e i numeri sono inventati per illustrare il processo. Dovresti anche sapere che venditori e professionisti tracciano questa linea in modo diverso e alcuni la considerano in parte una distinzione di marketing. Ci concentriamo sulla parte pratica.

La risposta breve

Il Monitoraggio è un’attività. Decidi in anticipo cosa guardare, come CPU, tasso di errore o spazio su disco, e imposti le soglie che attivano gli avvisi. Risponde: “È accaduto ciò che temevo?”

Osservabilità è una proprietà del tuo sistema. Il termine deriva dalla teoria del controllo, dove descrive quanto bene si possa dedurre lo stato interno di un sistema dai suoi output esterni. In pratica risponde: “Cosa sta succedendo e perché, anche per problemi che non avevo mai previsto?”

Pensa a un’auto. Le spie sul cruscotto stanno monitorando. Coprono una serie di problemi noti. La porta diagnostica completa di un meccanico, che consente a qualcuno di porre nuove domande su qualsiasi parte del motore, è più vicina all’osservabilità.

Monitoraggio e osservabilità fianco a fianco

Aspetto Monitoraggio Osservabilità
Domanda principale C’è qualcosa che non va? Perché è sbagliato?
Meglio per Modalità di guasto note Fallimenti sconosciuti e nuovi
Avvicinamento Controlli e dashboard predefiniti Esplorazione aperta di dati avanzati
Uscita tipica Avvisi e grafici di stato Risposte a nuove domande
Dettaglio dati Spesso aggregati Dettagliato, per richiesta ove possibile
Installazione Configura controlli dall’esterno Richiede la strumentazione del codice
Utilizzato da Operazioni, personale reperibile Sviluppatori e personale reperibile

Questa non è una scelta tra i due. Hai ancora bisogno di avvisi che ti dicano quando guardare.

Perché il solo monitoraggio non basta

Con un’applicazione su un server, l’elenco delle cose che possono andare storte è piuttosto breve, quindi puoi controllarle tutte. Un sistema moderno può avere dozzine di servizi, code e API di terze parti, oltre a container che vanno e vengono. I guasti diventano combinazioni che nessuno aveva previsto: una regione, un tipo di cliente, una versione specifica dell’app e un’unica dipendenza lenta.

Non puoi scrivere in anticipo una dashboard per una domanda a cui non hai pensato. Hai bisogno di dati che ti permettano di chiederli in seguito.

Log, metriche e tracce

Questi tre tipi di telemetria sono spesso chiamati i pilastri dell’osservabilità. Ognuno risponde a una domanda diversa:

Segnale Di cosa si tratta Risposte Debolezza
Metriche I numeri nel tempo Quanto? Sta peggiorando? Piccoli dettagli sui singoli eventi
Registri Registrazioni di singoli eventi Cosa è successo esattamente? Può essere costoso e rumoroso
Tracce Percorso di una richiesta attraverso i servizi Dov’è finito il tempo? Richiedono strumentazione e sono spesso campionati

Metriche

http_requests_total{service="checkout", status="500"} 1832
http_request_duration_seconds{service="checkout", quantile="0.95"} 2.4

Le metriche sono economiche da archiviare e veloci da interrogare, il che le rende ideali per dashboard e avvisi. Diffidare delle etichette ad alta cardinalità, come l’ID utente, in molti sistemi metrici, perché possono aumentare notevolmente i costi.

Tracce

Una traccia segue una richiesta tra i servizi. Ogni passaggio è un intervallo con un’ora di inizio e una durata:

POST /checkout                      2410 ms
├─ auth-service: verify token         18 ms
├─ cart-service: load cart            42 ms
├─ pricing-service: calculate       2290 ms   <-- slow
│  └─ SELECT coupons ...            2265 ms
└─ payment-service: not reached

Una traccia rende evidente un passaggio lento, che è molto difficile da vedere in log separati da servizi separati.

Registri

I registri forniscono i dettagli di ciò che è accaduto in un dato momento. Vediamo come renderli utili in un momento.

Una procedura dettagliata sull’incidente

Ecco come i pezzi si incastrano, in un esempio immaginario.

Passo Segnale Cosa impariamo
1. Allerta incendi Metrico La latenza di Checkout p95 ha superato il target di 1 secondo
2. Scomponilo Metrico È interessata solo l’app mobile, non il Web
3. Esaminare una richiesta Traccia Il tempo è nel servizio prezzi, su una richiesta di coupon
4. Leggi i dettagli Registri Tutte le richieste lente utilizzano un coupon della campagna di oggi
5. Confermare la causa Piano di interrogazione La ricerca del coupon non ha un indice adatto
6. Risolvilo Distribuzione Aggiungi l’indice e osserva il ripristino della latenza

Il monitoraggio ha gestito il passaggio 1. Tutto ciò che è seguito era osservabilità. Nota come ogni domanda deriva dalla risposta precedente. Nessuno avrebbe potuto creare in anticipo una dashboard per la “query sui coupon dell’app mobile dalla campagna di oggi”. Per quanto riguarda la correzione stessa, la nostra guida all’ottimizzazione delle query SQL mostra come leggere questo tipo di piano.

Registri migliori

I registri di testo semplice sono fatti per gli occhi umani e difficili da interrogare. I log strutturati utilizzano campi su cui una macchina può filtrare:

# Hard to search
ERROR Payment failed for user 42 after 3 tries

# Easy to search
{"level":"error","event":"payment_failed","user_id":"42",
 "attempts":3,"provider":"acme","trace_id":"a1b2c3","duration_ms":2410}

Con il secondo modulo puoi subito chiedere “quanti guasti per fornitore nell’ultima ora?” Il campo trace_id è particolarmente prezioso, poiché collega una riga di registro all’intera richiesta, attraverso ogni servizio toccato.

Non registrare mai password, token o numeri di carte e fai attenzione ai dati personali. Come spiega la nostra guida, i JWT possono essere riutilizzati da chiunque li legga da un registro.

Suggerimento: aggiungi il contesto che desideri durante un incidente, ad esempio versione, regione, livello del cliente e stato di flag della funzionalità. Poter dire “solo la versione 2.14 in una regione” spesso risolve da solo il problema.

I segnali d’oro

Non sai cosa monitorare? Il libro Site Reliability Engineering di Google suggerisce quattro segnali per i sistemi rivolti all’utente:

Segnale Domanda Esempio
Latenza Quanto tempo richiedono le richieste? tempo di risposta p95 e p99
Traffico Quanta richiesta c’è? Richieste al secondo
Errori Quante richieste falliscono? Tasso di 5xx risposte
Saturazione Quanto è pieno il sistema? Utilizzo della CPU, della memoria e del pool di connessioni

Utilizza i percentili per la latenza, poiché le medie nascondono richieste lente, come abbiamo mostrato in test di carico e test di stress.

Avvisi di cui le persone si fidano

Se gli avvisi vengono attivati continuamente, le persone smettono di leggerli. Quelli bravi seguono alcune regole:

  • Avviso sui sintomi avvertiti dagli utenti. “Errori di pagamento superiori al 2%” batte “CPU all’85%”. Una CPU elevata che non danneggia nessuno non dovrebbe svegliare nessuno.
  • Rendi ogni avviso utilizzabile. Se nessuno ha bisogno di fare nulla, rendilo un elemento della dashboard o rimuovilo.
  • Collegamento a un runbook. Indica al risponditore dove cercare e cosa provare.
  • Rivedili regolarmente. Elimina o correggi eventuali avvisi ignorati il ​​mese scorso.

Obiettivi del livello di servizio

Uno SLO trasforma “il sito deve essere veloce e affidabile” in un obiettivo misurabile, ad esempio “il 99,9% delle richieste di pagamento ha esito positivo nell’arco di 30 giorni”. Ciò consente circa lo 0,1% di errori, noto come budget di errore. Se ne hai abbastanza, puoi spedire più velocemente e, se è quasi esaurito, puoi dare priorità all’affidabilità. È un modo utile per risolvere le controversie tra velocità di consegna e stabilità.

OpenTelemetry e strumenti

OpenTelemetry è uno standard open source e indipendente dal fornitore per la generazione e l’esportazione di dati di telemetria. È un progetto della Cloud Native Computing Foundation. Strumentarlo significa che puoi modificare il tuo backend in un secondo momento senza riscrivere il codice. Non è un prodotto di archiviazione o dashboard in sé, quindi abbinalo a uno:

Scopo Esempi open source Esempi commerciali
Metriche Prometeo Datadog, Nuova Reliquia
Cruscotti Grafana Datadog, Dynatrace
Registri Loki, OpenSearch Splunk, elastico
Tracce Jaeger, Tempo Favo, Datadog

Controlla tu stesso le caratteristiche attuali e i prezzi, poiché questi prodotti cambiano spesso. I costi possono aumentare rapidamente con il volume dei dati, quindi utilizza il campionamento e imposta limiti di conservazione.

Come iniziare

  1. Inizia con i segnali d’oro per il tuo servizio più importante.
  2. Aggiungi uno o due avvisi sui sintomi notati dagli utenti.
  3. Passa ai log strutturati, con un ID richiesta in ogni riga.
  4. Aggiungi il tracciamento al percorso principale dell’utente con OpenTelemetry, poiché la strumentazione automatica può coprire molti framework comuni.
  5. Collega le distribuzioni ai tuoi grafici, in modo da poter vedere se un rilascio dalla tua pipeline CI/CD ha causato una modifica.
  6. Impara da ogni incidente. Dopo ciascuno, chiedi quali dati avrebbero reso più rapida la risoluzione e aggiungili.

Un piccolo team con un servizio non ha bisogno di una piattaforma enorme. Metriche di base, registri validi e alcuni avvisi potrebbero essere sufficienti. Il tracciamento guadagna terreno man mano che il numero di servizi cresce.

Errori comuni

  • Acquistare uno strumento e chiamarlo osservabilità. Il valore deriva da una buona strumentazione e dal modo in cui si utilizzano i dati.
  • Trattare i tre pilastri come una lista di controllo. Separare i dati senza alcun modo per collegarli ti costringe a cercare tra le schede. Gli ID condivisi contano.
  • Raccogliere tutto. La telemetria non filtrata diventa costosa e aggiunge rumore.
  • Troppe dashboard. Alcune visualizzazioni attendibili superano cento che nessuno apre.
  • Pensare che sostituisca i test. Hai ancora bisogno di test prima del rilascio. Tuttavia, i rilasci Canary si abbinano bene a questi segnali.

Considerazioni finali

Il monitoraggio ti dice che qualcosa è andato storto e l’osservabilità ti dà i mezzi per scoprirne il motivo. Il test pratico è semplice: quando si presenta un problema sconosciuto, riesci a trovarne la causa senza inviare nuovo codice? La prossima volta che ti trovi coinvolto in un incidente, scrivi tutte le domande a cui non puoi rispondere. Quella lista è la tua tabella di marcia.

Domande frequenti

Qual è la differenza tra monitoraggio e osservabilità?

Il monitoraggio tiene traccia delle metriche predefinite e degli avvisi sui problemi noti. L’osservabilità è la capacità di comprendere lo stato di un sistema dai suoi output, anche in caso di problemi imprevisti.

Quali sono i tre pilastri dell’osservabilità?

Sono log, metriche e tracce. I log registrano gli eventi, le metriche misurano i valori nel tempo e le tracce seguono una singola richiesta tra i servizi.

Ho bisogno dell’osservabilità se ho il monitoraggio?

Per un sistema piccolo e semplice, un buon monitoraggio e i registri potrebbero essere sufficienti. Man mano che i sistemi diventano distribuiti e i guasti diventano meno prevedibili, l’osservabilità diventa più preziosa.

Cos’è OpenTelemetry?

Si tratta di uno standard open source e di un insieme di strumenti per la produzione e l’esportazione di log, parametri e tracce, quindi non sei legato all’agente di un singolo fornitore.

Quali sono i quattro segnali d’oro?

Sono la latenza, il traffico, gli errori e la saturazione. Le indicazioni SRE di Google li consigliano come punto di partenza per il monitoraggio dei sistemi rivolti agli utenti.

Continua a imparare

Lavora con Stack Quora

Hai bisogno di aiuto con test, WordPress o SEO?

Aiutiamo i team a fornire software migliore e a far crescere i loro siti. Raccontaci a cosa stai lavorando e ti suggeriremo chiaramente il prossimo passo.

Continua a leggere

Altre guide su test, intelligenza artificiale e sviluppo moderno

Ti è piaciuto questo articolo? Scegli un argomento e passa direttamente ai nostri tutorial più recenti.

Intelligenza artificiale

Spiegazione delle allucinazioni dell'intelligenza artificiale: perché i modelli linguistici inventano le cose e come ridurle

Spiegazione delle allucinazioni dell'intelligenza artificiale: cosa sono, perché i modelli linguistici le producono, tipi comuni, come ridurle con b…

Leggi l'articolo →
DevOps

Spiegazione delle variabili d'ambiente: file .env, segreti e configurazione eseguiti correttamente

Variabili d'ambiente spiegate con esempi Python che abbiamo eseguito: lettura e impostazione, perché ogni valore è una stringa, file .env, ereditari…

Leggi l'articolo →
Sviluppo software

Spiegazione della limitazione della velocità API: algoritmi, intestazioni e gestione degli errori 429

La limitazione della velocità dell'API spiegata con una simulazione che abbiamo eseguito: bucket di token, finestra fissa, finestra scorrevole, risp…

Leggi l'articolo →
Automazione dei test

Derisione in Python: unittest.mock, patch e gli errori che fanno mentire i test

Mocking in Python con unittest.mock, testato: Mock e return_value, side_effect, patch dove viene utilizzato un nome, specifiche e autospec, date moc…

Leggi l'articolo →
Test del software

Spiegazione della copertura del codice: copertura di linea o di filiale e cosa significa realmente il 100%.

Copertura del codice spiegata con una vera esecuzione di cover.py: copertura di linea, ramo e condizione, lettura di un rapporto, perché la copertur…

Leggi l'articolo →
Database e SQL

DELETE vs TRUNCATE vs DROP in SQL: differenze, rollback e quando utilizzarli

DELETE vs TRUNCATE vs DROP spiegato con SQL testato: cosa rimuove, rollback, trigger, reimpostazione dell'identità, velocità e come differiscono Pos…

Leggi l'articolo →
Database e SQL

Spiegazione delle visualizzazioni SQL: crea, utilizza ed evita le insidie, con esempi

Viste SQL spiegate con le query che abbiamo eseguito: creazione di una vista, risultati in tempo reale, nascondere colonne, prestazioni, viste aggio…

Leggi l'articolo →
Sviluppo software

Interfaccia TypeScript e tipo: differenze reali, testate con il compilatore

Interfaccia TypeScript vs tipo, verificata con il vero compilatore: cosa possono fare entrambi, cosa può fare solo uno, fusione delle dichiarazioni,…

Leggi l'articolo →
Sviluppo software

Spiegazione di Python *args e **kwargs: funzioni flessibili con esempi chiari

Python *args e **kwargs spiegati con il codice che abbiamo eseguito: compressione e decompressione, ordine dei parametri, argomenti solo per parole …

Leggi l'articolo →
Sviluppo software

Funzioni Lambda Python: sintassi, usi reali e quando non usarli

Funzioni lambda Python spiegate con il codice che abbiamo eseguito: sintassi, ordinamento con chiave, mappa e filtro, chiusure, trap dell'associazio…

Leggi l'articolo →
Intelligenza artificiale

Cosa sono gli agenti AI? Come funzionano, con un semplice ciclo di agenti che puoi eseguire

Cosa sono gli agenti IA? Una semplice guida al ciclo dell'agente, agli strumenti, alla memoria e ai guardrail, con un piccolo ciclo Python che abbia…

Leggi l'articolo →
DevOps

Monitoraggio vs osservabilità: la vera differenza, con log, metriche e tracce

Spiegazione del monitoraggio e dell'osservabilità: errori noti e sconosciuti, log, metriche e tracce, una procedura dettagliata sugli incidenti di p…

Leggi l'articolo →
DevOps

Volumi Docker e montaggi di associazione: mantenere i dati del contenitore nel modo giusto

Volumi Docker e montaggi di collegamento spiegati: perché i dati del contenitore scompaiono, volumi denominati, montaggi di collegamento, tmpfs, ese…

Leggi l'articolo →
Automazione dei test

TDD vs BDD: differenze chiave, una caratteristica costruita in entrambi i modi e quando utilizzarli ciascuno

TDD vs BDD spiegato con una funzione di sconto costruita in entrambi i modi: refactoring rosso-verde con il codice che abbiamo eseguito, scenari "Da…

Leggi l'articolo →
Sviluppo software

Git merge vs rebase: differenze, esempi e quando usare ciascuno

Git merge vs rebase spiegato con output reale del log, una tabella di confronto, la regola d'oro del rebase e un flusso di lavoro sicuro per i team.

Leggi l'articolo →
Sviluppo software

List comprehension in Python: sintassi, esempi e quando evitarla

List comprehension in Python spiegata: sintassi, filtri, if-else, cicli annidati, tempi misurati e i casi in cui un normale ciclo for è meglio.

Leggi l'articolo →
Database e SQL

SQL JOIN spiegati con esempi (Inner, Left, Right, Full)

Capisci i JOIN SQL passo dopo passo con tabelle e query di esempio: INNER, LEFT, RIGHT, FULL, CROSS e SELF, con errori comuni e consigli sulle prest…

Leggi l'articolo →