Saltar al pie de página
.NET AYUDA

OpenTelemetry .NET (Cómo Funciona para Desarrolladores)

Introducción

La creación de documentos PDF dinámicos, impulsados por datos y ricos es una demanda típica en muchos sectores del desarrollo de software moderno. Las empresas dependen en gran medida de su capacidad para generar rápidamente PDF de alta calidad, ya sea para crear facturas, informes o documentación. Sin embargo, rastrear y comprender la efectividad de los procesos de producción de PDF se vuelve esencial para preservar la salud de las aplicaciones y garantizar la satisfacción del usuario a medida que se vuelven más complicadas y a gran escala.

Este artículo tiene como objetivo discutir cómo los desarrolladores pueden mejorar las operaciones de generación de PDF y proporcionar información importante sobre el rendimiento de las aplicaciones utilizando las características de IronPDF y OpenTelemetry.NET. Exploraremos las características y ventajas de ambas tecnologías y mostraremos cómo pueden trabajar juntas armoniosamente para optimizar la creación y el monitoreo de PDF en aplicaciones .NET.

¿Qué es OpenTelemetry?

OpenTelemetry es un marco de observabilidad neutral creado especialmente para aplicaciones nativas de la nube. La instrumentación automática de OpenTelemetry proporciona una única API para recopilar información de telemetría, incluidos registros, trazas y métricas. Con el uso de estos datos extensos, los desarrolladores pueden depurar problemas de manera efectiva, identificar cuellos de botella de rendimiento y obtener una comprensión completa del comportamiento del programa. OpenTelemetry admite tanto la instrumentación automática como manual para una recopilación de datos de telemetría completa y flexible.

Componentes clave de OpenTelemetry

API: Para instrumentar aplicaciones y generar datos de telemetría, OpenTelemetry especifica un conjunto estandarizado de API. Esto simplifica el proceso de instrumentación y garantiza la coherencia entre diversos lenguajes de programación.

  • SDK: para instrumentar aplicaciones, OpenTelemetry ofrece SDK adaptados a determinados lenguajes. Los desarrolladores pueden incorporar fácilmente la funcionalidad de OpenTelemetry en sus proyectos .NET con la ayuda del SDK de .NET.
  • Exportadores: Estas partes son las encargadas de transmitir los datos de telemetría que se han recopilado a los sistemas backend para que puedan ser almacenados y examinados. OpenTelemetry admite muchos exportadores de sistemas de backend ampliamente usados, como Zipkin (trazado), Prometheus (métricas) y Jaeger (trazado).
  • Instrumentación automática: este método simplifica el proceso para aplicaciones .NET Core. Las bibliotecas de OpenTelemetry pueden capturar automáticamente datos para operaciones comunes dentro de su aplicación o servicio web. Esto elimina las modificaciones manuales del código, agilizando el proceso de integración.
  • Instrumentación manual: para un control granular sobre la recopilación de datos, OpenTelemetry proporciona una API sólida para la instrumentación manual. Este enfoque le permite capturar métricas y trazas específicas relacionadas con la lógica única de su aplicación. Es particularmente útil para aplicaciones de .NET Framework o escenarios donde la instrumentación automática no cubre sus necesidades específicas.

Beneficios del uso de OpenTelemetry en .NET

Integrar OpenTelemetry en sus aplicaciones .NET ofrece varias ventajas:

  • Neutralidad del proveedor: OpenTelemetry ofrece flexibilidad y prepara su aplicación para el futuro integrándose sin esfuerzo con una variedad de sistemas backend. Su código de instrumentación no necesita ser cambiado para cambiar de sistemas de backend.
  • Enfoque estandarizado: la instrumentación de varias áreas de su aplicación se hace más fácil gracias a la API uniforme. Los desarrolladores pueden usar la misma API para recopilar registros, trazas y métricas, lo que resulta en un código más fácil de leer y mantener.
  • Análisis de rendimiento en profundidad: OpenTelemetry ofrece una gran cantidad de datos (métricas, seguimientos y registros) para un análisis de rendimiento integral. Con esta perspectiva integral, puede identificar áreas de optimización y determinar la fuente subyacente de los problemas.
  • Mejor resolución de problemas: los desarrolladores pueden detectar y solucionar problemas más fácilmente siguiendo la ruta de las solicitudes a través de su aplicación utilizando los completos datos de seguimiento que captura OpenTelemetry.
  • Escalabilidad mejorada: la complejidad de su aplicación no obstaculizará la capacidad de escalabilidad de OpenTelemetry. Nuevas funciones o servicios pueden ser instrumentados fácilmente sin requerir grandes modificaciones en el código.

Crear y configurar OpenTelemetry

Configurar OpenTelemetry en la aplicación ASP.NET

OpenTelemetry necesita ser configurado en su aplicación; para aplicaciones ASP.NET Core, esto se hace generalmente en el método ConfigureServices de su archivo Startup.cs. Este es un ejemplo de configuración de exportador de Jaeger:

using OpenTelemetry.Trace;
using OpenTelemetry.Exporter.Jaeger;
using OpenTelemetry.Resources;

public void ConfigureServices(IServiceCollection services)
{
    // Configure OpenTelemetry
    services.AddOpenTelemetry().WithTracing(builder =>
    {
        // Configure Jaeger exporter. The 'serviceName' can be read from environment variables
        builder
            .SetResourceBuilder(
                ResourceBuilder.CreateDefault()
                    .AddService("YourServiceName"))
            .AddAspNetCoreInstrumentation()
            .AddJaegerExporter(opt =>
            {
                opt.AgentHost = "localhost"; // Jaeger agent host
                opt.AgentPort = 14250; // Jaeger agent port
            });
    });
    // Other service configurations...
}
using OpenTelemetry.Trace;
using OpenTelemetry.Exporter.Jaeger;
using OpenTelemetry.Resources;

public void ConfigureServices(IServiceCollection services)
{
    // Configure OpenTelemetry
    services.AddOpenTelemetry().WithTracing(builder =>
    {
        // Configure Jaeger exporter. The 'serviceName' can be read from environment variables
        builder
            .SetResourceBuilder(
                ResourceBuilder.CreateDefault()
                    .AddService("YourServiceName"))
            .AddAspNetCoreInstrumentation()
            .AddJaegerExporter(opt =>
            {
                opt.AgentHost = "localhost"; // Jaeger agent host
                opt.AgentPort = 14250; // Jaeger agent port
            });
    });
    // Other service configurations...
}
$vbLabelText   $csharpLabel

Reemplace "YourServiceName" con el nombre real de su servicio. Ajuste el host y el puerto del agente de Jaeger según sus opciones de configuración de Jaeger.

Añadir OpenTelemetry Middleware

Debe incluir el middleware de OpenTelemetry en aplicaciones ASP.NET Core para obtener una instrumentación automática de las solicitudes HTTP entrantes. En el método Configure de su archivo Startup.cs, agregue el middleware:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // Add Prometheus metrics middleware if using Prometheus
    app.UseHttpMetrics();
    // Other middleware configurations...
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // Add Prometheus metrics middleware if using Prometheus
    app.UseHttpMetrics();
    // Other middleware configurations...
}
$vbLabelText   $csharpLabel

Iniciar rastreo

Después de configurar todo, OpenTelemetry comenzará a rastrear las solicitudes HTTP entrantes y enviará información de telemetría al backend de Jaeger configurado automáticamente.

Verificar y supervisar

