跳至页脚内容
.NET 帮助

OpenTelemetry .NET(开发人员如何使用)

Introduction

在现代软件开发的许多领域中,创建动态、数据驱动、丰富的PDF文档是一个典型的需求。 企业极大地依赖于快速生成高质量PDF的能力,无论是用于创建账单、报告还是文档。 然而,跟踪和理解PDF生产过程的有效性对于保持应用程序的健康和确保用户满意度至关重要,尤其当它们变得更复杂和大规模时。

本文旨在讨论开发人员如何通过利用IronPDF和OpenTelemetry.NET的功能来改进PDF生成操作,并提供有关应用程序性能的重要见解。 我们将探讨这两种技术的特点和优势,并展示它们如何和谐配合以优化.NET应用程序中PDF的创建和监控。

什么是OpenTelemetry?

OpenTelemetry是一种专门为云原生应用程序创建的无厂商中立的可观察性框架。OpenTelemetry自动化检测提供了一个用于收集遥测信息的统一API,包括日志、追踪和指标。 利用这些广泛的数据,开发人员可以有效地调试问题,找出性能瓶颈,并全面了解程序行为。 OpenTelemetry支持自动和手动检测,以便于全面和灵活的遥测数据收集。

OpenTelemetry的关键组件

  • API:为了检测应用程序并生成遥测数据,OpenTelemetry定义了一组标准化API。这简化了检测过程,并保证了多个编程语言的一致性。
  • SDKs:为了检测应用程序,OpenTelemetry提供了针对特定语言的SDK。 开发人员可以轻松利用.NET SDK将OpenTelemetry功能集成到他们的.NET项目中。
  • 导出器:这些部分负责将收集的遥测数据传输到后端系统以便存储和分析。 OpenTelemetry支持许多广泛使用的后端系统导出器,如Zipkin(追踪)、Prometheus(指标)和Jaeger(追踪)。
  • 自动检测:这种方法简化了.NET Core应用程序的过程。 OpenTelemetry库可以自动获取Web应用程序或服务内常见操作的数据。这消除了手动代码修改,简化了集成过程。
  • 手动检测:为了能够细致地控制数据收集,OpenTelemetry提供了一个用于手动检测的强大API。 这种方法允许您捕获与特定应用程序逻辑相关的特定指标和追踪。 它对于.NET Framework应用程序或自动检测无法涵盖您的特定需求的场景特别有用。

在.NET中使用OpenTelemetry的好处

将OpenTelemetry集成到您的.NET应用程序中提供了若干优势:

  • 厂商中立性:OpenTelemetry通过与各种后端系统轻松集成来提供灵活性并确保您的应用程序未来的适应性。 您的检测代码不需要更改即可切换后端系统。
  • 标准化方法:统一API使得应用程序各个区域的检测变得更加容易。 开发人员可以使用同一API收集日志、追踪和指标,结果是代码更易于阅读和维护。
  • 深入的性能分析:OpenTelemetry提供丰富的数据(指标、追踪和日志)用于全面的性能分析。 您可以通过这个全面的视角找到优化的区域并确定问题的根本原因。
  • 更好的故障排查:通过OpenTelemetry捕获的丰富追踪数据,开发人员可以更轻松地检测和修复问题,跟踪通过您的应用程序的请求路径。
  • 改进的扩展性:应用程序的复杂性不会阻碍OpenTelemetry的扩展能力。 无需大幅修改代码即可轻松检测新功能或服务。

创建和配置OpenTelemetry

在ASP.NET应用程序中配置OpenTelemetry

需要在您的应用程序中配置OpenTelemetry; 对于ASP.NET Core应用程序,这通常在Startup.cs文件的ConfigureServices方法中进行。这是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

"YourServiceName"替换为您的服务的实际名称。根据您的Jaeger配置选项调整Jaeger代理主机和端口。

添加OpenTelemetry中间件

