Afficher les données de télémétrie avec Azure Monitor et des outils tiers

Effectué

Votre application collecte des données de télémétrie et vous avez maintenant besoin d’un moyen plus complet de l’afficher. Dans cette unité, vous allez voir comment afficher les données de télémétrie dans de nombreux outils différents.

Surveiller et afficher les données de télémétrie

Un moyen courant d’afficher les données de télémétrie consiste à utiliser Prometheus et Grafana ensemble. Prometheus est un système de surveillance open source qui collecte des métriques à partir de votre application native cloud. Grafana est un outil de visualisation open source que vous utilisez pour créer des tableaux de bord pour afficher les métriques collectées par Prometheus.

Prometheus

La première étape consiste à ajouter un conteneur Prometheus et à le configurer pour collecter des données à partir de chaque microservice de votre application. Vous ajoutez ensuite la bibliothèque cliente Prometheus .NET pour collecter des métriques à partir de l’application.

Screenshot that shows the configured Prometheus app showing the health of the eShopLite app.

OpenTelemetry fournit un exportateur pour Prometheus. Vous pouvez ajouter cet exportateur à votre application en incluant le package OpenTelemetry.Exporter.Prometheus.AspNetCore NuGet. Ce package exporte les métriques vers Prometheus dans un format qu’il peut comprendre. Vous remplacez l’exportateur de console actuel par l’exportateur Prometheus.

Vous ajoutez les points de terminaison pour tous les microservices de votre application. Par exemple :

global:
  scrape_interval: 1s

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

Grafana

Grafana est un outil de visualisation open source que vous pouvez utiliser pour créer des tableaux de bord pour afficher les métriques collectées par Prometheus. Vous pouvez configurer Grafana pour se connecter à Prometheus et afficher les métriques dans un tableau de bord. Comme précédemment, vous ajoutez un conteneur Grafana à votre application et le configurez pour vous connecter à Prometheus.

Screenshot that shows an ASP.NET dashboard in Grafana.

Vous ajoutez Prometheus en tant que source de données à Grafana dans un fichier YAML :

apiVersion: 1

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

Activer le suivi distribué

OpenTelemetry prend en charge Jaeger et Zipkin. Dans ce module, vous utilisez Zipkin, qui est un système de suivi distribué open source. Il permet de collecter les données de minutage nécessaires pour résoudre les problèmes de latence dans les architectures de microservice. Il gère à la fois la collection et la recherche de ces données.

Screenshot that shows Zipkin showing the dependencies of the eShopLite app Store sending requests to the Products service.

Dans votre projet de diagnostics, vous devez ajouter la prise en charge de Zipkin via le package OpenTelemetry.Exporter.Zipkin NuGet. Vous ajoutez ensuite du code à la AddObservability méthode pour exporter des données vers Zipkin.

Aller plus loin avec Application Insights

Il existe un outil qui peut combiner l’examen des métriques et l’affichage du suivi distribué, puis le fusionner avec les données des journaux. Application Insights est un service de gestion des performances des applications (APM) extensible. Vous pouvez l’utiliser pour monitorer votre application web en production. Application Insights détecte automatiquement les anomalies de performances. Il intègre de puissants outils d’analyse pour vous aider à diagnostiquer les problèmes et à comprendre ce que font les utilisateurs avec votre application.

Screenshot that shows Application Insights showing the health of the eShopLite app.

Comme les outils précédents, vous devez ajouter un package NuGet à votre solution Azure.Monitor.OpenTelemetry.AspNetCore, puis introduire Azure Monitor en tant qu’exportateur dans votre projet de diagnostics.