API de télémétrie dans .NET

Effectué

Comment examiner le comportement d’une application pour la résolution des problèmes ou l’optimisation des performances ? Plus vous avez de données sur ce que l’application a fait, plus il est facile de diagnostiquer les problèmes.

Imaginez que vous travaillez pour un détaillant d’équipements extérieurs. Vos équipes travaillent à leurs microservices, prêts pour la phase de test. Vous souhaitez vous assurer que votre application native cloud émet des données de télémétrie sur son comportement afin de pouvoir diagnostiquer les problèmes pendant les tests, la préproduction et la production.

Dans cette unité, vous allez découvrir la télémétrie et les différents types de données que vous pouvez enregistrer avec celle-ci.

Qu’est-ce que la télémétrie ?

En ingénierie, la télémétrie est la mesure des données et leur transmission automatique vers un système central de surveillance. Par exemple, une voiture de course peut enregistrer des données sur ses performances et les renvoyer au paddock où les ingénieurs l’analysent. De même, une capsule spatiale peut enregistrer des informations sur les conditions dans la capsule et les renvoyer au contrôle de mission. Ces dernières années, il est devenu courant d’enregistrer et d’analyser les données de télémétrie dans des systèmes plus courants. Par exemple, votre chauffage central peut envoyer des données de télémétrie au fabricant pour faciliter la résolution des problèmes.

Si vous écrivez des applications natives cloud, la télémétrie est utile quand :

  • Vous développez des microservices et souhaitez savoir s’ils se comportent comme prévu.
  • Vous testez votre application et souhaitez savoir ce qui se passe quand elle échoue à un test.
  • Vous mettez votre application en préproduction et souhaitez savoir comment elle fonctionne.
  • Vous prenez en charge votre application en production et souhaitez résoudre une exception ou optimiser les performances.

Nous pouvons décrire un système qui émet des données de télémétrie enrichies comme suit :

  • Observable : Un système observable est un système qui vous permet de comprendre son comportement de l’extérieur.
  • Instrumenté : Un système instrumenté est un système qui émet toutes les données nécessaires aux développeurs pour résoudre un problème.

OpenTelemetry est une infrastructure d’observabilité et un kit de ressources que vous pouvez utiliser dans votre application pour créer, traiter et émettre des données de télémétrie. Vous pouvez facilement l’ajouter à n’importe quelle application .NET, y compris les microservices dans une application native cloud. Elle émet des données dans un format que les outils d’observabilité courants comme Jaeger et Prometheus peuvent utiliser et analyser.

Piliers de l’observabilité

La nature des applications natives cloud, qui se composent de microservices distribués qui utilisent des technologies disparates, peut rendre difficile la création de code observable et correctement instrumenté. Toutes les équipes doivent intégrer l’observabilité dans leurs microservices, sinon vous pouvez constater que certaines parties de votre application sont difficiles à surveiller et à dépanner en cas de problèmes.

Important

Pour vous assurer que l’ensemble de votre application est observable, vous devez vous assurer que toutes les équipes de développement considèrent les trois piliers de l’observabilité dans leurs microservices : La journalisation, les métriques et le suivi.

Les trois piliers de l’observabilité sont trois différents types d’enregistrements qui stockent le comportement des composants logiciels pour une analyse ultérieure :

  • Journal : un enregistrement de texte horodaté de ce qui s’est passé pendant le traitement d’une demande.
  • Métrique : une mesure d’un service capturée lors de l’exécution. Les valeurs de métrique peuvent être agrégées en statistiques sur un processus, notamment :
    • Des statistiques .NET Runtime telles que la mémoire utilisée ou la quantité de nettoyage de la mémoire qui s’est produite.
    • Des statistiques de package NuGet ou ASP.NET, telles que le nombre de requêtes terminées, les durées des requêtes ou le nombres d’erreurs.
    • Des statistiques personnalisées spécifiques à votre application, telles que le nombre de commandes passées.
  • Trace distribuée : un enregistrement de toutes les unités de travail, souvent appelées Étendues, nécessaires pour gérer une requête individuelle. Dans une application native cloud, de nombreux microservices et services de stockage peuvent être impliqués dans une seule requête et une trace distribuée les montrerait tous à mesure qu’ils collaborent pour préparer la réponse.

Remarque

Dans OpenTelemetry, toutes les données qui ne font pas partie d’une trace distribuée ou d’une métrique sont considérées comme un journal, par exemple des événements.

Utilisation de la télémétrie dans .NET

.NET a des types intégrés pour représenter les trois piliers :

  • ILogger : Vous pouvez utiliser cette interface standard lorsque vous souhaitez journaliser des événements à partir de n’importe quel code .NET.
  • Meter (compteur) : Vous pouvez utiliser cette classe pour créer un groupe d’instruments dont chacun d’entre eux mesure une valeur associée aux performances ou au comportement de votre code. Par exemple, vous pouvez ajouter un instrument qui compte les ventes d’un produit ou un autre qui mesure la durée d’attente d’un message dans une file d’attente. .NET fournit également de nombreuses métriques intégrées.
  • Activité : Vous pouvez utiliser cette classe pour enregistrer les informations de suivi. Commencez par créer un objet ActivitySource pour votre espace de noms. Appelez ensuite la méthode StartActivity pour commencer l’enregistrement des données.

Vous pouvez utiliser ces classes dans n’importe quel code .NET. Dans l’unité suivante, vous verrez comment .NET Aspire facilite l’utilisation des classes OpenTelemetry dans les applications natives cloud.

En savoir plus