Passer au contenu du pied de page
AIDE PYTHON

OpenTelemetry dans les applications Python

La génération efficace de documents et l'observabilité sont des fondations essentielles pour développer des systèmes évolutifs et résilients dans le développement logiciel contemporain. Les développeurs peuvent instrumenter, recueillir et analyser des données observables à partir de systèmes distribués en utilisant OpenTelemetry, une plateforme d'observabilité open-source.

Les développeurs peuvent facilement créer, modifier et générer des documents PDF avec IronPDF, un framework .NET robuste. Cet article discutera de l'intégration d'OpenTelemetry Python avec IronPDF, démontrant comment ces deux technologies travaillent ensemble pour améliorer le potentiel d'observabilité et de génération de documents.

Les développeurs peuvent accéder à un ensemble de fonctionnalités étendu pour instrumenter, rassembler et exporter la télémétrie ouverte et les données des systèmes distribués avec les packages OpenTelemetry API et SDK, une implémentation de projet OpenTelemetry en Python.

OpenTelemetry Python (Comment ça fonctionne pour les développeurs) : Figure 1 - Page d'accueil d'OpenTelemetry

Caractéristiques d'OpenTelemetry

Examinons les caractéristiques saillantes de l'instrumentation OpenTelemetry pour Python :

Traçage Distribué

  • Le traçage distribué, qui permet aux développeurs de suivre le chemin des requêtes à travers les systèmes dispersés, est rendu possible par OpenTelemetry pour Python.
  • Les traces offrent un aperçu de la séquence des requêtes, y compris les dates et heures des contacts de service.
  • Les programmes Python peuvent être instrumentés par les développeurs pour enregistrer des intervalles, qui sont des actions discrètes ou des parties d'une trace distribuée.

Collecte de métriques

  • OpenTelemetry Python facilite l'importation de métriques MeterProvider, qui recueille des données numériques concernant le comportement et la performance du système.
  • Les développeurs peuvent instrumenter leurs applications pour recueillir des mesures comme la latence, le débit, les taux d'erreur et l'utilisation des ressources.
  • En offrant des résultats sur les modèles d'utilisation, les tendances de performance et la santé du système, ces métriques aident à comprendre les comportements du système.

Propagation du Contexte

  • La propagation du contexte est facilitée par le package OpenTelemetry API, qui s'assure que le contexte distribué—tel que le contexte de trace et d'intervalle—est propagé à travers les limites de services.
  • Les données de télémétrie peuvent être corrélées et contextualisées alors qu'elles traversent le système grâce à la propagation du contexte, qui préserve la continuité et la cohérence des données.

Bibliothèques d'Instrumentation

  • OpenTelemetry Python facilite l'instrumentation des applications Python existantes en fournissant des packages d'instrumentation pour les frameworks, bibliothèques et protocoles les plus utilisés.
  • Les intégrations pour les frameworks web (comme Flask et Django), les clients de base de données (comme SQLAlchemy et Pymongo), les systèmes de messagerie (comme Kafka et RabbitMQ), et plus encore se trouvent dans les bibliothèques d'instrumentation.

Écosystème d'Exportateurs

  • Une gamme d'exportateurs fournie par OpenTelemetry Python permet aux développeurs d'exporter des données de télémétrie vers différents systèmes d'observabilité et backends.
  • Les intégrations avec des plateformes d'observabilité comme Jaeger, Zipkin, Prometheus, AWS X-Ray, Google Cloud Trace, et d'autres sont supportées par les exportateurs.
  • Les exportateurs peuvent être configurés par les développeurs pour transférer les données de télémétrie vers un ou plusieurs backends pour le stockage à long terme, l'analyse et l'affichage.
  • Les techniques d'échantillonnage variables sont supportées par OpenTelemetry Python pour réguler la quantité de données de télémétrie recueillies.
  • Les développeurs ont la possibilité d'appliquer une logique d'échantillonnage personnalisée, de régler l'échantillonnage pour échantillonner un certain pourcentage de traces, ou d'échantillonner selon des paramètres prédéfinis (comme les en-têtes de requête ou les routes).

Enregistrement Contextuel

  • Des outils pour enregistrer des données contextuelles en plus des données de télémétrie sont disponibles avec le SDK OpenTelemetry Python.
  • Les développeurs peuvent ajouter du contexte de trace et d'intervalle aux messages de journal avec l'enregistrement contextuel, ce qui donne plus de contexte pour le dépannage et le débogage.

