Visualizzare i dati di telemetria con Monitoraggio di Azure e strumenti di terze parti

Completato

L'app raccoglie i dati di telemetria ed è ora necessario un modo più completo per visualizzarlo. In questa unità verrà illustrato come visualizzare i dati di telemetria in molti strumenti diversi.

Monitorare e visualizzare i dati di telemetria

Un modo comune per visualizzare i dati di telemetria consiste nell'usare Insieme Prometheus e Grafana. Prometheus è un sistema di monitoraggio open source che raccoglie le metriche dall'app nativa del cloud. Grafana è uno strumento di visualizzazione open source usato per creare dashboard per visualizzare le metriche raccolte da Prometheus.

Prometeo

Il primo passaggio consiste nell'aggiungere un contenitore Prometheus e configurarlo per raccogliere dati da ogni microservizio nell'app. Si aggiunge quindi la libreria client Prometheus .NET per raccogliere le metriche dall'app.

Screenshot che mostra l'app Prometheus configurata indicante lo stato di salute dell'app eShopLite.

OpenTelemetry fornisce un utilità di esportazione per Prometheus. È possibile aggiungere questo strumento di esportazione alla tua app includendo il OpenTelemetry.Exporter.Prometheus.AspNetCore pacchetto NuGet. Questo pacchetto esporta le metriche in Prometheus in un formato comprensibile. Sostituire l'utilità di esportazione della console corrente con l'utilità di esportazione Prometheus.

Aggiungere gli endpoint per tutti i microservizi nell'app. Per esempio:

global:
  scrape_interval: 1s

scrape_configs:
  - job_name: 'products'
    static_configs:
      - targets: ['backend:8080']
  - job_name: 'store'
    static_configs:
      - targets: ['frontend:8080']

Grafana

Grafana è uno strumento di visualizzazione open source che è possibile usare per creare dashboard per visualizzare le metriche raccolte da Prometheus. È possibile configurare Grafana per connettersi a Prometheus e visualizzare le metriche in un dashboard. Come in precedenza, aggiungere un contenitore Grafana all'app e configurarlo per la connessione a Prometheus.

Screenshot che mostra un dashboard ASP.NET in Grafana.

Si aggiunge Prometheus come origine dati a Grafana in un file YAML:

apiVersion: 1

datasources:
- name: Prometheus
  type: prometheus
  url: http://prometheus:9090 
  isDefault: true
  access: proxy
  editable: true

Abilitare la traccia distribuita

OpenTelemetry supporta sia Jaeger che Zipkin. In questo modulo si usa Zipkin, che è un sistema di traccia distribuita open source. Consente di raccogliere i dati di intervallo necessari per risolvere i problemi di latenza nelle architetture di microservizi. Gestisce sia la raccolta che la ricerca di questi dati.

Screenshot che mostra Zipkin con le dipendenze dell'app eShopLite che invia richieste al servizio Prodotti.

Nel progetto di diagnostica è necessario aggiungere il supporto per Zipkin tramite il OpenTelemetry.Exporter.Zipkin pacchetto NuGet. Aggiungere quindi il codice al metodo AddObservability per esportare i dati in Zipkin.

Approfondimento con Application Insights

È disponibile uno strumento che può combinare l'analisi delle metriche e la visualizzazione della traccia distribuita e quindi unirla ai dati dei log. Application Insights è un servizio APM (Application Performance Management) estendibile. È possibile usarlo per monitorare l'applicazione Web live. Application Insights rileva automaticamente le anomalie delle prestazioni. Include potenti strumenti di analisi che consentono di diagnosticare i problemi e comprendere cosa fanno effettivamente gli utenti con l'app.

Screenshot che mostra lo stato di salute dell'app eShopLite tramite Application Insights.

Come gli strumenti precedenti, è necessario aggiungere un pacchetto NuGet alla soluzione Azure.Monitor.OpenTelemetry.AspNetCore, e quindi introdurre Azure Monitor come esportatore nel progetto di diagnostica.