Migration du SDK OpenCensus Python et de l’exportateur Azure Monitor OpenCensus pour Python vers la distribution Azure Monitor OpenTelemetry Python

Remarque

Le SDK Python OpenCensus est déconseillé, mais Microsoft le prend en charge jusqu’à sa mise hors service le 30 septembre 2024. Nous recommandons désormais l’offre Python basée sur OpenTelemetry et fournissons des conseils de migration.

Suivez ces étapes pour migrer des applications Python vers la distribution OpenTelemetryAzure MonitorApplication Insights.

Avertissement

Étape 1 : Désinstallez les bibliothèques OpenCensus

Désinstallez toutes les bibliothèques associées à OpenCensus, y compris tous les packages Pypi qui commencent par opencensus-*.

pip freeze | grep opencensus | xargs pip uninstall -y

Étape 2 : Supprimez OpenCensus de votre code

Supprimez de votre code toutes les instances du SDK OpenCensus et de l’exportateur Azure Monitor OpenCensus.

Recherchez les instructions d’importation commençant par opencensus pour trouver l’ensemble des intégrations, exportateurs et instances de l’API/SDK OpenCensus à supprimer.

Voici des exemples d’instructions d’importation qui doivent être supprimées.

from opencensus.ext.azure import metrics_exporter
from opencensus.stats import aggregation as aggregation_module
from opencensus.stats import measure as measure_module

from opencensus.ext.azure.trace_exporter import AzureExporter
from opencensus.trace.samplers import ProbabilitySampler
from opencensus.trace.tracer import Tracer

from opencensus.ext.azure.log_exporter import AzureLogHandler

Étape 3 : Familiarisez-vous avec les API/le SDK OpenTelemetry Python

La documentation suivante fournit des connaissances préalables pour les API/le SDK OpenTelemetry Python.

Notes

OpenTelemetry Python et OpenCensus Python ont des surfaces d’API, des fonctionnalités de collecte automatique et des instructions d’intégration différentes.

Étape 4 : Configurez la distribution Azure Monitor OpenTelemetry

Suivez la page bien démarrer pour intégrer la distribution Azure Monitor OpenTelemetry.

Modifications et limitations

Les modifications et limitations suivantes peuvent être rencontrées lors de la migration d’OpenCensus vers OpenTelemetry.

Prise en charge pour Python < 3.7

Les solutions de monitoring basées sur Python d’OpenTelemetry prennent uniquement en charge Python 3.7 et ses versions ultérieures. Elles excluent les versions 2.7, 3.4, 3.5 et 3.6 de Python précédemment prises en charge par OpenCensus. Nous recommandons la mise à niveau pour les utilisateurs qui se trouvent sur d’anciennes versions de Python, car ces versions ont déjà atteint leur fin de vie au moment de rédiger ce document. Les utilisateurs qui ne souhaitent pas effectuer la mise à niveau peuvent toujours utiliser les solutions OpenTelemetry, mais il se peut qu’ils rencontrent des comportements inattendus ou des ruptures non pris en charge. Dans tous les cas, la dernière version prise en charge d’opencensus-ext-azure existe toujours et continue de fonctionner pour ces versions. Cependant, aucune nouvelle version n’est produite pour ce projet.

Configurations

OpenCensus Python avait fourni des options de configuration liées à la collecte et à l’exportation de données de télémétrie. Vous obtenez les mêmes configurations et bien plus encore en utilisant les API et le SDK OpenTelemetry Python. La distribution Python Azure Monitor OpenTelemetry ressemble plus à un guichet unique pour les besoins de supervision les plus courants de vos applications Python. Étant donné que la distribution encapsule les API/le SDK OpenTelemetry, certaines configurations pour des cas d’usage plus rares peuvent ne pas être prises en charge pour la distribution. Vous pouvez plutôt choisir d’intégrer l’exportateur Azure Monitor OpenTelemetry, qui, avec les API/le SDK OpenTelemetry, devrait être en mesure de répondre à vos besoins de supervision. Certaines de ces configurations comprennent :

  • Les propagateurs personnalisés
  • Les échantillonneurs personnalisés
  • L’ajout de lecteurs supplémentaires d’étendue/de processeurs de journaux/de métriques

Cohésion avec les fonctions Azure

Afin de fournir des fonctionnalités de suivi distribué pour les applications Python qui appellent d’autres applications Python au sein d’une fonction Azure, le package opencensus-extension-azure-functions est fourni pour permettre un graphique distribué connecté.