Créer et configurer OpenTelemetry Python

Configurer OpenTelemetry

Pour configurer OpenTelemetry pour votre projet, vous pouvez commencer par installer les packages nécessaires en utilisant pip install opentelemetry-exporter-jaeger.

pip install opentelemetry-exporter-jaeger
pip install opentelemetry-exporter-jaeger
SHELL

Ensuite, installez le SDK OpenTelemetry Python en utilisant la commande suivante :

pip install opentelemetry-sdk
pip install opentelemetry-sdk
SHELL

Le package opentelemetry-api pip fournit une API complète pour l'instrumentation et offre une instrumentation automatique, ce qui facilite l'instrumentation de vos applications. Une autre façon de faire cela pourrait être d'utiliser la méthode d'exportation-importation BatchSpanProcessor pour assurer une exportation efficace des données de télémétrie.

Pour définir les paramètres du SDK OpenTelemetry, créez un fichier de configuration. Le fichier de configuration otel_config.py sert d'exemple. Assurez-vous que tous les imports tels que resources import Resource et trace import TracerProvider sont présents pour configurer l'exemple de code sans erreurs.

from opentelemetry import trace
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.jaeger.thrift import JaegerExporter

# Configure Jaeger exporter
jaeger_exporter = JaegerExporter(
    agent_host_name="localhost",
    agent_port=6831,
)

# Create a TracerProvider with Jaeger exporter
tracer_provider = TracerProvider(resource=Resource.create({'service.name': 'my-python-service'}))
tracer_provider.add_span_processor(BatchSpanProcessor(jaeger_exporter))
trace.set_tracer_provider(tracer_provider)
from opentelemetry import trace
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.jaeger.thrift import JaegerExporter

# Configure Jaeger exporter
jaeger_exporter = JaegerExporter(
    agent_host_name="localhost",
    agent_port=6831,
)

# Create a TracerProvider with Jaeger exporter
tracer_provider = TracerProvider(resource=Resource.create({'service.name': 'my-python-service'}))
tracer_provider.add_span_processor(BatchSpanProcessor(jaeger_exporter))
trace.set_tracer_provider(tracer_provider)
PYTHON

Dans ce fichier de configuration :

  • L'exportateur Jaeger est configuré pour exporter les traces vers un agent Jaeger local.
  • En utilisant l'exportateur Jaeger, nous construisons un TracerProvider et le configurons comme fournisseur de trace global.
  • Nous fournissons le nom de service pour notre programme Python.

Initialiser OpenTelemetry dans votre application

Importez le module otel_config dans votre programme Python, puis initialisez OpenTelemetry au début avec l'exemple de code Python suivant :

from opentelemetry import trace
from otel_config import tracer_provider

# Initialize OpenTelemetry
trace.get_tracer(__name__)
from opentelemetry import trace
from otel_config import tracer_provider

# Initialize OpenTelemetry
trace.get_tracer(__name__)
PYTHON

En faisant cela, la configuration trouvée dans otel_config.py est initialisée pour l'instrumentation OpenTelemetry.

Instrumenter votre application

Utilisez OpenTelemetry pour instrumenter votre programme Python afin qu'il puisse enregistrer des traces. Vous avez deux options pour instrumenter votre code : manuellement ou via les bibliothèques intégrées. Voici une illustration de quelques appels d'instrumentation manuels :

from opentelemetry import trace

# Start a span
with trace.get_tracer(__name__).start_as_current_span("example_span"):
    # Your code here
    pass
from opentelemetry import trace

# Start a span
with trace.get_tracer(__name__).start_as_current_span("example_span"):
    # Your code here
    pass
PYTHON

Voir les traces dans l'UI de Jaeger