Puede verificar trazas en su backend de Jaeger para confirmar que OpenTelemetry está funcionando correctamente. Abra la interfaz de usuario de Jaeger (generalmente disponible en http://localhost:16686 para la interfaz de Jaeger) y busque trazas asociadas con su servicio.

Elija un sistema backend (opcional)

OpenTelemetry no es imprescindible para la instrumentación básica, pero se integra con otros sistemas operativos de backend para almacenar y procesar datos de telemetría. Las opciones populares incluyen los sistemas operativos oficialmente compatibles:

  • Jaeger (trazado)
  • Prometheus (métricas)
  • Zipkin (trazado)

Empezando

¿Qué es IronPDF?

El popular paquete .NET IronPDF le permite crear, editar y renderizar documentos PDF dentro de programas .NET. Las funciones para trabajar con PDF son numerosas e incluyen convertir páginas HTML a PDF, extraer texto e imágenes de PDF, agregar texto, imágenes y formas a documentos PDF preexistentes, y producir PDF a partir de contenido HTML, fotos o datos sin procesar.

Dos de las principales ventajas de IronPDF son su facilidad de uso y simplicidad. Los desarrolladores pueden comenzar a crear PDF fácilmente dentro de sus proyectos .NET debido a su API intuitiva y documentación completa. La eficiencia y la velocidad de IronPDF son características adicionales que ayudan a los desarrolladores a crear documentos PDF de alta calidad de forma rápida y eficiente.

Algunos de los beneficios de IronPDF:

  • Producción de PDFs a partir de HTML, imágenes y datos sin procesar
  • Extracción de texto e imágenes de archivos PDF
  • Incorporar marcas de agua, encabezados y pies de página en archivos PDF
  • Los archivos PDF están protegidos por cifrado y una contraseña
  • La capacidad de firmar electrónicamente y completar formularios

Instalar el paquete NuGet

Múltiples paquetes NuGet están disponibles para diferentes componentes de OpenTelemetry. Dependiendo de sus necesidades, puede instalar los paquetes requeridos. Para enviar datos de telemetría a un backend de observabilidad (como Jaeger, Zipkin o Prometheus), al menos necesitará el paquete OpenTelemetry, paquetes de instrumentación para su marco de aplicación (como ASP.NET Core) y un paquete exportador. Además, asegúrese de que el paquete IronPDF esté instalado en su proyecto. Para instalarlo, use la Consola del Administrador de Paquetes NuGet:

Install-Package OpenTelemetry
Install-Package OpenTelemetry.Instrumentation.AspNetCore
Install-Package OpenTelemetry.Exporter.Jaeger
Install-Package IronPdf

Uso de OpenTelemetry con IronPDF

Abra el archivo Startup.cs de su aplicación ASP.NET Core para acceder al método ConfigureServices. Para configurar IronPDF, incluya el siguiente código.

using IronPdf;

public void ConfigureServices(IServiceCollection services)
{
    // Configure IronPDF
    services.AddSingleton<HtmlToPdf>();
    // Other service configurations...
}
using IronPdf;

public void ConfigureServices(IServiceCollection services)
{
    // Configure IronPDF
    services.AddSingleton<HtmlToPdf>();
    // Other service configurations...
}
$vbLabelText   $csharpLabel

Este código asegura que se cree y utilice una instancia de HtmlToPdf por la aplicación solo configurando el servicio HtmlToPdf de IronPDF como un singleton.

Puede rastrear y observar los procesos de generación de PDF en sus aplicaciones .NET integrando OpenTelemetry.NET con IronPDF. Veamos el ejemplo de código en profundidad, revisando cada paso paso a paso:

using Microsoft.AspNetCore.Mvc;
using OpenTelemetry.Trace;
using System.Diagnostics;
using Microsoft.Extensions.Logging;
using IronPdf;

namespace DemoWebApplication.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class DemoController : ControllerBase
    {
        private readonly HtmlToPdf _htmlToPdf;
        private readonly ILogger<DemoController> _logger;
        private readonly Tracer _tracer;

        public DemoController(ILogger<DemoController> logger, HtmlToPdf htmlToPdf, TracerProvider tracerProvider)
        {
            _tracer = tracerProvider.GetTracer("Demo");
            _htmlToPdf = htmlToPdf;
            _logger = logger;
        }

        [HttpGet]
        public FileContentResult Generate()
        {
            // Define the PDF file name
            string fileName = "Sample.pdf";

            // Generate PDF from HTML content
            _logger.LogInformation("Generating PDF...");
            var pdfBytes = GeneratePdf("Hello, IronPDF!");

            // Return the PDF as a file result
            return new FileContentResult(pdfBytes, "application/pdf")
            {
                FileDownloadName = fileName
            };
        }

        private byte[] GeneratePdf(string htmlContent)
        {
            // Start a tracing activity for PDF generation
            using (var activity = _tracer.StartActiveSpan("PDF Generation"))
            {
                var pdfDocument = _htmlToPdf.RenderHtmlAsPdf(htmlContent);

                // Log PDF generation
                _logger.LogInformation("PDF generated successfully.");

                return pdfDocument.BinaryData;
            }
        }
    }
}
using Microsoft.AspNetCore.Mvc;
using OpenTelemetry.Trace;
using System.Diagnostics;
using Microsoft.Extensions.Logging;
using IronPdf;

namespace DemoWebApplication.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class DemoController : ControllerBase
    {
        private readonly HtmlToPdf _htmlToPdf;
        private readonly ILogger<DemoController> _logger;
        private readonly Tracer _tracer;

        public DemoController(ILogger<DemoController> logger, HtmlToPdf htmlToPdf, TracerProvider tracerProvider)
        {
            _tracer = tracerProvider.GetTracer("Demo");
            _htmlToPdf = htmlToPdf;
            _logger = logger;
        }

        [HttpGet]
        public FileContentResult Generate()
        {
            // Define the PDF file name
            string fileName = "Sample.pdf";

            // Generate PDF from HTML content
            _logger.LogInformation("Generating PDF...");
            var pdfBytes = GeneratePdf("Hello, IronPDF!");

            // Return the PDF as a file result
            return new FileContentResult(pdfBytes, "application/pdf")
            {
                FileDownloadName = fileName
            };
        }

        private byte[] GeneratePdf(string htmlContent)
        {
            // Start a tracing activity for PDF generation
            using (var activity = _tracer.StartActiveSpan("PDF Generation"))
            {
                var pdfDocument = _htmlToPdf.RenderHtmlAsPdf(htmlContent);

                // Log PDF generation
                _logger.LogInformation("PDF generated successfully.");

                return pdfDocument.BinaryData;
            }
        }
    }
}
$vbLabelText   $csharpLabel

En este ejemplo:

  • Inyectamos el HtmlToPdf, ILogger y TracerProvider en el DemoController.
  • El método Generate inicia una descarga de archivo, devolviendo un PDF creado dinámicamente con el contenido "Hello, IronPDF!".
  • El método GeneratePdf utiliza el HtmlToPdf.RenderHtmlAsPdf para renderizar el PDF y produce los datos binarios del PDF.
  • El código usa OpenTelemetry para rastrear el proceso de generación de PDF y registra los datos de trazado.

Salida de PDF generada a partir del código fuente anterior:

OpenTelemetry .NET (Cómo Funciona para Desarrolladores): Figura 1 - Salida generada del código anterior utilizando IronPDF y OpenTelemetry

Pantalla de la traza generada desde la interfaz de Jaeger:

OpenTelemetry .NET (Cómo Funciona para Desarrolladores): Figura 2 - Traza de salida generada desde la interfaz de usuario de Jaeger

Conclusión

OpenTelemetry es un cambio de juego para la optimización del rendimiento de las aplicaciones .NET y el monitoreo de la salud. Proporciona a los desarrolladores una comprensión profunda de los entresijos de sus aplicaciones al ofrecer un método neutral y estandarizado para recopilar, analizar y exportar datos de telemetría (métricas, trazas y registros).

Al integrar OpenTelemetry.NET con IronPDF, los desarrolladores pueden mejorar los flujos de trabajo para crear PDF y obtener información sobre el rendimiento de sus aplicaciones. Al aprovechar la implementación de OpenTelemetry.NET para instrumentar manualmente los procesos de generación de PDF, los desarrolladores pueden rastrear caminos de ejecución, monitorear métricas de rendimiento e identificar áreas que requieren optimización. Además, la recopilación y el análisis de métricas de monitoreo centralizado son posibles al exportar datos de telemetría a plataformas de observabilidad, brindando a los desarrolladores la capacidad de preservar la salud de sus aplicaciones y proporcionar una experiencia de usuario impecable.

La integración de la implementación de OpenTelemetry.NET con IronPDF puede mejorar los flujos de trabajo de los desarrolladores para crear PDF y garantizar escalabilidad, rendimiento y confiabilidad en aplicaciones .NET. La integración de estas tecnologías ayuda a los desarrolladores a cumplir con las necesidades del desarrollo de software moderno y producir resultados sobresalientes, ya sea creando facturas, informes o documentación.

Cuando se compra como un paquete, IronPDF tiene un precio razonable e incluye una licencia de por vida. El paquete ofrece un gran valor a solo $799, que es una tarifa única para muchos sistemas. Ofrece a los titulares de licencias soporte de ingeniería en línea las 24 horas, los 7 días de la semana. Por favor visite el sitio web de Iron Software para obtener más detalles sobre el cargo. Explore los productos de Iron Software para obtener más información sobre las soluciones que ofrecen.

Preguntas Frecuentes

¿Qué es OpenTelemetry y cómo mejora las aplicaciones .NET?

OpenTelemetry es un marco de observabilidad neutral al proveedor diseñado para aplicaciones nativas en la nube. Mejora las aplicaciones .NET proporcionando API y SDK estandarizados para capturar registros, trazas y métricas, lo cual ayuda a diagnosticar problemas, identificar cuellos de botella en el rendimiento y obtener una visión integral del comportamiento de la aplicación.

¿Cómo se puede integrar OpenTelemetry con ASP.NET Core para la instrumentación automática?

OpenTelemetry se puede integrar con ASP.NET Core configurando servicios y middleware en el archivo `Startup.cs` para habilitar la instrumentación automática. Esto incluye configurar el rastreo y exportadores como Jaeger para transmitir datos de telemetría y monitorear el rendimiento de la aplicación.

¿Qué papel juega IronPDF en la generación de PDFs para aplicaciones .NET?

IronPDF es una biblioteca .NET que simplifica la creación y manipulación de PDFs dentro de aplicaciones .NET. Soporta convertir HTML a PDF, extraer texto de PDFs y añadir características como marcas de agua y encriptación, lo que lo convierte en una herramienta versátil para manejar documentos PDF.

¿Cómo pueden los desarrolladores rastrear y analizar los procesos de generación de PDFs usando OpenTelemetry?

Los desarrolladores pueden rastrear y analizar los procesos de generación de PDFs integrando OpenTelemetry.NET con IronPDF. Esta integración permite la recolección y análisis de datos de telemetría, proporcionando información sobre los flujos de trabajo de generación de PDFs y ayudando a optimizar el rendimiento de la aplicación.

¿Cuáles son los beneficios de utilizar OpenTelemetry con IronPDF en aplicaciones .NET?

El uso de OpenTelemetry con IronPDF en aplicaciones .NET proporciona varios beneficios, incluida una mejor escalabilidad de la aplicación, análisis de rendimiento mejorado y flujos de trabajo de generación de PDFs optimizados. Esta combinación permite a los desarrolladores monitorear y mejorar la salud de sus aplicaciones de manera efectiva.

¿Cómo pueden los desarrolladores generar un PDF en una aplicación ASP.NET Core usando IronPDF?

En una aplicación ASP.NET Core, los desarrolladores pueden generar un PDF inyectando la clase `HtmlToPdf` en un controlador, renderizando contenido HTML como PDF y luego devolviendo el PDF generado como un resultado de archivo para descargar.

¿Qué exportadores son soportados por OpenTelemetry para sistemas backend?

OpenTelemetry soporta una variedad de exportadores para sistemas backend, incluyendo Jaeger para rastreo, Prometheus para métricas y Zipkin para rastreo. Estos exportadores permiten el almacenamiento y análisis de datos de telemetría a través de diferentes sistemas.

Jacob Mellor, Director de Tecnología @ Team Iron
Director de Tecnología

Jacob Mellor es Director de Tecnología en Iron Software y un ingeniero visionario que lidera la tecnología PDF en C#. Como el desarrollador original detrás de la base de código central de Iron Software, ha moldeado la arquitectura de productos de la compañía desde ...

Leer más