Passer au contenu du pied de page
.NET AIDE

OpenTelemetry .NET (Comment ça fonctionne pour les développeurs)

Introduction

La création de documents PDF dynamiques, basés sur des données et enrichis est une exigence typique dans de nombreux secteurs du développement logiciel moderne. Les entreprises dépendent fortement de leur capacité à générer rapidement des PDF de haute qualité, que ce soit pour créer des factures, des rapports ou de la documentation. Cependant, suivre et comprendre l'efficacité des processus de production de PDF devient essentiel pour préserver la santé des applications et garantir la satisfaction des utilisateurs à mesure qu'elles deviennent plus compliquées et à grande échelle.

Cet article vise à discuter de la manière dont les développeurs peuvent améliorer les opérations de génération de PDF et fournir des informations importantes sur les performances des applications en utilisant les fonctionnalités d'IronPDF et d'OpenTelemetry.NET. Nous explorerons les caractéristiques et les avantages des deux technologies et montrerons comment elles peuvent fonctionner ensemble harmonieusement pour optimiser la création et la surveillance des PDF dans les applications .NET.

Qu'est-ce qu'OpenTelemetry ?

OpenTelemetry est un cadre d'observabilité neutre vis-à-vis des fournisseurs, créé spécialement pour les applications cloud-native. L'instrumentation automatique d'OpenTelemetry fournit une API unique pour recueillir des informations de télémétrie, y compris des logs, des traces et des métriques. Grâce à ces données exhaustives, les développeurs peuvent résoudre efficacement les problèmes, identifier les goulots d'étranglement en matière de performances et obtenir une compréhension complète du comportement du programme. OpenTelemetry prend en charge à la fois l'instrumentation automatique et manuelle pour une collecte de données de télémétrie complète et flexible.

Éléments clés d'OpenTelemetry

  • API : Pour instrumenter les applications et générer des données de télémétrie, OpenTelemetry spécifie un ensemble standardisé d'API. Cela simplifie la procédure d'instrumentation et garantit la cohérence entre différents langages de programmation.
  • SDKs : Pour l'instrumentation des applications, OpenTelemetry propose des SDKs adaptés à certains langages. Les développeurs peuvent facilement intégrer la fonctionnalité OpenTelemetry dans leurs projets .NET à l'aide du SDK .NET.
  • Exportateurs : Ces éléments sont chargés de transmettre les données de télémétrie recueillies aux systèmes de backend afin qu'elles puissent être stockées et analysées. De nombreux exportateurs de systèmes de backend largement utilisés, tels que Zipkin (traces), Prometheus (métriques) et Jaeger (traces), sont pris en charge par OpenTelemetry.
  • Instrumentation automatique : Cette méthode simplifie le processus pour les applications .NET Core. Les bibliothèques OpenTelemetry peuvent automatiquement capturer des données pour des opérations courantes au sein de votre application web ou service. Cela élimine les modifications manuelles de code, rationalisant ainsi le processus d'intégration.
  • Instrumentation manuelle : Pour un contrôle granulaire sur la collecte des données, OpenTelemetry fournit une API robuste pour l'instrumentation manuelle. Cette approche vous permet de capturer des métriques et des traces spécifiques liées à la logique unique de votre application. Elle est particulièrement utile pour les applications .NET Framework ou dans des scénarios où l'instrumentation automatique ne couvre pas vos besoins spécifiques.

Avantages de l'utilisation d'OpenTelemetry dans .NET

L'intégration d'OpenTelemetry dans vos applications .NET offre plusieurs avantages :

  • Neutralité vis-à-vis des fournisseurs : OpenTelemetry offre une flexibilité et protège l'avenir de votre application en s'intégrant facilement à une variété de systèmes de backend. Votre code d'instrumentation n'a pas besoin d'être modifié pour changer de systèmes de backend.
  • Approche standardisée : Instrumenter diverses zones de votre application devient plus facile grâce à l'API uniforme. Les développeurs peuvent utiliser la même API pour collecter des logs, des traces et des métriques, ce qui réduit la lisibilité et la maintenance du code.
  • Analyse de performances approfondie : OpenTelemetry offre une richesse de données (métriques, traces et logs) pour une analyse complète des performances. Vous pouvez identifier des opportunités d'optimisation et déterminer la source sous-jacente des problèmes grâce à cette perspective globale.
  • Meilleur dépannage : Les développeurs peuvent plus facilement détecter et corriger les problèmes en suivant le cheminement des requêtes dans votre application à l'aide des riches données de traçage qu'OpenTelemetry capture.
  • Amélioration de l'évolutivité : La complexité de votre application n'entravera pas la capacité d'OpenTelemetry à évoluer. De nouvelles fonctionnalités ou services peuvent être facilement instrumentés sans nécessiter de modifications de code importantes.

Créer et configurer OpenTelemetry

Configurer OpenTelemetry dans l'application ASP.NET

OpenTelemetry doit être configuré dans votre application ; pour les applications ASP.NET Core, cela se fait généralement dans la méthode ConfigureServices de votre fichier Startup.cs. Voici un exemple de configuration d'un exportateur 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

Remplacez "YourServiceName" par le nom réel de votre service. Ajustez l'hôte de l'agent Jaeger et le port selon vos options de configuration de Jaeger.

Ajouter le middleware OpenTelemetry

Vous devez inclure le middleware OpenTelemetry dans les applications ASP.NET Core pour obtenir l'instrumentation automatique des requêtes HTTP entrantes. Dans la méthode Configure de votre fichier Startup.cs, ajoutez le 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

Commencer le traçage

Après avoir tout configuré, OpenTelemetry commencera à suivre les requêtes HTTP entrantes et à envoyer automatiquement des informations de télémétrie au backend Jaeger configuré.

Vérifier et surveiller

Vous pouvez vérifier les traces dans votre backend Jaeger pour confirmer qu'OpenTelemetry fonctionne correctement. Ouvrez l'interface utilisateur Jaeger (généralement disponible à http://localhost:16686 pour l'interface utilisateur Jaeger) et recherchez des traces associées à votre service.

Choisir un système de backend (optionnel)

OpenTelemetry n'est pas indispensable pour l'instrumentation de base, mais il s'intègre à d'autres systèmes d'exploitation de backend pour stocker et traiter les données de télémétrie. Les options populaires sont constituées des systèmes d'exploitation officiellement pris en charge :

  • Jaeger (traces)
  • Prometheus (métriques)
  • Zipkin (traces)

Démarrage

Qu'est-ce qu'IronPDF ?

Le populaire package .NET IronPDF vous permet de créer, modifier et rendre des documents PDF au sein de programmes .NET. Les fonctions de travail avec les PDF sont nombreuses et incluent la conversion de pages HTML en PDF, l'extraction de texte et d'images de fichiers PDF, l'ajout de texte, d'images et de formes aux documents PDF préexistants, et la production de PDF à partir de contenu HTML, de photos ou de données brutes.

Deux des principaux avantages d'IronPDF sont sa facilité d'utilisation et sa simplicité. Les développeurs peuvent commencer à créer des PDF dans leurs projets .NET sans effort grâce à son API intuitive et à sa documentation complète. L'efficacité et la rapidité d'IronPDF sont des caractéristiques supplémentaires qui aident les développeurs à créer des documents PDF de haute qualité rapidement et efficacement.

Quelques-uns des avantages d'IronPDF :

  • Production de PDF à partir de HTML, d'images et de données brutes
  • Extraction de texte et d'images à partir de fichiers PDF
  • Incorporer des filigranes, des en-têtes et des pieds de page dans des fichiers PDF
  • Les fichiers PDF sont protégés par un cryptage et un mot de passe
  • La capacité de signer électroniquement et de remplir des formulaires

Installer le package NuGet

Plusieurs packages NuGet sont disponibles pour différents composants d'OpenTelemetry. Selon vos besoins, vous pouvez installer les packages requis. Pour envoyer des données de télémétrie à un backend d'observabilité (tel que Jaeger, Zipkin ou Prometheus), vous aurez au moins besoin du package OpenTelemetry, des packages d'instrumentation pour votre framework d'application (comme ASP.NET Core), et d'un package d'exporteur. Assurez-vous également que le package IronPDF est installé dans votre projet. Pour l'installer, utilisez la console du gestionnaire de packages NuGet :

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

Utiliser OpenTelemetry avec IronPDF

Ouvrez le fichier Startup.cs de votre application ASP.NET Core pour accéder à la méthode ConfigureServices. Pour configurer IronPDF, incluez le code suivant.

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

Ce code garantit qu'une instance de HtmlToPdf est créée et utilisée par l'application uniquement en configurant le service HtmlToPdf d'IronPDF en tant que singleton.

Vous pouvez suivre et observer les processus de génération de PDF dans vos applications .NET en intégrant OpenTelemetry.NET avec IronPDF. Examinons en profondeur l'exemple de code, en passant en revue chaque étape :

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

Dans cet exemple :

  • Nous injectons le HtmlToPdf, ILogger et TracerProvider dans le DemoController.
  • La méthode Generate démarre un téléchargement de fichier, retournant un PDF créé dynamiquement avec le contenu "Hello, IronPDF !".
  • La méthode GeneratePdf utilise le HtmlToPdf.RenderHtmlAsPdf pour restituer le PDF et sort les données binaires du PDF.
  • Le code utilise OpenTelemetry pour tracer le processus de génération de PDF et enregistre les données de traçage.

Sortie PDF générée à partir du code source ci-dessus :

OpenTelemetry .NET (Comment cela fonctionne pour les développeurs) : Figure 1 - Sortie générée à partir du code ci-dessus utilisant IronPDF et OpenTelemetry

Ci-dessous se trouve l'écran de la trace générée à partir de l'interface utilisateur Jaeger :

OpenTelemetry .NET (Comment cela fonctionne pour les développeurs) : Figure 2 - Sortie générée de trace à partir de l'interface utilisateur Jaeger

Conclusion

OpenTelemetry est un outil révolutionnaire pour l'optimisation des performances et la surveillance de la santé des applications .NET. Il offre aux développeurs une compréhension approfondie du fonctionnement interne de leurs applications en fournissant une méthode neutre vis-à-vis des fournisseurs et standardisée pour la collecte, l'analyse et l'exportation des données de télémétrie (métriques, traces et logs).

En intégrant OpenTelemetry.NET avec IronPDF, les développeurs peuvent améliorer les flux de travail de création de PDF et obtenir des informations sur les performances de leurs applications. En tirant parti de l'implémentation OpenTelemetry.NET pour instrumenter manuellement les processus de génération de PDF, les développeurs peuvent suivre les chemins d'exécution, surveiller les métriques de performance et identifier les zones nécessitant une optimisation. De plus, la collecte et l'analyse centralisées des métriques de surveillance sont rendues possibles en exportant les données de télémétrie vers des plateformes d'observabilité, permettant aux développeurs de préserver la santé de leurs applications et d'offrir une expérience utilisateur sans faille.

L'intégration de l'implémentation OpenTelemetry.NET et de l'IronPDF peut améliorer les flux de travail des développeurs pour la création de PDF et garantir la scalabilité, les performances et la fiabilité dans les applications .NET. L'intégration de ces technologies aide les développeurs à répondre aux besoins du développement logiciel moderne et à produire des résultats exceptionnels, que ce soit pour créer des factures, des rapports ou de la documentation.

Lorsqu'IronPDF est acheté en tant que package, il est proposé à un prix raisonnable et comprend une licence à vie. Le package offre une grande valeur à seulement $799, ce qui est un paiement unique pour de nombreux systèmes. Il offre un support technique en ligne en continu aux titulaires de licence. Veuillez visiter le site Web Iron Software pour plus de détails sur les frais. Explorez les produits d'Iron Software pour en savoir plus sur les solutions qu'ils proposent.

Questions Fréquemment Posées

Qu'est-ce qu'OpenTelemetry et comment cela améliore-t-il les applications .NET ?

OpenTelemetry est un cadre d'observabilité neutre conçu pour les applications cloud-native. Il améliore les applications .NET en fournissant des API et SDK standardisés pour la capture des journaux, des traces et des métriques, ce qui aide au diagnostic des problèmes, à l'identification des goulots d'étranglement de performance et à obtenir une vision exhaustive du comportement des applications.

Comment OpenTelemetry peut-il être intégré avec ASP.NET Core pour une instrumentation automatique ?

OpenTelemetry peut être intégré avec ASP.NET Core en configurant les services et le middleware dans le fichier `Startup.cs` pour permettre l'instrumentation automatique. Cela inclut la mise en place de traçage et d'exportateurs comme Jaeger pour transmettre les données de télémétrie et surveiller la performance de l'application.

Quel rôle joue IronPDF dans la génération de PDF pour les applications .NET ?

IronPDF est une bibliothèque .NET qui simplifie la création et la manipulation de PDF au sein des applications .NET. Elle supporte la conversion d'HTML en PDF, l'extraction de texte des PDFs, et l'ajout de fonctionnalités comme les filigranes et le chiffrement, faisant de lui un outil polyvalent pour la gestion des documents PDF.

Comment les développeurs peuvent-ils suivre et analyser les processus de génération de PDF en utilisant OpenTelemetry ?

Les développeurs peuvent suivre et analyser les processus de génération de PDF en intégrant OpenTelemetry.NET avec IronPDF. Cette intégration permet de collecter et d'analyser les données de télémétrie, fournissant des insights sur les flux de travail de génération de PDF et aidant à optimiser la performance de l'application.

Quels sont les avantages d'utiliser OpenTelemetry avec IronPDF dans les applications .NET ?

L'utilisation d'OpenTelemetry avec IronPDF dans les applications .NET offre plusieurs avantages, y compris une scalabilité améliorée des applications, une analyse de performance améliorée, et des flux de travail de génération de PDF optimisés. Cette combinaison permet aux développeurs de surveiller et d'améliorer efficacement la santé de leurs applications.

Comment les développeurs peuvent-ils générer un PDF dans une application ASP.NET Core en utilisant IronPDF ?

Dans une application ASP.NET Core, les développeurs peuvent générer un PDF en injectant la classe `HtmlToPdf` dans un contrôleur, en rendant le contenu HTML en tant que PDF, puis en renvoyant le PDF généré en tant que résultat de fichier pour téléchargement.

Quels exportateurs sont supportés par OpenTelemetry pour les systèmes backend ?

OpenTelemetry supporte une variété d'exportateurs pour les systèmes backend, y compris Jaeger pour le traçage, Prometheus pour les métriques, et Zipkin pour le traçage. Ces exportateurs permettent le stockage et l'analyse des données de télémétrie à travers différents systèmes.

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