Résoudre les problèmes d’OpenTelemetry dans Python

Cet article explique comment résoudre les problèmes d’OpenTelemetry dans Python.

Liste de pour la résolution des problèmes

Étape 1 : Activer la journalisation des diagnostics

L’exportateur Microsoft Azure Monitor utilise la bibliothèque de journalisation standard Python pour sa journalisation interne. Les journaux de l’API OpenTelemetry et de l’exportateur Azure Monitor se voient attribuer un niveau de gravité de WARNING ou ERROR pour une activité irrégulière. Le INFO niveau de gravité est utilisé pour une activité régulière ou réussie.

Par défaut, la bibliothèque de journalisation Python définit le niveau de gravité sur WARNING. Par conséquent, vous devez modifier le niveau de gravité pour afficher les journaux sous ce paramètre de gravité. L’exemple de code suivant montre comment générer des journaux de tous les niveaux de gravité vers la console et un fichier :

...
import logging

logging.basicConfig(format = "%(asctime)s:%(levelname)s:%(message)s", level = logging.DEBUG)

logger = logging.getLogger(__name__)
file = logging.FileHandler("example.log")
stream = logging.StreamHandler()
logger.addHandler(file)
logger.addHandler(stream)
...

Étape 2 : Tester la connectivité entre votre hôte d’application et le service d’ingestion

Les kits de développement logiciel (SDK) et les agents Application Insights envoient des données de télémétrie pour être ingérés en tant qu’appels REST sur nos points de terminaison d’ingestion. Pour tester la connectivité de votre serveur web ou ordinateur hôte d’application aux points de terminaison du service d’ingestion, utilisez des commandes cURL ou des requêtes REST brutes à partir de PowerShell. Pour plus d’informations, consultez Résoudre les problèmes de télémétrie des applications manquantes dans Azure Monitor Application Insights.

Étape 3 : Éviter les données de télémétrie en double

Les données de télémétrie en double sont souvent provoquées si vous créez plusieurs instances de processeurs ou d’exportateurs. Veillez à n’exécuter qu’un seul exportateur et processeur à la fois pour chaque pilier de télémétrie (journaux, métriques et suivi distribué).

Les sections suivantes décrivent les scénarios qui peuvent entraîner des données de télémétrie en double.

Journaux de trace en double dans Azure Functions

Si vous voyez une paire d’entrées pour chaque journal de suivi dans Application Insights, vous avez probablement activé les types d’instrumentation de journalisation suivants :

  • Instrumentation de journalisation native dans Azure Functions
  • Instrumentation azure-monitor-opentelemetry de journalisation au sein de la distribution

Pour éviter la duplication, vous pouvez désactiver la journalisation de la distribution, mais laissez l’instrumentation de journalisation native dans Azure Functions activée. Pour ce faire, définissez la OTEL_LOGS_EXPORTER variable d’environnement sur None.

Données de télémétrie dupliquées dans le Azure Functions « Always On »

Si le paramètre Always On dans Azure Functions est défini sur Activé, Azure Functions maintient certains processus en cours d’exécution en arrière-plan une fois chaque exécution terminée. Par instance, supposons que vous ayez une fonction de minuteur de cinq minutes qui appelle configure_azure_monitor chaque fois. Après 20 minutes, vous pouvez alors avoir quatre exportateurs de métriques qui s’exécutent en même temps. Cette situation peut être la source de vos données de télémétrie en double.

Dans ce cas, définissez le paramètre Always On sur Désactivé, ou essayez d’arrêter manuellement les fournisseurs entre chaque configure_azure_monitor appel. Pour arrêter chaque fournisseur, exécutez des appels d’arrêt pour chaque compteur actuel, suivi et fournisseur d’enregistreurs d’événements, comme indiqué dans le code suivant :

get_meter_provider().shutdown()
get_tracer_provider().shutdown()
get_logger_provider().shutdown()

Classeurs Azure et notebooks Jupyter

Les classeurs Azure et les notebooks Jupyter peuvent maintenir les processus d’exportation en cours d’exécution en arrière-plan. Pour éviter les données de télémétrie en double, effacez le cache avant d’effectuer d’autres appels à configure_azure_monitor.

Contactez-nous pour obtenir de l’aide

Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.