在生产环境中测试,无水印。
随时随地满足您的需求。
获得30天的全功能产品。
几分钟内就能启动并运行。
在您的产品试用期间,全面访问我们的支持工程团队。
OpenTelemetry是一套工具、API 和 SDK,可共同收集、处理和导出应用程序中的跟踪、度量和日志等遥测数据。 本教程旨在帮助初学者了解如何使用扩展方法在 C# 应用程序中集成 OpenTelemetry,重点是内置指标收集,以有效监控 .NET 应用程序。 我们还将了解用 C# 生成 PDF 的 IronPDF 库.
OpenTelemetry该工具提供了一种从应用程序中收集各种数据的统一方法。 对于 .NET 开发人员来说,集成 OpenTelemetry 意味着您可以更密切地监控应用程序,了解它们的实时运行情况,并快速发现问题。 OpenTelemetry 的仪器库可自动跟踪 .NET 应用程序并收集指标。
通过 OpenTelemetry Framework 收集的指标,开发人员可以获得对 .NET 运行环境的宝贵见解。 OpenTelemetry .NET 实现支持 .NET 运行时,包括 .NET Core 和 .NET Framework。 它遵循 OpenTelemetry 协议,用于标准化遥测数据收集。
首先,您需要在计算机上安装 .NET SDK。如果您使用的是 Visual Studio,它很可能自带 .NET SDK。 您可以打开命令行并运行以下命令来检查当前的 .NET SDK 版本:
dotnet --version
接下来,运行.NET Framework 3.0,创建一个新的 .NET Web 项目:
dotnet new web -o MyTelemetryApp
cd MyTelemetryApp
此命令将在名为 MyTelemetryApp 的目录下创建一个新的 ASP.NET Core 项目。
首先,将必要的 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>
更换
添加必要的软件包后,您需要在应用程序中配置 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();
});
}
本代码片段展示了如何配置 OpenTelemetry 从 ASP.NET Core 应用程序和 HTTP 客户端调用中收集遥测数据,然后将这些数据导出到控制台。 AddAspNetCoreInstrumentation 方法可自动启用对传入 ASP.NET Core 应用程序的 HTTP 请求的检测。
要收集指标,您还需要配置 OpenTelemetry Metrics 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);
});
}
此设置可从 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();
});
本代码片段演示了如何创建一个自定义指标,用于统计对应用程序的请求,并用请求路径标记每个指标。 通过利用 OpenTelemetry 提供的扩展方法,开发人员可以对遥测数据收集过程进行更精细的控制。
使用命令行或 Visual Studio 运行应用程序。 通过在网络浏览器中导航到应用程序的 URL 或使用 curl 等工具,向应用程序提出一些请求。 您应该看到遥测数据(包括跟踪和指标)被打印到控制台输出中。
curl http://localhost:5000
IronPDF 是面向 C# 开发人员的强大库,可直接在 .NET 应用程序中生成、处理和渲染 PDF 文档。 这种能力尤其适用于生成报告、发票或任何其他文件。使用 HTML 从网络应用程序输出基于文档的内容IronPDF 可为开发人员的应用程序、服务或桌面应用程序提供支持。将 IronPDF 与 OpenTelemetry 相结合,开发人员就可以监控其应用程序中 PDF 生成过程的性能和可靠性,从而确保流畅的用户体验。
IronPDF 在以下方面表现出色HTML 转 PDF转换,确保精确保留原始布局和样式。 它非常适合从基于网络的内容(如报告、发票和文档)创建PDF。 IronPDF 支持 HTML 文件、URL 和原始 HTML 字符串,能够轻松生成高质量的 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");
}
}
首先,您需要将 IronPDF 添加到您的 .NET 项目中。 您可以使用 NuGet 软件包管理器来完成这项工作。 打开终端并导航到项目目录。 然后,运行以下命令安装 IronPDF:
dotnet add package IronPDF
以下是如何使用 OpenTelemetry 生成简单 PDF 文档并监控操作的示例。 下面的示例假定您已经在应用程序中配置了 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;
}
}
}
在本例中,我们创建了一个新的服务类 PDFService,其中包含一个用于生成 PDF 文档的方法 GeneratePdf。 我们使用 IronPDF 的 ChromePdfRenderer 类将 HTML 呈现为 PDF 文档。 通过 OpenTelemetry,我们启动了一个名为 "生成 PDF "的新活动来监控该操作。 我们在活动中添加了自定义标签,以提供有关 PDF 生成过程的额外上下文,例如 PDF 的大小、内容类型和输出路径。 我们还要捕捉任何异常情况,以便在同一活动中适当记录错误。
将 OpenTelemetry 集成到您的 .NET 应用程序中,您就可以收集宝贵的遥测数据,深入了解应用程序的性能和行为。 按照本教程概述的步骤,您已经为 .NET 网络应用程序设置了基本的跟踪和指标收集功能。 通过探索更高级的 OpenTelemetry 功能,如将遥测数据导出到外部监控工具或收集日志以及跟踪和指标,进一步进行实验。
IronPDF 提供一个免费试用 IronPDF我们将在本文档的最后一部分中介绍我们的产品,以测试其全部功能。 许可证起价低至 399 美元。