Che cos'è l'osservabilità e perché è importante?

0
182
Gorodenkoff/Shutterstock.com

L'osservabilità è una caratteristica dei sistemi software che forniscono una visibilità profonda delle loro operazioni interne. Possedere una buona osservabilità facilita la risoluzione più rapida dei problemi aiutando i team operativi a identificare la causa dei problemi.

La definizione più semplice di “osservabile” il software è un sistema che consente di dedurre il suo stato interno osservando gli output che produce. Se il tuo sistema non è in grado di fornire questi output, non sarà completamente osservabile.

Considera una piattaforma software che sembra funzionare più lentamente del normale. A prima vista, non hai informazioni sufficienti per capire cosa sta causando il rallentamento. Ma se il sistema emette metriche sulle prestazioni per ogni fase della sua esecuzione, potresti individuare immediatamente il componente con un problema. L'osservabilità del sistema è stata ora migliorata.

L'osservabilità non è la stessa cosa del monitoraggio?

< p>L'osservabilità non è la stessa cosa del monitoraggio, sebbene i due concetti siano stretti rapporti. Le buone pratiche di monitoraggio contribuiscono a un sistema osservabile. Non forniscono una garanzia di osservabilità. Al contrario, un sistema potrebbe essere ragionevolmente osservabile senza uno stack di monitoraggio completo.

Il monitoraggio in termini DevOps si riferisce in genere all'uso di diverse metriche predefinite per identificare quando un sistema funziona all'interno delle aspettative. Le metriche coperte di solito sono legate all'utilizzo delle risorse (utilizzo della CPU, throughput di rete) ma possono anche far emergere dati di base sulle operazioni del sistema (numero di richieste che causano un codice di errore 500).

br>

L'osservabilità va un po' più in profondità e richiede una strumentazione più sfumata. A differenza del monitoraggio, è accoppiato al tuo sistema e alle sue caratteristiche, piuttosto che all'ambiente circostante.

Un sistema monitorato ti dice che il conteggio di 500 errori è elevato e che gli utenti stanno riscontrando problemi. Un sistema osservato segnala che il tuo microservizio di autenticazione sta scadendo, quindi le sessioni utente non vengono ripristinate e il tuo gateway sta emettendo un 500 come ultima risorsa.

RELAZIONATO: Introduzione ai principi DevOps per principianti

Come fanno i sistemi a diventare osservabili?

Analizzeremo le differenze tra i due esempi mostrati sopra. In un approccio tradizionale, dovresti eseguire il deployment sul tuo server e impostare il monitoraggio, magari utilizzando gli avvisi delle metriche del tuo provider cloud. Se è stato rilevato un problema, puoi andare a ispezionare i registri del server per problemi.

Questo modello è già osservabile in una certa misura. L'uso moderno di “osservabilità” trasmette un po' di più però. I log degli errori del server in genere forniscono il risultato finale ma non gli stati che lo hanno causato. Affinché un sistema sia veramente osservabile, dovresti essere in grado di determinare la sequenza di stati interni che hanno portato a un particolare output, senza dover dedicare troppo tempo alla raccolta manuale delle informazioni.

Ci sono tre “pilastri” di osservabilità, di cui un buon monitoraggio è uno. Prestare attenzione a tutti e tre i pilastri dovrebbe tradursi in un sistema osservabile che sia un aiuto efficace nella diagnosi dei problemi.

RELAZIONATO: Che cos'è lo sviluppo low-code e no-code ?

Metriche e monitoraggio

Un sistema osservabile dovrebbe fornire misurazioni costanti per metriche predefinite. Le metriche migliori sono quelle che presentano informazioni fruibili relative alla tua applicazione e alle sue prestazioni, non necessariamente grafici generici di CPU e memoria.

Logging

Il secondo pilastro dell'osservabilità è la registrazione. Questo descrive un approccio più strutturato alla registrazione rispetto a una scrittura di base quando si verifica un errore. I registri dovrebbero essere altamente integrati nel sistema in modo che ogni evento venga registrato in un servizio di registrazione centralizzato. I log stessi dovrebbero essere strutturati in modo standardizzato, in modo che gli strumenti di visualizzazione dei log possano indicizzarli e formattarli automaticamente.

Traccia