您必须在ASP.NET Core应用程序中包括OpenTelemetry中间件,以便自动检测传入的HTTP请求。 在您Startup.cs文件的Configure方法中添加中间件:

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

开始追踪

完成所有设置后,OpenTelemetry将开始跟踪传入的HTTP请求,并自动将遥测信息发送到配置的Jaeger后端。

验证和监控

您可以在Jaeger后端中检查追踪以确认OpenTelemetry是否正常工作。 打开Jaeger用户界面(通常在http://localhost:16686可以找到Jaeger UI)并查找与您的服务相关的追踪。

选择一个后端系统(可选)

OpenTelemetry不是基本检测的必须品,但它与其他后端操作系统集成以存储和处理遥测数据。 常见选项包括官方支持的操作系统:

  • Jaeger(追踪)
  • Prometheus(指标)
  • Zipkin(追踪)

开始

什么是 IronPDF? 流行的.NET软件包[IronPDF](/)允许您在.NET程序中创建、编辑和渲染PDF文档。 用于处理PDF的功能众多,包括将HTML页面转换为PDF,从PDF中提取文本和图像,向现有PDF文档添加文本、图像和形状,以及从HTML内容、照片或原始数据生成PDF。 IronPDF的两个主要优点是易用性和简单性。 开发人员可以毫不费力地在他们的.NET项目中开始创建PDF,因为其直观的API和全面的文档。 IronPDF的效率和速度也是帮助开发人员快速高效地创建高质量PDF文档的额外特点。 IronPDF的一些好处: - 从HTML、图像和原始数据生成PDF - 从PDF文件提取文本和图像 - 在PDF文件中增加水印、页眉和页脚 - PDF文件用加密和密码保护 - 能够电子签名和填写表格 #### 安装 NuGet 包 OpenTelemetry的不同组件有多个NuGet包可用。 根据您的需要,您可以安装所需的软件包。 为了将遥测数据发送到可观察性后端(如Jaeger、Zipkin或Prometheus),您至少需要OpenTelemetry包、应用程序框架的检测包(如ASP.NET Core),以及一个导出器包。 还要确保您的项目中安装了IronPDF包。 要安装它,请使用NuGet软件包管理控制台: ```powershell Install-Package OpenTelemetry Install-Package OpenTelemetry.Instrumentation.AspNetCore Install-Package OpenTelemetry.Exporter.Jaeger Install-Package IronPdf ``` ## 将OpenTelemetry与IronPDF结合使用 打开您的ASP.NET Core应用程序的`Startup.cs`文件以访问`ConfigureServices`方法。 为了设置IronPDF,请包括以下代码。 ```csharp using IronPdf; public void ConfigureServices(IServiceCollection services) { // Configure IronPDF services.AddSingleton(); // Other service configurations... } ``` 此代码通过将IronPDF的`HtmlToPdf`服务配置为单例,确保由应用程序仅创建和使用一个`HtmlToPdf`实例。 通过将OpenTelemetry.NET与IronPDF集成,您可以在您的.NET应用程序中跟踪和观察PDF生成过程。 让我们深入研究代码示例,逐步分析每一步骤: ```csharp 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 _logger; private readonly Tracer _tracer; public DemoController(ILogger 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; } } } } ``` 在此示例中: - 我们将`HtmlToPdf`、`ILogger`和`TracerProvider`注入到`DemoController`中。 - `Generate`方法启动文件下载,返回动态创建的PDF,其中包含内容"Hello, IronPDF!"。 - `GeneratePdf`方法使用`HtmlToPdf.RenderHtmlAsPdf`渲染PDF并输出PDF的二进制数据。 - 代码使用OpenTelemetry追踪PDF生成过程并记录追踪数据。 从上述源码生成的PDF输出: ![OpenTelemetry .NET (开发人员的工作原理): 图1 - 利用IronPDF和OpenTelemetry生成的上述代码的输出](/static-assets/pdf/blog/opentelemetry-net/opentelemetry-net-1.webp) 以下是Jaeger UI中生成的追踪屏幕: ![OpenTelemetry .NET (开发人员的工作原理): 图2 - Jaeger UI生成的输出追踪](/static-assets/pdf/blog/opentelemetry-net/opentelemetry-net-2.webp) ## 结论 OpenTelemetry是.NET应用程序性能优化和健康监控的游戏规则改变者。 它通过提供一种无厂商中立和标准化的方法来收集、分析和导出遥测数据(指标、追踪和日志),给开发人员提供了对其应用程序内部工作机制的全面了解。 通过将OpenTelemetry.NET与IronPDF集成,开发人员可以改进PDF创建工作流程,并获得应用程序性能的见解。 利用OpenTelemetry.NET实现手动检测PDF生成过程,开发人员可以跟踪执行路径,监控性能指标,并确定需要优化的区域。 此外,通过将遥测数据导出到可观察性平台,实现中心化监控指标的收集与分析,使得开发者能够保持应用程序的健康,并提供无缝的用户体验。 OpenTelemetry.NET实现与IronPDF的集成可以增强开发人员的PDF创建工作流程,并保证.NET应用程序的可扩展性、性能和可靠性。 这些技术的集成帮助开发人员满足现代软件开发的需求并提供卓越的结果,无论是创建发票、报告还是文档。 当作为一个软件包购买时,IronPDF价格合理,包括终身许可证。 该套餐提供了极高的价值,仅需$799的一次性费用即可应用于多个系统。 它提供持有许可证者全天候的在线工程支持。 请访问[Iron Software网站](https://ironsoftware.com/)了解更多关于费用的详细信息。 探索[Iron Software的产品](https://ironsoftware.com/)以了解他们提供的解决方案。

常见问题解答

什么是OpenTelemetry?它如何增强.NET应用程序?

OpenTelemetry是一个为云原生应用设计的无厂商锁定的可观测性框架。它通过提供标准化的API和SDK来增强.NET应用程序,以捕获日志、跟踪和指标,从而帮助诊断问题、识别性能瓶颈,并获得应用程序行为的全面洞察。

如何将OpenTelemetry与ASP.NET Core集成为自动化检测?

可以通过在`Startup.cs`文件中配置服务和中间件来将OpenTelemetry与ASP.NET Core集成,以启用自动化检测。这包括设置跟踪和导出程序,如Jaeger,用于传输遥测数据和监控应用程序性能。

IronPDF在.NET应用中的PDF生成中扮演什么角色?

IronPDF是一个.NET库,简化了.NET应用中的PDF创建和操作。它支持将HTML转换为PDF,从PDF中提取文本,并添加如水印和加密等功能,是处理PDF文档的多功能工具。

开发人员如何使用OpenTelemetry追踪和分析PDF生成过程?

开发人员可以通过将OpenTelemetry.NET与IronPDF集成来追踪和分析PDF生成过程。这种集成使得可以收集和分析遥测数据,为PDF生成工作流程提供见解,并帮助优化应用程序性能。

在.NET应用中使用OpenTelemetry和IronPDF有哪些好处?

在.NET应用中使用OpenTelemetry和IronPDF提供了多个好处,包括改善的应用程序可扩展性、增强的性能分析和优化的PDF生成工作流程。这种组合使开发人员能够有效地监测和改善应用程序的健康状况。

开发人员如何在ASP.NET Core应用中使用IronPDF生成PDF?

在ASP.NET Core应用程序中,开发人员可以通过将`HtmlToPdf`类注入到控制器中来生成PDF,将HTML内容呈现为PDF,然后将生成的PDF作为文件结果返回以供下载。

OpenTelemetry支持哪些后端系统导出程序?

OpenTelemetry支持多种后端系统导出程序,包括用于跟踪的Jaeger、用于指标的Prometheus以及用于跟踪的Zipkin。这些导出程序使得可以在不同系统之间存储和分析遥测数据。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。