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.
- Kits de développement logiciel (SDK) : Pour l'instrumentation des applications, OpenTelemetry propose des SDK 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 composants sont chargés de transmettre les données de télémétrie collectées aux systèmes back-end afin qu'elles puissent être stockées et analysées. De nombreux exportateurs de systèmes backend largement utilisés, tels que Zipkin (traçage), Prometheus (métriques) et Jaeger (traçage), 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 précis de la collecte de 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 flexibilité et pérennise votre application en s'intégrant sans effort à divers systèmes backend. Votre code d'instrumentation n'a pas besoin d'être modifié pour changer de systèmes de backend.
- Approche standardisée : L'instrumentation des différentes zones de votre application est facilitée par 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 approfondie des performances : OpenTelemetry offre une multitude de données (métriques, traces et journaux) 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.
- Dépannage amélioré : les développeurs peuvent détecter et corriger plus facilement les problèmes en suivant le cheminement des requêtes à travers votre application grâce aux données de traçage détaillées capturées par OpenTelemetry.
- Évolutivité améliorée : 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'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
Remplacez "YourServiceName" par le nom réel de votre service. Adaptez l'hôte et le port de l'agent Jaeger en fonction de vos options de configuration 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 Startup.cs de votre fichier Configure, 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
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 Jaeger UI) et recherchez les 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)
Commencer
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
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 comme un 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
Dans cet exemple :
- Nous injectons le
HtmlToPdf,ILoggeretTracerProviderdans leDemoController. - La méthode
Generatelance un téléchargement de fichier, renvoyant un PDF créé dynamiquement avec le contenu " Bonjour, IronPDF! ". - La méthode
GeneratePdfutilise la méthodeHtmlToPdf.RenderHtmlAsPdfpour générer le PDF et produit 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 :

Ci-dessous se trouve l'écran de la trace générée à partir de l'interface utilisateur de 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. Ce forfait offre un excellent rapport qualité-prix à seulement $999, ce qui représente 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 using 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.




