Che cos'è l'osservabilità?

Completato

Prima di approfondire il codice, è possibile tornare indietro e parlare dell'osservabilità. È necessario disporre di strumenti che consentono di comprendere lo stato interno di un sistema in base a ciò che è visibile esternamente.

Perché implementare l'osservabilità?

Esistono diversi motivi per cui l'osservabilità è un aspetto fondamentale dello sviluppo e del miglioramento delle applicazioni native del cloud:

  • Informazioni sul comportamento del sistema: l'osservabilità fornisce informazioni dettagliate sulle prestazioni dell'applicazione e sulla posizione in cui si verificano colli di bottiglia o errori.
  • Debug e risoluzione dei problemi: quando si verificano problemi, gli strumenti di osservabilità possono fornire informazioni dettagliate su ciò che stava accadendo nel sistema al momento del problema.
  • Miglioramento continuo: l'osservabilità non è solo per identificare e risolvere i problemi, ma viene usata anche per il miglioramento continuo. Monitorando le prestazioni del sistema nel tempo, è possibile identificare le opportunità per ottimizzare il codice, migliorare le prestazioni del sistema e migliorare in modo quantitativo l'esperienza per gli utenti.
  • Rilevamento proattivo dei problemi: con gli strumenti di osservabilità corretti, è spesso possibile rilevare i problemi prima che gli utenti li visualizzino.

L'implementazione dell'osservabilità nelle applicazioni native del cloud non è solo una procedura consigliata, è necessaria per mantenere, ottimizzare e migliorare continuamente le applicazioni. Consente agli sviluppatori di offrire applicazioni affidabili e ad alte prestazioni e fornisce le informazioni necessarie per guidare il processo decisionale informato.

I tre pilastri dell'osservabilità

Esistono tre pilastri principali dell'osservabilità:

  • Log: i log forniscono record dettagliati degli eventi che si verificano all'interno di un'applicazione o di un sistema. Nell'app è possibile usare l'infrastruttura Microsoft.Extensions.Logging per registrare gli eventi.
  • Metriche: le metriche fanno riferimento a misurazioni numeriche e contatori che forniscono informazioni dettagliate sulle prestazioni e sull'integrità di un sistema. Gli esempi includono tassi di richiesta, tempi di risposta, utilizzo cpu/memoria e percentuali di errore. Nell'app potrebbero essere presenti misurazioni specifiche che è necessario tenere traccia.
  • Traccia distribuita: questo processo implica la traccia di una richiesta durante la propagazione di tutti i microservizi nell'app nativa del cloud. Ogni servizio registra i dati di traccia come gli ID richiesta che consentono di correlare gli eventi tra i servizi. La traccia distribuita è utile anche per il debug di problemi di prestazioni ed errori in sistemi complessi.

Insieme, questi tre pilastri forniscono un'osservabilità completa in un sistema.

Origini dei dati per i dati di telemetria

Nell'app nativa del cloud dell'azienda sono disponibili diverse origini di telemetria che è possibile scegliere di raccogliere:

  • Log applicazioni: le applicazioni generano log che forniscono informazioni dettagliate sul relativo funzionamento e sugli errori se si verificano. La registrazione è un'ampia fonte di dati di telemetria.
  • Database: i database possono fornire dati di telemetria sulle query elaborate, sui tempi di esecuzione e sugli errori che si verificano.
  • Richieste e risposte HTTP: le richieste HTTP e le risposte tra i microservizi forniscono dati di telemetria avanzati e preziosi. Questi dati includono le intestazioni di richiesta e risposta, il contenuto del corpo, i codici di stato e le informazioni sulla tempistica.
  • Dati sulle prestazioni lato client: nelle app native del cloud con un front-end è possibile raccogliere i dati sulle prestazioni lato client. Questi dati possono includere riscontri di pagina, tempi di caricamento e tempi di interazione dell'interfaccia utente.
  • Metriche dell'infrastruttura: se l'applicazione è ospitata in un ambiente cloud, è possibile raccogliere metriche dell'infrastruttura come utilizzo della CPU, utilizzo della memoria, traffico di rete e operazioni di I/O su disco.

Raccogliendo e analizzando questi dati di telemetria, è possibile ottenere informazioni dettagliate preziose sulle prestazioni e sull'integrità dell'applicazione.

Implementare l'osservabilità

Per aggiungere l'osservabilità all'applicazione nativa del cloud, seguire questa procedura:

  • Aggiungere la registrazione.
  • Abilitare le metriche e definire metriche personalizzate da acquisire.
  • Abilitare la traccia distribuita con OpenTelemetry e Zipkin.
  • Instrumentare nuovamente l'app con OpenTelemetry e aggiungendo i dati di telemetria al codice.
  • Analizzare i dati di telemetria con Prometheus, Grafana o Application Insights.

Introduzione a OpenTelemetry

In che modo OpenTelemetry consente di aggiungere l'osservabilità all'app e perché è presente un supporto così profondo per l'app in .NET? OpenTelemetry è un framework di osservabilità open source. Offre un modo standard indipendente dal fornitore per generare dati di telemetria.

OpenTelemetry standardizza la modalità di raccolta e trasmissione dei dati di telemetria alle piattaforme back-end. Consente di colmare i gap di visibilità fornendo un formato comune di strumentazione in tutti i microservizi. Non è necessario reinserire il codice o installare agenti proprietari diversi ogni volta che una piattaforma back-end cambia.

Poiché è uno standard aperto, supporta molti altri strumenti all'esterno di .NET. OpenTelemetry è configurato per l'uso di estensioni che consentono agli esportatori di creare dati di telemetria per tutti i diversi strumenti. Ciò significa che è possibile usare gli stessi strumenti per monitorare i microservizi indipendentemente dal linguaggio in cui sono scritti.

OpenTelemetry consente di raccogliere e monitorare tutti e tre i pilastri dell'osservabilità: log, metriche e tracce. Si vedrà come eseguire queste attività nelle unità seguenti.