API di telemetria in .NET
Come è possibile analizzare il comportamento di un'app per la risoluzione dei problemi o per l'ottimizzazione delle prestazioni? Più dati si hanno su ciò che ha fatto l'app, più è facile diagnosticare i problemi.
Si supponga di lavorare per un rivenditore di attrezzature da esterno. I team stanno creando i propri microservizi, pronti per la fase di test. Ci si vuole assicurare che l'app nativa del cloud emetta dati di telemetria sul comportamento, in modo da poter diagnosticare i problemi durante test, gestione temporanea e produzione.
In questa unità verranno illustrati i dati di telemetria e i diversi tipi di dati che è possibile registrare con essi.
Che cos'è la telemetria?
In progettazione, la telemetria è la misurazione dei dati e la loro trasmissione automatica a un sistema centrale in modo che vengano monitorati. Ad esempio, un'auto da corsa può registrare i dati sulle prestazioni e inviarli al paddock, dove gli ingegneri li analizzeranno. Analogamente, una capsula spaziale potrebbe registrare informazioni sulle condizioni al suo interno e inviarle al centro di controllo della missione. Negli ultimi anni, è diventato comune registrare e analizzare i dati di telemetria in sistemi più comuni. Ad esempio, il riscaldamento centrale può inviare dati di telemetria al produttore per facilitare la risoluzione dei problemi.
Se si scrivono app native del cloud, i dati di telemetria sono utili quando:
- Si stanno sviluppando microservizi e si vuole sapere se si comportano come previsto.
- Si sta testando l'app e si vuole sapere cosa accade quando non supera un test.
- Si sta eseguendo lo staging dell'app e si vuole sapere come funziona.
- Si sta supportando l'app nell'ambiente di produzione e si vuole risolvere un'eccezione o ottimizzare le prestazioni.
È possibile descrivere un sistema che genera dati di telemetria avanzati come:
- Osservabilità: Un sistema osservabile consente di comprenderne il comportamento dall'esterno.
- Instrumentazione: Un sistema instrumentato è un sistema che genera tutti i dati di cui gli sviluppatori hanno bisogno per risolvere un problema.
OpenTelemetry è un framework di osservabilità e un toolkit che è possibile usare nell'app per creare, elaborare e generare dati di telemetria. È possibile aggiungerlo facilmente a qualsiasi applicazione .NET, inclusi i microservizi in un'app nativa del cloud. Genera dati in forme utilizzabili e analizzabili da parte di strumenti di osservabilità comuni come Jaeger e Prometheus.
Pilastri dell'osservabilità
La natura delle app native del cloud, costituite da microservizi distribuiti che usano tecnologie diverse, può rendere difficile la creazione di codice osservabile e instrumentato correttamente. Tutti i team devono integrare l'osservabilità nei propri microservizi. In caso contrario, potrebbe essere difficile monitorare quella parte dell'app e risolvere i relativi problemi.
Importante
Per garantire che l'intera app sia osservabile, è necessario assicurarsi che tutti i team di sviluppo considerino i tre pilastri dell'osservabilità nei relativi microservizi: Registrazione, metriche e traccia.
I tre pilastri dell'osservabilità sono tre diversi tipi di registrazioni che archiviano il comportamento delle integrazioni software per un'analisi successiva:
- Log: record di testo con timestamp di ciò che è accaduto durante l'elaborazione di una richiesta.
- Metrica: misura di un servizio acquisita in fase di esecuzione. I valori delle metriche possono essere aggregati in statistiche su un processo, tra cui:
- Statistiche di runtime .NET, ad esempio la memoria usata o il numero di Garbage Collection che si sono verificati.
- Statistiche ASP.NET o del pacchetto NuGet, ad esempio il numero di richieste completate, la durata delle richieste o il numero di errori.
- Statistiche personalizzate specifiche per l'app, ad esempio il numero di ordini effettuati.
- Traccia distribuita: record di tutte le unità di lavoro, spesso definite Intervalli, necessarie per gestire una singola richiesta. In un'app nativa del cloud, molti microservizi e servizi di backup possono essere coinvolti in una singola richiesta, e una traccia distribuita li mostrerà tutti mentre collaborano per preparare la risposta.
Nota
In OpenTelemetry, tutti i dati che non fanno parte di una traccia distribuita o di una metrica vengono considerati log, ad esempio gli eventi.
Uso dei dati di telemetria in .NET
.NET include tipi predefiniti che rappresentano i tre pilastri:
- ILogger: Questa interfaccia fornisce un'interfaccia standard che è possibile usare quando si registrano eventi di qualsiasi codice .NET.
- Contatore: È possibile usare questa classe per creare un gruppo di strumenti, ognuno dei quali misura un valore associato alle prestazioni o al comportamento del codice. Ad esempio, è possibile aggiungere uno strumento che conta le vendite di un prodotto o un altro che misura il tempo di attesa di un messaggio in una coda. .NET offre anche molte metriche predefinite.
- Attività: È possibile usare questa classe per registrare le informazioni di traccia. Per iniziare, creare un oggetto
ActivitySource
per lo spazio dei nomi. Chiamare quindi il metodoStartActivity
per avviare la registrazione dei dati.
È possibile usare queste classi in qualsiasi codice .NET. Nell'unità successiva si vedrà in che modo .NET Aspire semplifica l'uso delle classi OpenTelemetry nelle app native del cloud.
Altre informazioni
- Telemetria di .NET Aspire
- Osservabilità di .NET con OpenTelemetry
- Quali strumenti di diagnostica sono disponibili in .NET Core?