Saltar al pie de página
AYUDA DE PYTHON

OpenTelemetry en Aplicaciones Python

La generación de documentos efectiva y la observabilidad son fundamentos esenciales para desarrollar sistemas escalables y resilientes en el desarrollo de software contemporáneo. Los desarrolladores pueden instrumentar, recopilar y analizar datos observables de sistemas distribuidos utilizando OpenTelemetry, una plataforma de observabilidad de código abierto.

Los desarrolladores pueden crear, modificar y exportar fácilmente documentos PDF con IronPDF, un robusto framework .NET. Este artículo discutirá la integración de OpenTelemetry Python con IronPDF, demostrando cómo estas dos tecnologías trabajan juntas para mejorar la capacidad de observabilidad y generación de documentos.

Los desarrolladores pueden acceder a un amplio conjunto de características para instrumentar, recopilar y exportar telemetría abierta y datos de sistemas distribuidos con los paquetes API y SDK de OpenTelemetry, una implementación de proyecto OpenTelemetry en Python.

OpenTelemetry Python (Cómo Funciona para Desarrolladores): Figura 1 - Página principal de OpenTelemetry

OpenTelemetry Características

Examinemos la instrumentación de OpenTelemetry para las características destacadas de Python:

Rastreo distribuido

  • La trazabilidad distribuida, que permite a los desarrolladores seguir la ruta de las solicitudes a través de sistemas dispersos, es posible gracias a OpenTelemetry para Python.
  • Las trazas ofrecen información sobre la secuencia de solicitudes, incluidas las fechas y horarios de los contactos de servicio.
  • Los desarrolladores pueden instrumentar programas Python para registrar spans, que son acciones discretas o partes de una traza distribuida.

Recopilación de métricas

  • OpenTelemetry Python facilita la importación de métricas MeterProvider, que recopila datos numéricos sobre el comportamiento y rendimiento del sistema.
  • Los desarrolladores pueden instrumentar sus aplicaciones para recopilar mediciones como latencia, capacidad de procesamiento, tasas de error y uso de recursos.
  • Al ofrecer información sobre patrones de uso, tendencias de rendimiento y salud del sistema, estas métricas ayudan a comprender los comportamientos del sistema.

Propagación de contexto

  • La propagación de contexto se facilita mediante el paquete API de OpenTelemetry, que garantiza que el contexto distribuido—como traza y contexto de span—se propague a través de los límites del servicio.
  • Los datos de telemetría pueden correlacionarse y contextualizarse mientras se mueven a través del sistema debido a la propagación de contexto, lo que preserva la continuidad y consistencia de los datos.

Bibliotecas de instrumentación

  • OpenTelemetry Python facilita la instrumentación de aplicaciones Python existentes al proporcionar paquetes de instrumentación para frameworks, bibliotecas y protocolos ampliamente utilizados.
  • Integraciones para frameworks web (como Flask y Django), clientes de bases de datos (como SQLAlchemy y Pymongo), sistemas de mensajería (como Kafka y RabbitMQ), y más se pueden encontrar en bibliotecas de instrumentación.

Ecosistema de exportadores

  • Una variedad de exportadores proporcionados por OpenTelemetry Python permite a los desarrolladores exportar datos de telemetría a diferentes sistemas y backends de observabilidad.
  • Los exportadores admiten integraciones con plataformas de observabilidad como Jaeger, Zipkin, Prometheus, AWS X-Ray, Google Cloud Trace, y otros.
  • Los desarrolladores pueden configurar exportadores para transferir datos de telemetría a uno o más backends para almacenamiento a largo plazo, análisis y visualización.
  • OpenTelemetry Python admite técnicas de muestreo variable para regular la cantidad de datos de telemetría recopilados.
  • Los desarrolladores tienen la opción de aplicar lógica de muestreo personalizada, configurar el muestreo para muestrear un cierto porcentaje de trazas, o muestrear según parámetros predefinidos (como encabezados de solicitud o rutas).

Registro contextual

  • Las herramientas para registrar datos contextuales además de los datos de telemetría están disponibles con el SDK de OpenTelemetry Python.
  • Los desarrolladores pueden agregar contexto de traza y span a mensajes de registro con registro contextual, lo que proporciona más contexto para la solución de problemas y depuración.

Crear y configurar OpenTelemetry Python

Configuración de OpenTelemetry

Para configurar OpenTelemetry para su proyecto, puede comenzar instalando los paquetes necesarios usando pip install opentelemetry-exporter-jaeger.

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

Después, instale el SDK de OpenTelemetry Python usando el siguiente comando:

pip install opentelemetry-sdk
pip install opentelemetry-sdk
SHELL

El paquete pip opentelemetry-api proporciona una API completa para la instrumentación y ofrece instrumentación automática, lo que facilita la instrumentación de sus aplicaciones. Una alternativa sería utilizar el método de exportación-importación BatchSpanProcessor para asegurar una exportación de datos de telemetría eficiente.