L'ultimo pilastro è tracciare. Le tracce catturano tutto ciò che accade durante una particolare esecuzione del programma. Ciò fornisce le informazioni necessarie per riprodurre l'esatta sequenza di eventi che hanno portato a un problema. La traccia è particolarmente importante per i sistemi distribuiti in cui una singola richiesta potrebbe colpire una dozzina o più microservizi. Fare affidamento solo sui log di servizio non è realistico, poiché non sarai in grado di vedere cosa è successo alla richiesta al termine di ogni servizio. Una traccia a livello di richiesta è più efficace nell'individuare i problemi.

Puoi iniziare a rendere un sistema più osservabile assicurandoti di avere la copertura di tutti e tre i pilastri. Ricorda che “osservabilità” non è una cosa specifica – è un tratto di un sistema, non un singolo attributo. È probabile che il tuo sistema sia già “osservabile” attraverso metriche di base e log degli errori, ma potrebbe comunque avere una bassa “osservabilità” se non riesci a determinare prontamente la causa principale degli errori.

RELAZIONATO: In che modo l'origine degli eventi ti aiuta a monitorare lo stato della tua applicazione

L'osservabilità interrompe gli errori?

Vale la pena notare che l'osservabilità non ha lo scopo di eliminare bug ed errori. Invece, è in realtà un'accettazione del fatto che i problemi possono e si verificheranno. Piuttosto che presumere che il tuo sistema sia infallibile, l'osservabilità ti incoraggia a pianificare l'impensabile. Se dovessi affrontare un'interruzione, avresti gli strumenti necessari per trovare la causa?

Per utilizzare un'analogia automobilistica, è la differenza tra una spia del motore di controllo e il software di diagnostica del produttore. Per quanto indesiderabile e improbabile possa essere, i malfunzionamenti su strada si verificano. La maggior parte delle persone senza attrezzature speciali vede una spia di avvertimento generica. Un automobilista o un tecnico dedicato avrà gli strumenti per leggere la causa di quella luce.

Ora torniamo al cloud. Una schermata di metriche rosse non sarà di grande aiuto durante un'interruzione. Simile a come un meccanico di un veicolo può leggere la diagnostica, il tuo sistema deve essere osservabile più profondamente in modo da poter stabilire rapidamente cosa non va senza guardare i dadi e i bulloni. È importante pianificare i disastri in modo da non farsi prendere in giro.

L'osservabilità è continua

Il mantenimento di una buona osservabilità richiede una manutenzione continua. Dovrai valutare la tua strumentazione man mano che aggiungi nuovi servizi. Altrimenti, potresti inconsapevolmente creare vuoti nei tuoi log e tracce in cui le richieste scompaiono.

Pubblicità

Puoi identificare le lacune nella tua implementazione di osservabilità mettendo in discussione il sistema e verificando di poter ottenere le risposte di cui hai bisogno. Dovresti pensare alle informazioni di cui avresti bisogno per iniziare ad affrontare un problema. Sareste in grado di accedervi durante un'interruzione, senza un intervento manuale prolungato?

Un sistema veramente osservabile dovrebbe essere in grado di utilizzare uno dei tre pilastri per rispondere alle domande presentate dagli altri due. Perché l'utilizzo della memoria è nella zona di pericolo? Perché è stato registrato un errore nei log del servizio di autenticazione? In entrambi i casi, gli altri due pilastri dovrebbero essere il primo punto di riferimento per trovare la risposta.

Riassunto

Osservabilità è una parola inventata che può a volte sembrano vaghi e opachi. In pratica, l'uso moderno del termine si riferisce a qualcosa di abbastanza semplice: l'unisono di monitoraggio, registrazione e tracciamento per aiutare a dedurre lo stato interno di un sistema dai suoi output.

Una buona osservabilità è vitale per architetture distribuite in cui la funzionalità è distribuita tra i microservizi. Un sistema non osservabile diventa un buco nero che risucchia le richieste ma non restituisce nulla. Ciò comprometterà la tua capacità di rispondere ai problemi e potrebbe portare gli utenti a segnalare problemi prima che tu te ne renda conto.

Al contrario, un sistema osservabile ti aiuta a stare al passo con le segnalazioni di errori. Il tempo per la risoluzione è ridotto al minimo poiché il sistema sarà già in attesa con le informazioni richieste.