.NET 帮助 Opentelemetry C#(开发人员如何使用) Jacob Mellor 已更新:2025年7月28日 下载 IronPDF NuGet 下载 DLL 下载 Windows 安装程序 免费试用 LLM副本 LLM副本 将页面复制为 Markdown 格式,用于 LLMs 在 ChatGPT 中打开 向 ChatGPT 咨询此页面 在双子座打开 向 Gemini 询问此页面 在 Grok 中打开 向 Grok 询问此页面 打开困惑 向 Perplexity 询问有关此页面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 复制链接 电子邮件文章 OpenTelemetry 是一套工具、API 和 SDK,它们共同协作以收集、处理和导出应用程序中的跟踪、指标和日志等遥测数据。 本教程旨在帮助初学者理解如何使用扩展方法将 OpenTelemetry 集成到 C# 应用程序中,重点是内置指标收集,以有效监控 .NET 应用程序。 我们还将学习 IronPDF 库用于 C# 中的 PDF 生成。 OpenTelemetry 简介 OpenTelemetry 提供了一种统一的方式来收集应用程序中的各种数据。 对于 .NET 开发者来说,集成 OpenTelemetry 意味着您可以更密切地监控应用程序,实时了解其性能,并快速识别问题。 OpenTelemetry 的仪器库自动启用 .NET 应用程序的跟踪和指标收集。 通过 OpenTelemetry 框架收集的指标,开发人员可以获得 .NET 运行时环境的有价值见解。 OpenTelemetry 的 .NET 实现支持 .NET 运行时,包括 .NET Core 和 .NET Framework。 它遵循 OpenTelemetry 协议,以标准化遥测数据收集。 设置您的环境 首先,您需要在计算机上安装 .NET SDK。如果您使用 Visual Studio,它可能已经包含在 .NET SDK 中。 您可以通过打开命令行并运行以下命令来检查当前的 .NET SDK 版本: dotnet --version 接下来,通过运行以下命令来创建一个新的 .NET Web 项目: dotnet new web -o MyTelemetryApp cd MyTelemetryApp dotnet new web -o MyTelemetryApp cd MyTelemetryApp SHELL 此命令会在名为 MyTelemetryApp 的目录中创建一个新的 ASP.NET Core 项目。 集成 OpenTelemetry 添加必需的软件包 首先,向您的项目添加必要的 OpenTelemetry 软件包。 打开终端并导航到您的项目目录。 然后,使用 NuGet 包管理器 CLI 安装以下软件包: dotnet add package OpenTelemetry -Version <version> dotnet add package OpenTelemetry.Extensions.Hosting -Version <version> dotnet add package OpenTelemetry.Instrumentation.AspNetCore -Version <version> dotnet add package OpenTelemetry.Exporter.Console -Version <version> dotnet add package OpenTelemetry -Version <version> dotnet add package OpenTelemetry.Extensions.Hosting -Version <version> dotnet add package OpenTelemetry.Instrumentation.AspNetCore -Version <version> dotnet add package OpenTelemetry.Exporter.Console -Version <version> SHELL 将 替换为每个软件包的最新版本。 在您的应用程序中配置 OpenTelemetry 添加所需的软件包后,您需要在您的应用程序中配置 OpenTelemetry。 这涉及到设置 OpenTelemetry SDK 并指定需要收集的遥测数据。 OpenTelemetry 提供了用于与 .NET 应用程序无缝集成的仪器库。 打开项目中的 Startup.cs 文件,并修改 ConfigureServices 方法以包含如下代码片段所示的 OpenTelemetry: public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddOpenTelemetryTracing(builder => { builder.AddAspNetCoreInstrumentation() .AddHttpClientInstrumentation() .AddConsoleExporter(); }); } public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddOpenTelemetryTracing(builder => { builder.AddAspNetCoreInstrumentation() .AddHttpClientInstrumentation() .AddConsoleExporter(); }); } $vbLabelText $csharpLabel 此代码片段显示了如何配置 OpenTelemetry 以从 ASP.NET Core 应用程序和 HTTP 客户端调用中收集遥测数据,然后将这些数据导出到控制台。 AddAspNetCoreInstrumentation 方法自动启用 ASP.NET Core 应用程序中传入 HTTP 请求的仪器化。 收集指标 要收集指标,您还需要配置 OpenTelemetry 指标 API,重点是指标而不是跟踪。 public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddOpenTelemetryMetrics(builder => { builder.AddAspNetCoreInstrumentation() .AddHttpClientInstrumentation() .AddConsoleExporter(options => options.Targets = ConsoleExporterOutputTargets.Console); }); } public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddOpenTelemetryMetrics(builder => { builder.AddAspNetCoreInstrumentation() .AddHttpClientInstrumentation() .AddConsoleExporter(options => options.Targets = ConsoleExporterOutputTargets.Console); }); } $vbLabelText $csharpLabel 此设置启用从 ASP.NET Core 和 HTTP 客户端仪器收集内置指标,并将其导出到控制台以便于查看。 创建自定义指标 虽然 OpenTelemetry 自动收集许多有用的指标,但您可能希望收集针对您应用程序的自定义指标。 利用仪器库提供的扩展方法不仅能自动收集遥测数据,还能让开发人员对发出的指标进行更细粒度的控制。 这可以通过手动仪器化您的代码来实现,以创建和记录自定义指标。 var meter = new Meter("MyCustomMetrics", "1.0"); var counter = meter.CreateCounter<int>("custom_request_count", description: "Counts custom requests"); app.Use((context, next) => { counter.Add(1, new KeyValuePair<string, object>("path", context.Request.Path)); return next(); }); var meter = new Meter("MyCustomMetrics", "1.0"); var counter = meter.CreateCounter<int>("custom_request_count", description: "Counts custom requests"); app.Use((context, next) => { counter.Add(1, new KeyValuePair<string, object>("path", context.Request.Path)); return next(); }); $vbLabelText $csharpLabel 此代码片段演示了如何创建一个自定义指标来计数应用程序中的请求,并为每个指标加上请求路径标签。 通过利用 OpenTelemetry 提供的扩展方法,开发人员可以对遥测数据收集过程施加更细致的控制。 测试您的集成 使用命令行或 Visual Studio 运行您的应用程序。 通过在网络浏览器中导航到其 URL 或使用诸如 curl 之类的工具向您的应用程序发送一些请求。 您应该看到遥测数据,包括跟踪和指标,正在打印到您的控制台输出。 curl http://localhost:5000 curl http://localhost:5000 SHELL IronPDF的介绍 IronPDF 是一个强大的库,适用于 C# 开发者,可以直接在 .NET 应用程序中生成、操作和渲染 PDF 文档。 这种能力对于生成报告、发票或任何基于文档的输出特别有用,从使用 HTML 的 Web 应用程序、服务或桌面应用程序生成文件。结合 OpenTelemetry,开发人员可以监控 PDF 生成过程的性能和可靠性,确保用户体验顺畅。 IronPDF在HTML到PDF转换方面表现出色,确保精确保留原始布局和样式。 它非常适合从基于Web的内容中创建PDF,如报告、发票和文档。 利用对HTML文件、URL和原始HTML字符串的支持,IronPDF轻松生成高质量的PDF文档。 using IronPdf; class Program { static void Main(string[] args) { var renderer = new ChromePdfRenderer(); // 1. Convert HTML String to PDF var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"; var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent); pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf"); // 2. Convert HTML File to PDF var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath); pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf"); // 3. Convert URL to PDF var url = "http://ironpdf.com"; // Specify the URL var pdfFromUrl = renderer.RenderUrlAsPdf(url); pdfFromUrl.SaveAs("URLToPDF.pdf"); } } using IronPdf; class Program { static void Main(string[] args) { var renderer = new ChromePdfRenderer(); // 1. Convert HTML String to PDF var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"; var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent); pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf"); // 2. Convert HTML File to PDF var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath); pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf"); // 3. Convert URL to PDF var url = "http://ironpdf.com"; // Specify the URL var pdfFromUrl = renderer.RenderUrlAsPdf(url); pdfFromUrl.SaveAs("URLToPDF.pdf"); } } $vbLabelText $csharpLabel 设置 IronPDF 首先,您需要将 IronPDF 添加到您的 .NET 项目中。 您可以使用 NuGet 包管理器来完成此操作。 打开终端并导航到您的项目目录。 然后,运行以下命令来安装 IronPDF: dotnet add package IronPDF dotnet add package IronPDF SHELL 使用 IronPDF 生成 PDF 并使用 OpenTelemetry 进行监控 下面是一个如何生成简单 PDF 文档并使用 OpenTelemetry 监控操作的示例。 以下示例假设您已如前所示在应用程序中配置 OpenTelemetry。 using IronPdf; using OpenTelemetry.Trace; public class PdfService { private readonly Tracer _tracer; public PdfService(Tracer tracer) { _tracer = tracer; } public void GeneratePdf() { // Create a new activity for this operation using var activity = _tracer.StartActivity("Generate PDF"); // Simulate adding some attributes related to the operation activity?.SetTag("pdf.size", "A4"); activity?.SetTag("pdf.content", "Hello World"); try { // Initialize the PDF generator var renderer = new ChromePdfRenderer(); // Generate a PDF from HTML var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>"); // Save the PDF to a file var outputPath = "output.pdf"; pdf.SaveAs(outputPath); // Log success activity?.SetTag("pdf.status", "Success"); activity?.SetTag("pdf.outputPath", outputPath); } catch (Exception ex) { // Log any exceptions that occur during PDF generation activity?.SetTag("pdf.status", "Error"); activity?.SetTag("pdf.error", ex.Message); throw; } } } using IronPdf; using OpenTelemetry.Trace; public class PdfService { private readonly Tracer _tracer; public PdfService(Tracer tracer) { _tracer = tracer; } public void GeneratePdf() { // Create a new activity for this operation using var activity = _tracer.StartActivity("Generate PDF"); // Simulate adding some attributes related to the operation activity?.SetTag("pdf.size", "A4"); activity?.SetTag("pdf.content", "Hello World"); try { // Initialize the PDF generator var renderer = new ChromePdfRenderer(); // Generate a PDF from HTML var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>"); // Save the PDF to a file var outputPath = "output.pdf"; pdf.SaveAs(outputPath); // Log success activity?.SetTag("pdf.status", "Success"); activity?.SetTag("pdf.outputPath", outputPath); } catch (Exception ex) { // Log any exceptions that occur during PDF generation activity?.SetTag("pdf.status", "Error"); activity?.SetTag("pdf.error", ex.Message); throw; } } } $vbLabelText $csharpLabel 在此示例中,我们创建了一个新的服务类 PdfService,其中包含用于生成 PDF 文档的 GeneratePdf 方法。 我们使用 IronPDF 的 ChromePdfRenderer 类将 HTML 渲染为 PDF 文档。 使用 OpenTelemetry,我们启动了一个名为"生成 PDF"的新活动,以监控此操作。 我们为活动添加了自定义标签,以提供有关 PDF 生成过程的附加背景信息,例如 PDF 的大小、内容类型和输出路径。 我们还会捕获任何异常,以便在同一活动中适当地记录错误。 结论 将 OpenTelemetry 集成到您的 .NET 应用程序中可以收集有价值的遥测数据,为您提供有关应用程序性能和行为的深刻见解。 通过遵循本教程中概述的步骤,您已经为 .NET Web 应用程序设置了基本的跟踪和指标收集。 通过探索更多高级的 OpenTelemetry 功能进行进一步尝试,例如将遥测数据导出到外部监控工具或者收集日志以及踪迹和指标。 IronPDF 提供IronPDF 的免费试用版用于生产,以测试其全部功能。 许可证起价低至 $399。 常见问题解答 OpenTelemetry在C#开发中的作用是什么? OpenTelemetry提供了一种统一的方法来收集、处理和导出遥测数据,如跟踪、指标和日志,使开发人员能够实时监控和了解应用程序性能。 如何开始将OpenTelemetry集成到我的C#应用程序中? 首先通过NuGet安装必要的OpenTelemetry包,然后通过修改'Startup.cs'中的'ConfigureServices'方法来配置您的应用程序以包括OpenTelemetry跟踪和指标。 设置C#中OpenTelemetry环境需要哪些步骤? 确保.NET SDK安装在您的计算机上。您可以通过在命令行中运行dotnet --version来验证安装。 如何使用HTML内容在C#中生成PDF? 您可以使用IronPDF库的ChromePdfRenderer类将HTML渲染为PDF文档,然后使用SaveAs方法保存生成的PDF。 如何在C#应用程序中监控PDF生成过程? 使用OpenTelemetry的Tracer创建一个PDF生成的活动,添加自定义标签来记录关于过程的相关信息以便进行监控。 什么是自定义指标,它们如何在OpenTelemetry与C#中使用? 自定义指标是您可以通过用OpenTelemetry的Meter和Counter类手动对代码进行检测来收集的特定于应用程序的数据点。 如何确保C#中PDF的可靠生成? 使用IronPDF库可生成、操作和渲染PDF文档。IronPDF提供强大的功能,确保您的应用程序中PDF输出的高质量。 是否有关于在C#中生成PDF的库的可用许可选项? IronPDF提供用于生产测试的免费试用,许可证从399美元起,使开发人员能够探索其全部功能。 如何测试我在C#应用程序中的OpenTelemetry集成? 运行您的应用程序并使用Web浏览器或curl等工具发出请求,然后观察控制台输出的遥测数据,如跟踪和指标。 Jacob Mellor 立即与工程团队聊天 首席技术官 Jacob Mellor 是 Iron Software 的首席技术官,也是一位开创 C# PDF 技术的有远见的工程师。作为 Iron Software 核心代码库的原始开发者,他从公司成立之初就开始塑造公司的产品架构,与首席执行官 Cameron Rimington 一起将公司转变为一家拥有 50 多名员工的公司,为 NASA、特斯拉和全球政府机构提供服务。Jacob 拥有曼彻斯特大学土木工程一级荣誉工程学士学位(BEng)(1998-2001 年)。他的旗舰产品 IronPDF 和 Iron Suite for .NET 库在全球的 NuGet 安装量已超过 3000 万次,其基础代码继续为全球使用的开发人员工具提供动力。Jacob 拥有 25 年的商业经验和 41 年的编码专业知识,他一直专注于推动企业级 C#、Java 和 Python PDF 技术的创新,同时指导下一代技术领导者。 相关文章 已更新2026年2月20日 架起 CLI 简洁性与 .NET 的桥梁:使用 IronPDF for .NET 的 Curl DotNet Jacob Mellor 通过 CurlDotNet 填补了这一空白,CurlDotNet 库的创建是为了将 cURL 的熟悉感带入 .NET 生态系统。 阅读更多 已更新2025年12月20日 RandomNumberGenerator C# 使用 RandomNumberGenerator C# 类可以帮助将您的 PDF 生成和编辑项目提升到一个新的高度。 阅读更多 已更新2025年12月20日 C# String Equals(开发者用法) 与强大的 PDF 库 IronPDF 结合使用,切换模式匹配允许您为文档处理构建更智能、更简洁的逻辑。 阅读更多 C# Span(开发者如何使用)C# WebRTC(开发人员如何使用)
已更新2026年2月20日 架起 CLI 简洁性与 .NET 的桥梁:使用 IronPDF for .NET 的 Curl DotNet Jacob Mellor 通过 CurlDotNet 填补了这一空白,CurlDotNet 库的创建是为了将 cURL 的熟悉感带入 .NET 生态系统。 阅读更多
已更新2025年12月20日 RandomNumberGenerator C# 使用 RandomNumberGenerator C# 类可以帮助将您的 PDF 生成和编辑项目提升到一个新的高度。 阅读更多