Pour voir et examiner les traces enregistrées, allez à l'interface utilisateur de Jaeger. Pour voir les traces que le collecteur OpenTelemetry enregistre, ouvrez l'UI de Jaeger dans votre navigateur web (généralement à http://localhost:16686) et choisissez votre nom de service.

Vous avez réussi à établir et configurer OpenTelemetry Python dans votre application en suivant ces instructions. Maintenant, vous pouvez voir comment votre programme Python se comporte et fonctionne en utilisant OpenTelemetry pour enregistrer des traces et les exporter vers le backend de Jaeger.

Commencer avec IronPDF

Qu'est-ce qu'IronPDF ?

Avec la puissante bibliothèque .NET IronPDF d'Iron Software, les développeurs peuvent créer, modifier et présenter des documents PDF dans des applications .NET. Les développeurs peuvent utiliser IronPDF pour créer par programmation des documents PDF à partir d'une gamme de sources, telles que des fichiers PDF existants, du texte HTML, des URLs et des images. Regardons de plus près les fonctionnalités d'IronPDF :

OpenTelemetry Python (Comment ça fonctionne pour les développeurs) : Figure 2 - Page d'accueil d'IronPDF

Conversion de HTML en PDF

Les développeurs peuvent facilement convertir du contenu HTML en fichiers PDF avec IronPDF. En utilisant du texte HTML en entrée, les développeurs peuvent produire des documents PDF visuellement riches avec formatage, images et styles.

Convertir une URL en PDF

Les développeurs peuvent générer des documents PDF directement à partir d'URLs en utilisant IronPDF. Une excellente application pour cette fonctionnalité est la capture de contenu de pages web ou de contenu généré dynamiquement à partir d'applications web.

Conversion d'image en PDF

Avec IronPDF, les images aux formats PNG, JPEG et BMP peuvent être converties en documents PDF. Cette fonctionnalité permet aux développeurs d'applications de créer des documents PDF à partir de photos, ce qui est utile pour des applications comme la création d'albums photos ou l'incorporation de photos dans des fichiers PDF.

Comment installer IronPDF

Après avoir vérifié que Python est installé sur votre ordinateur, utilisez pip pour installer IronPDF.

pip install ironpdf

Utiliser OpenTelemetry pour Générer un Document PDF avec IronPDF

Ajoutez le code suivant sous l'initialisation d'OpenTelemetry pour utiliser IronPDF pour créer un PDF document :

from ironpdf import ChromePdfRenderer
from opentelemetry import trace

# Generate PDF document with IronPDF
with trace.get_tracer(__name__).start_as_current_span("pdf_generation"):
    iron_pdf = ChromePdfRenderer()
    html_content = "<html><body><h1>Hello, IronPDF!</h1></body></html>"

    pdf_content = iron_pdf.render_html_as_pdf(html_content)

    # Save or send the PDF content as needed
    with open("output.pdf", "wb") as file:
        file.write(pdf_content)
from ironpdf import ChromePdfRenderer
from opentelemetry import trace

# Generate PDF document with IronPDF
with trace.get_tracer(__name__).start_as_current_span("pdf_generation"):
    iron_pdf = ChromePdfRenderer()
    html_content = "<html><body><h1>Hello, IronPDF!</h1></body></html>"

    pdf_content = iron_pdf.render_html_as_pdf(html_content)

    # Save or send the PDF content as needed
    with open("output.pdf", "wb") as file:
        file.write(pdf_content)
PYTHON

Dans ce passage de code :

  • En utilisant le traceur OpenTelemetry, nous commençons un nouvel intervalle appelé pdf_generation.
  • Nous utilisons IronPDF pour transformer du matériel HTML en un document PDF pendant ce temps.
  • Un fichier nommé output.pdf contient le matériel PDF généré.

OpenTelemetry Python (Comment ça fonctionne pour les développeurs) : Figure 3 - Exemple de sortie généré à partir du code ci-dessus

Conclusion

Enfin, la combinaison des capacités d'observabilité et de génération de documents dans les applications Python est fournie par la connexion OpenTelemetry Python et IronPDF. Les développeurs peuvent facilement créer des documents d'aspect professionnel à la volée tout en obtenant de meilleurs aperçus des performances du système en intégrant le traçage distribué et la collecte de métriques avec la génération dynamique de PDF.

La collaboration entre OpenTelemetry Python et IronPDF apparaît comme un facilitateur puissant, permettant aux développeurs de créer des applications fiables, évolutives et performantes, alors que les entreprises s'efforcent d'obtenir efficacité et excellence dans leurs solutions logicielles.

Une licence à vie est incluse avec IronPDF, qui est à prix raisonnable lorsqu'elle est achetée dans un pack. Le pack est une bonne affaire à seulement $799, et il ne doit être acheté qu'une seule fois pour plusieurs systèmes. L'aide en ligne en ingénierie est disponible pour les titulaires de licence 24/7. Veuillez visiter le site Web pour en savoir plus sur les frais. Visitez cette page pour en savoir plus sur les produits vendus par Iron Software.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite