Ir para o conteúdo do rodapé
AJUDA DO .NET

OpenTelemetry .NET (Como funciona para desenvolvedores)

Introdução

A criação de documentos PDF dinâmicos, ricos em dados e com grande volume de informações é uma exigência comum em muitos setores do desenvolvimento de software moderno. As empresas dependem muito da sua capacidade de gerar PDFs de alta qualidade rapidamente, seja para criar faturas, relatórios ou documentação. No entanto, monitorar e compreender a eficácia dos processos de produção de PDFs torna-se essencial para preservar a integridade dos aplicativos e garantir a satisfação do usuário à medida que se tornam mais complexos e de grande escala.

Este artigo tem como objetivo discutir como os desenvolvedores podem aprimorar as operações de geração de PDFs e fornecer informações importantes sobre o desempenho do aplicativo, utilizando os recursos do IronPDF e do OpenTelemetry .NET. Vamos explorar as características e vantagens de ambas as tecnologias e mostrar como elas podem funcionar em harmonia para otimizar a criação e o monitoramento de PDFs em aplicações .NET .

O que é OpenTelemetry?

O OpenTelemetry é uma estrutura de observabilidade independente de fornecedor, criada especialmente para aplicativos nativos da nuvem. A instrumentação automática do OpenTelemetry fornece uma API única para coletar informações de telemetria, incluindo logs, rastreamento e métricas. Com o uso desses dados abrangentes, os desenvolvedores podem depurar problemas com eficácia, identificar gargalos de desempenho e obter uma compreensão completa do comportamento do programa. O OpenTelemetry oferece suporte à instrumentação automática e manual para uma coleta de dados de telemetria abrangente e flexível.

Componentes principais do OpenTelemetry

  • API: Para instrumentar aplicações e gerar dados de telemetria, o OpenTelemetry especifica um conjunto padronizado de APIs. Isso simplifica o procedimento de instrumentação e garante consistência entre diversas linguagens de programação.
  • SDKs: Para instrumentação de aplicações, o OpenTelemetry oferece SDKs específicos para determinadas linguagens. Os desenvolvedores podem incorporar facilmente a funcionalidade do OpenTelemetry em seus projetos .NET com a ajuda do SDK do .NET .
  • Exportadores: Essas partes são responsáveis ​​por transmitir os dados de telemetria coletados para os sistemas de back-end, para que possam ser armazenados e analisados. O OpenTelemetry oferece suporte a diversos exportadores de sistemas de backend amplamente utilizados, como Zipkin (rastreamento), Prometheus (métricas) e Jaeger (rastreamento).
  • Instrumentação automática: Este método simplifica o processo para aplicações .NET Core . As bibliotecas OpenTelemetry podem capturar automaticamente dados para operações comuns em seu aplicativo ou serviço web. Isso elimina modificações manuais no código, simplificando o processo de integração.
  • Instrumentação manual: Para um controle preciso da coleta de dados, o OpenTelemetry oferece uma API robusta para instrumentação manual. Essa abordagem permite capturar métricas e rastreamentos específicos relacionados à lógica exclusiva do seu aplicativo. É particularmente útil para aplicações .NET Framework ou cenários onde a instrumentação automática não atende às suas necessidades específicas.

Benefícios de usar o OpenTelemetry no .NET

A integração do OpenTelemetry em suas aplicações .NET oferece diversas vantagens:

  • Neutralidade de fornecedores: O OpenTelemetry oferece flexibilidade e prepara sua aplicação para o futuro, integrando-se facilmente a uma variedade de sistemas de back-end. Seu código de instrumentação não precisa ser alterado para trocar de sistema de backend.
  • Abordagem padronizada: A instrumentação de diversas áreas da sua aplicação é facilitada pela API uniforme. A mesma API pode ser usada pelos desenvolvedores para coletar logs, rastreamentos e métricas, resultando em um código mais fácil de ler e manter.
  • Análise de desempenho detalhada: O OpenTelemetry oferece uma grande quantidade de dados (métricas, rastreamentos e registros) para uma análise de desempenho abrangente. Com essa perspectiva abrangente, você pode identificar áreas para otimização e determinar a origem dos problemas.
  • Melhor resolução de problemas: os desenvolvedores podem detectar e corrigir problemas com mais facilidade, acompanhando o fluxo de solicitações em seu aplicativo usando os dados de rastreamento detalhados que o OpenTelemetry captura.
  • Escalabilidade aprimorada: a complexidade da sua aplicação não impedirá a capacidade de escalabilidade do OpenTelemetry. Novos recursos ou serviços podem ser facilmente implementados sem a necessidade de grandes modificações no código.

Criar e configurar o OpenTelemetry

Configure o OpenTelemetry em uma aplicação ASP.NET.

O OpenTelemetry precisa ser configurado em sua aplicação; Para aplicações ASP.NET Core , isso geralmente é feito no método ConfigureServices do seu arquivo Startup.cs. Esta é uma ilustração de uma configuração de exportador 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...
}
Imports OpenTelemetry.Trace
Imports OpenTelemetry.Exporter.Jaeger
Imports OpenTelemetry.Resources

Public Sub ConfigureServices(ByVal services As IServiceCollection)
	' Configure OpenTelemetry
	services.AddOpenTelemetry().WithTracing(Sub(builder)
		' Configure Jaeger exporter. The 'serviceName' can be read from environment variables
		builder.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("YourServiceName")).AddAspNetCoreInstrumentation().AddJaegerExporter(Sub(opt)
				opt.AgentHost = "localhost" ' Jaeger agent host
				opt.AgentPort = 14250 ' Jaeger agent port
		End Sub)
	End Sub)
	' Other service configurations...
End Sub
$vbLabelText   $csharpLabel

Substitua "YourServiceName" pelo nome real do seu serviço. Ajuste o host e a porta do agente Jaeger de acordo com as opções de configuração do Jaeger.

Adicionar Middleware OpenTelemetry

Você precisa incluir o middleware OpenTelemetry em aplicativos ASP.NET Core para obter a instrumentação automática de solicitações HTTP recebidas. No método Startup.cs do seu arquivo Configure, adicione o 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...
}
Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment)
	' Add Prometheus metrics middleware if using Prometheus
	app.UseHttpMetrics()
	' Other middleware configurations...
End Sub
$vbLabelText   $csharpLabel

Comece a rastrear

Após a configuração inicial, o OpenTelemetry começará a rastrear as solicitações HTTP recebidas e a enviar informações de telemetria para o backend Jaeger configurado automaticamente.

Verificar e monitorar

Você pode verificar os registros no seu backend Jaeger para confirmar se o OpenTelemetry está funcionando corretamente. Abra a interface de usuário do Jaeger (normalmente disponível em http://localhost:16686 para Jaeger UI) e procure por rastreamentos associados ao seu serviço.

Escolha um sistema de backend (opcional)

O OpenTelemetry não é imprescindível para instrumentação básica, mas integra-se com outros sistemas operacionais de backend para armazenar e processar dados de telemetria. As opções mais populares consistem nos sistemas operacionais oficialmente suportados:

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

Começando

O que é o IronPDF?

O popular pacote .NET IronPDF permite criar, editar e renderizar documentos PDF em programas .NET . As funções para trabalhar com PDFs são numerosas e incluem converter páginas HTML em PDFs, extrair texto e imagens de PDFs, adicionar texto, imagens e formas a documentos PDF preexistentes e produzir PDFs a partir de conteúdo HTML, fotos ou dados brutos.

Duas das principais vantagens do IronPDF são a sua facilidade de uso e simplicidade. Graças à API intuitiva e à documentação completa, os desenvolvedores podem começar a criar PDFs em seus projetos .NET sem esforço. A eficiência e a velocidade do IronPDF são características adicionais que ajudam os desenvolvedores a criar documentos PDF de alta qualidade de forma rápida e eficiente.

Algumas das vantagens do IronPDF:

  • Produção de PDFs a partir de HTML, imagens e dados brutos
  • Extrair texto e imagens de arquivos PDF
  • Incorpore marcas d'água, cabeçalhos e rodapés em arquivos PDF. Os arquivos PDF são protegidos por criptografia e senha.
  • A possibilidade de assinar e preencher formulários eletronicamente.

Instale o pacote NuGet

Vários pacotes NuGet estão disponíveis para diferentes componentes do OpenTelemetry. Dependendo das suas necessidades, você pode instalar os pacotes necessários. Para enviar dados de telemetria para um backend de observabilidade (como Jaeger, Zipkin ou Prometheus), você precisará, no mínimo, do pacote OpenTelemetry, de pacotes de instrumentação para a estrutura do seu aplicativo (como ASP.NET Core) e de um pacote exportador. Além disso, certifique-se de que o pacote IronPDF esteja instalado em seu projeto. Para instalá-lo, utilize o Console do Gerenciador de Pacotes NuGet :

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

Utilizando OpenTelemetry com IronPDF

Abra o arquivo Startup.cs do seu aplicativo ASP.NET Core para acessar o método ConfigureServices. Para configurar o IronPDF, inclua o código a seguir.

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...
}
Imports IronPdf

Public Sub ConfigureServices(ByVal services As IServiceCollection)
	' Configure IronPDF
	services.AddSingleton(Of HtmlToPdf)()
	' Other service configurations...
End Sub
$vbLabelText   $csharpLabel

Este código garante que uma instância de HtmlToPdf seja criada e usada pelo aplicativo somente configurando o serviço HtmlToPdf do IronPDF como um singleton.

Você pode rastrear e observar os processos de geração de PDF em seus aplicativos .NET integrando o OpenTelemetry .NET ao IronPDF. Vamos examinar o exemplo de código em detalhes, analisando cada etapa passo a passo:

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;
            }
        }
    }
}
Imports Microsoft.AspNetCore.Mvc
Imports OpenTelemetry.Trace
Imports System.Diagnostics
Imports Microsoft.Extensions.Logging
Imports IronPdf

Namespace DemoWebApplication.Controllers
	<ApiController>
	<Route("[controller]")>
	Public Class DemoController
		Inherits ControllerBase

		Private ReadOnly _htmlToPdf As HtmlToPdf
		Private ReadOnly _logger As ILogger(Of DemoController)
		Private ReadOnly _tracer As Tracer

		Public Sub New(ByVal logger As ILogger(Of DemoController), ByVal htmlToPdf As HtmlToPdf, ByVal tracerProvider As TracerProvider)
			_tracer = tracerProvider.GetTracer("Demo")
			_htmlToPdf = htmlToPdf
			_logger = logger
		End Sub

		<HttpGet>
		Public Function Generate() As FileContentResult
			' Define the PDF file name
			Dim fileName As String = "Sample.pdf"

			' Generate PDF from HTML content
			_logger.LogInformation("Generating PDF...")
			Dim pdfBytes = GeneratePdf("Hello, IronPDF!")

			' Return the PDF as a file result
			Return New FileContentResult(pdfBytes, "application/pdf") With {.FileDownloadName = fileName}
		End Function

		Private Function GeneratePdf(ByVal htmlContent As String) As Byte()
			' Start a tracing activity for PDF generation
			Using activity = _tracer.StartActiveSpan("PDF Generation")
				Dim pdfDocument = _htmlToPdf.RenderHtmlAsPdf(htmlContent)

				' Log PDF generation
				_logger.LogInformation("PDF generated successfully.")

				Return pdfDocument.BinaryData
			End Using
		End Function
	End Class
End Namespace
$vbLabelText   $csharpLabel

Neste exemplo:

  • Nós injetamos o HtmlToPdf, ILogger e TracerProvider no DemoController.
  • O método Generate inicia o download de um arquivo, retornando um PDF criado dinamicamente com o conteúdo "Olá, IronPDF!".
  • O método GeneratePdf usa o HtmlToPdf.RenderHtmlAsPdf para renderizar o PDF e gera os dados binários do PDF.
  • O código utiliza o OpenTelemetry para rastrear o processo de geração do PDF e registra os dados de rastreamento.

Resultado em PDF gerado a partir do código-fonte acima:

OpenTelemetry .NET (Como funciona para desenvolvedores): Figura 1 - Saída gerada pelo código acima utilizando IronPDF e OpenTelemetry

Abaixo está a captura de tela do rastreamento gerado pela interface do usuário do Jaeger:

OpenTelemetry .NET (Como funciona para desenvolvedores): Figura 2 - Rastreamento de saída gerado pela interface do usuário do Jaeger

Conclusão

O OpenTelemetry é um divisor de águas para a otimização do desempenho e o monitoramento da integridade de aplicações .NET . Isso proporciona aos desenvolvedores uma compreensão completa do funcionamento interno de seus aplicativos, oferecendo um método padronizado e independente de fornecedores para coletar, analisar e exportar dados de telemetria (métricas, rastreamentos e registros).

Ao integrar o OpenTelemetry .NET com o IronPDF, os desenvolvedores podem aprimorar os fluxos de trabalho para a criação de PDFs e obter informações sobre o desempenho de seus aplicativos. Ao utilizar a implementação OpenTelemetry .NET para instrumentar manualmente os processos de geração de PDFs, os desenvolvedores podem rastrear os caminhos de execução, monitorar as métricas de desempenho e identificar regiões que precisam de otimização. Além disso, a coleta e análise centralizadas de métricas de monitoramento são viabilizadas pela exportação de dados de telemetria para plataformas de observabilidade, permitindo que os desenvolvedores preservem a integridade de seus aplicativos e ofereçam uma experiência de usuário impecável.

A integração da implementação OpenTelemetry .NET com o IronPDF pode aprimorar os fluxos de trabalho dos desenvolvedores na criação de PDFs e garantir escalabilidade, desempenho e confiabilidade em aplicações .NET . A integração dessas tecnologias ajuda os desenvolvedores a atender às necessidades do desenvolvimento de software moderno e a produzir resultados excelentes, seja na criação de faturas, relatórios ou documentação.

Quando adquirido em pacote, o IronPDF tem um preço justo e inclui uma licença vitalícia. O pacote oferece um ótimo custo-benefício por apenas $799, que é uma taxa única para muitos sistemas. Oferece aos titulares de licença suporte técnico online 24 horas por dia, 7 dias por semana. Por favor, visite o site da Iron Software para obter mais detalhes sobre a cobrança. Explore os produtos da Iron Software para saber mais sobre as soluções que ela oferece.

Perguntas frequentes

O que é OpenTelemetry e como ele aprimora os aplicativos .NET?

O OpenTelemetry é um framework de observabilidade independente de fornecedor, projetado para aplicações nativas da nuvem. Ele aprimora aplicações .NET ao fornecer APIs e SDKs padronizados para captura de logs, rastreamentos e métricas, auxiliando no diagnóstico de problemas, na identificação de gargalos de desempenho e na obtenção de insights abrangentes sobre o comportamento da aplicação.

Como o OpenTelemetry pode ser integrado ao ASP.NET Core para instrumentação automática?

O OpenTelemetry pode ser integrado ao ASP.NET Core configurando serviços e middleware no arquivo `Startup.cs` para habilitar a instrumentação automática. Isso inclui a configuração de rastreamento e exportadores como o Jaeger para transmitir dados de telemetria e monitorar o desempenho do aplicativo.

Qual o papel do IronPDF na geração de PDFs para aplicações .NET?

IronPDF é uma biblioteca .NET que simplifica a criação e manipulação de PDFs em aplicações .NET. Ela suporta a conversão de HTML para PDF, a extração de texto de PDFs e a adição de recursos como marcas d'água e criptografia, tornando-se uma ferramenta versátil para lidar com documentos PDF.

Como os desenvolvedores podem rastrear e analisar os processos de geração de PDFs usando o OpenTelemetry?

Os desenvolvedores podem rastrear e analisar os processos de geração de PDFs integrando o OpenTelemetry.NET ao IronPDF. Essa integração permite a coleta e análise de dados de telemetria, fornecendo informações sobre os fluxos de trabalho de geração de PDFs e ajudando a otimizar o desempenho do aplicativo.

Quais são os benefícios de usar o OpenTelemetry com o IronPDF em aplicações .NET?

A utilização do OpenTelemetry com o IronPDF em aplicações .NET oferece diversas vantagens, incluindo maior escalabilidade, análise de desempenho aprimorada e fluxos de trabalho otimizados para geração de PDFs. Essa combinação permite que os desenvolvedores monitorem e melhorem a integridade de suas aplicações de forma eficaz.

Como os desenvolvedores podem gerar um PDF em uma aplicação ASP.NET Core usando o IronPDF?

Em uma aplicação ASP.NET Core, os desenvolvedores podem gerar um PDF injetando a classe `HtmlToPdf` em um controlador, renderizando o conteúdo HTML como um PDF e, em seguida, retornando o PDF gerado como um arquivo para download.

Quais exportadores são suportados pelo OpenTelemetry para sistemas de backend?

O OpenTelemetry suporta uma variedade de exportadores para sistemas de backend, incluindo Jaeger para rastreamento, Prometheus para métricas e Zipkin para rastreamento. Esses exportadores permitem o armazenamento e a análise de dados de telemetria em diferentes sistemas.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim