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 OpenTelemetry Azure Monitor Application Insights.
Avertissement
- Le blog OpenCensus « Comment migrer vers OpenTelemetry » ne s’applique pas aux utilisateurs d’Azure Monitor.
- Le shim OpenTelemetry OpenCensus n’est pas recommandé ou pris en charge par Microsoft.
- Le contenu suivant décrit le seul plan de migration pour les clients Azure Monitor.
É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.
- Documentation OpenTelemetry Python
- Documentation de la distribution Azure Monitor à propos de la configuration et de la télémétrie
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 Azure Functions
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.
Support
Pour passer en revue les étapes de dépannage et les options de support, ou pour fournir des commentaires sur OpenTelemetry, consultez Dépannage, support et commentaires OpenTelemetry pour Azure Monitor Application Insights.