Les solutions OpenTelemetry pour Azure Monitor ne prennent pas actuellement en charge ce scénario. Pour contourner ce problème, vous pouvez propager manuellement le contexte de trace dans votre application de fonctions Azure, comme illustré dans l’exemple suivant.

from opentelemetry.context import attach, detach
from opentelemetry.trace.propagation.tracecontext import \
  TraceContextTextMapPropagator

# Context parameter is provided for the body of the function
def main(req, context):
  functions_current_context = {
    "traceparent": context.trace_context.Traceparent,
    "tracestate": context.trace_context.Tracestate
  }
  parent_context = TraceContextTextMapPropagator().extract(
      carrier=functions_current_context
  )
  token = attach(parent_context)

  ...
  # Function logic
  ...
  detach(token)

Extensions et exportateurs

Le SDK OpenCensus proposait des moyens de collecter et d’exporter des données de télémétrie via les intégrations et les exportateurs OpenCensus, respectivement. Dans OpenTelemetry, les intégrations sont désormais appelées instrumentations, tandis que les exportateurs conservent la même terminologie. Les instrumentations et les exportateurs OpenTelemetry Python sont un sur-ensemble de ce qui a été fourni dans OpenCensus. Par conséquent, les bibliothèques OpenTelemetry sont une mise à niveau directe en termes de couverture et de fonctionnalité de bibliothèque. Quant à la distribution OpenTelemetry d’Azure Monitor, elle est fournie avec certaines instrumentations OpenTelemetry Python populaires prêtes à l’emploi. Aucun code supplémentaire n’est donc nécessaire. Microsoft prend entièrement en charge ces instrumentations.

Comme pour les autres instrumentations OpenTelemetry Python qui ne sont pas incluses dans cette liste, les utilisateurs peuvent toujours les utiliser pour l’instrumentation manuelle. Toutefois, il est important de noter que la stabilité et le comportement ne sont pas garantis ou pris en charge dans ces cas. Utilisez-les donc à votre discrétion.

Si vous souhaitez suggérer l’inclusion d’une bibliothèque d’instrumentation de la communauté dans notre distribution, publiez ou votez pour une idée dans notre communauté de commentaires. Pour les exportateurs, la distribution Azure Monitor OpenTelemetry est fournie avec l’exportateur Azure Monitor OpenTelemetry. Si vous souhaitez également utiliser d’autres exportateurs, vous pouvez les utiliser avec la distribution, comme dans cet exemple.

TelemetryProcessors

Les processeurs de télémétrie OpenCensus Python sont des mécanismes puissants dans lesquels les utilisateurs peuvent modifier leurs données de télémétrie avant de les envoyer à l’exportateur. Il n’existe aucun concept de processeurs de télémétrie dans le monde OpenTelemetry, mais il y a des API et des classes que vous pouvez utiliser pour répliquer ce même comportement.

Définir le nom du rôle cloud et l’instance de rôle cloud

Suivez les instructions fournies ici pour définir le nom du rôle cloud et l’instance de rôle cloud pour votre télémétrie. La distribution Azure Monitor OpenTelemetry récupère automatiquement les valeurs des variables d’environnement et remplit les champs respectifs.

Modifier des étendues avec SpanProcessors

Prochainement disponible.

Modifier des métriques avec Aperçus

Prochainement disponible.

Compteurs de performances

L’exportateur OpenCensus Python Azure Monitor avait automatiquement collecté les métriques liées au système et aux performances appelées compteurs de performances. Ces métriques apparaissent dans performanceCounters au sein de votre instance Application Insights. Nous n’envoyons plus explicitement ces métriques vers performanceCounters dans OpenTelemetry. Les métriques associées aux demandes entrantes/sortantes se trouvent sous les métriques standard. Si vous souhaitez qu’OpenTelemetry récupère automatiquement les métriques liées au système, vous pouvez utiliser l’instrumentation des métriques système expérimentales fournie par la communauté OpenTelemetry Python. Ce package est expérimental et n’est pas officiellement pris en charge par Microsoft.

Résolution des problèmes

Cela ne fonctionne pas ? Consultez la page de résolution des problèmes pour ASP.NET Core.

Support

Sélectionnez un onglet correspondant à la langue de votre choix pour découvrir les options de support.

Commentaires OpenTelemetry

Pour fournir des commentaires :