Para definir los parámetros del SDK de OpenTelemetry, cree un archivo de configuración. El archivo de configuración otel_config.py sirve como ejemplo. Asegúrese de que todas las importaciones como la importación resources de Resource y la importación trace de TracerProvider estén presentes para configurar el ejemplo de código sin errores.

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

Dentro de este archivo de configuración:

  • Se configura el exportador de Jaeger para exportar trazas a un agente de Jaeger localizado.
  • Usando el exportador de Jaeger, construimos un TracerProvider y lo configuramos para ser el proveedor de traza global.
  • Proporcionamos el nombre del servicio para nuestro programa en Python.

Iniciar OpenTelemetry en su aplicación

Importa el módulo otel_config en tu programa Python, luego inicializa OpenTelemetry al inicio con el siguiente ejemplo de código Python:

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

Al hacerlo, se inicializa la configuración encontrada en otel_config.py para la instrumentación de OpenTelemetry.

Instrumente su aplicación

Usa OpenTelemetry para instrumentar tu programa Python de modo que pueda registrar trazas. Tienes dos opciones para instrumentar tu código: manualmente o a través de las bibliotecas integradas. Esta es una ilustración de algunas llamadas de instrumentación manual:

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

Ver trazas en Jaeger UI

Para ver y examinar las trazas registradas, dirígete a la interfaz de usuario de Jaeger. Para ver las trazas que el recolector de OpenTelemetry graba, abre la interfaz de usuario de Jaeger en tu navegador web (normalmente en http://localhost:16686) y elige el nombre de tu servicio.

Has establecido y configurado con éxito OpenTelemetry Python en tu aplicación siguiendo estas instrucciones. Ahora, puedes ver cómo se comporta y rinde tu programa Python al usar OpenTelemetry para registrar trazas y exportarlas al backend de Jaeger.

Introducción a IronPDF

¿Qué es IronPDF?

Con la potente biblioteca .NET IronPDF de Iron Software, los desarrolladores pueden crear, editar y presentar documentos PDF dentro de aplicaciones .NET. Los desarrolladores pueden usar IronPDF para crear documentos PDF de manera programática a partir de una variedad de fuentes, tales como archivos PDF preexistentes, texto HTML, URLs e imágenes. Echemos un vistazo más de cerca a las características de IronPDF:

OpenTelemetry Python (Cómo Funciona para Desarrolladores): Figura 2 - Página principal de IronPDF

Convertir HTML a PDF

Los desarrolladores pueden convertir fácilmente contenido HTML en archivos PDF con IronPDF. Utilizando texto HTML como entrada, los desarrolladores pueden producir documentos PDF visualmente ricos con formato, imágenes y estilos.

Convertir URL a PDF

Los desarrolladores pueden generar documentos PDF directamente desde URLs usando IronPDF. Una excelente aplicación de esta funcionalidad es capturar contenido de páginas web o contenido generado dinámicamente de aplicaciones web.

Conversión de imágenes a PDF

Con IronPDF, las imágenes en formatos PNG, JPEG y BMP se pueden convertir a documentos PDF. Esta característica permite a los desarrolladores de aplicaciones crear documentos PDF a partir de fotos, lo cual es útil para aplicaciones como hacer álbumes de fotos o incorporar fotos en archivos PDF.

Cómo instalar IronPDF

Después de asegurarse de que Python esté instalado en su computadora, use pip para instalar IronPDF.

 pip install ironpdf

Uso de OpenTelemetry para generar un documento PDF con IronPDF

Agrega el siguiente código bajo la inicialización de OpenTelemetry para usar IronPDF para crear un PDF documento:

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

En este fragmento de código:

  • Utilizando el trazador de OpenTelemetry, comenzamos un nuevo span llamado pdf_generation.
  • Usamos IronPDF para convertir material HTML en un documento PDF durante este tiempo.
  • Un archivo llamado output.pdf contiene el material PDF generado.

OpenTelemetry Python (Cómo Funciona para Desarrolladores): Figura 3 - Salida de ejemplo generada desde el código anterior

Conclusión

Finalmente, la combinación de capacidades de observabilidad y generación de documentos en aplicaciones Python es proporcionada por la conexión OpenTelemetry Python e IronPDF. Los desarrolladores pueden crear documentos con apariencia profesional en tiempo real mientras obtienen mejores conocimientos sobre el rendimiento del sistema al integrar la trazabilidad distribuida y la recopilación de métricas con la generación de PDF dinámica.

La colaboración entre OpenTelemetry Python e IronPDF emerge como un habilitador potente, permitiendo a los desarrolladores crear aplicaciones confiables, escalables y de alto rendimiento, a medida que las empresas se esfuerzan por la eficiencia y la excelencia en sus soluciones de software.

Se incluye una licencia de por vida con IronPDF, que tiene un precio bastante razonable cuando se compra en un paquete. El paquete es una gran oferta a solo $799, y solo necesita comprarse una vez para varios sistemas. La asistencia en línea está disponible para licenciatarios 24/7. Visite el sitio web para más detalles. Visite esta página para obtener más información sobre los productos vendidos por Iron Software.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más