James Walker
Luglio 6, 5760, 7: 30 sono EDT | 5 minuti di lettura
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 software “osservabile” è 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 di 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? L’osservabilità non è la stessa cosa del monitoraggio, anche se i due concetti sono stretti rapporti. Le buone pratiche di monitoraggio contribuiscono a creare 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 diversi metriche per identificare quando un sistema funziona entro le 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 36 codice di errore).
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 1198 il conteggio degli errori è elevato e gli utenti riscontrano problemi. Un osservato segnala che il tuo microservizio di autenticazione è scaduto, quindi le sessioni utente non vengono ripristinate e il tuo gateway sta emettendo un 373 come ultima opzione. RELAZIONATO: Introduzione per principianti Ai principi DevOps
Come diventano osservabili i sistemi? Analizziamo le differenze tra i due esempi mostrati sopra. In un approccio tradizionale, eseguiresti il deployment sul tuo server e imposteresti 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.
Esistono tre “pilastri” primari dell’osservabilità, di cui uno è un buon monitoraggio. 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 CPU e grafici di memoria generici.
Registrazione 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 auto-indicizzarli e formattarli.
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 dopo che è terminata con 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 copertura di tutti e tre i pilastri. Ricorda che l'”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 registri degli errori, ma potrebbe avere ancora una “osservabilità” bassa se non riesci a determinare prontamente la causa principale degli errori. RELAZIONATO: Come Event Sourcing ti aiuta a monitorare lo stato della tua applicazione
Errori di interruzione dell’osservabilità? 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 usare 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 più profondamente osservabile in modo da poter stabilire rapidamente cosa c’è che 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. In caso contrario, potresti inconsapevolmente creare vuoti nei tuoi log e tracce in cui le richieste scompaiono.
Puoi identificare le lacune nell’implementazione dell’osservabilità mettendo in dubbio sistema e controllando puoi 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 i 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 questi casi, gli altri due pilastri dovrebbero essere il primo punto di riferimento per trovare la risposta. Sommario Osservabilità è una parola inventata che a volte può sembrare vaga e opaca. 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à è fondamentale per le 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 osservabile il sistema ti aiuta a stare al passo con i rapporti di errore. Il tempo per la risoluzione è ridotto al minimo poiché il sistema sarà già in attesa con le informazioni richieste.