OpenTelemetry .NET(開發者使用指南)
介紹
創建動態的、數據驅動的、內容豐富的 PDF 文件是現代軟體開發許多領域的典型需求。 企業非常依賴其快速產生高品質 PDF 的能力,無論是用於建立帳單、報告還是文件。 然而,隨著應用程式變得越來越複雜和規模越來越大,追蹤和了解 PDF 生成過程的有效性對於維護應用程式的健康並確保用戶滿意度至關重要。
本文旨在探討開發人員如何利用 IronPDF 和 OpenTelemetry.NET 的功能來改進 PDF 生成操作,並提供有關應用程式效能的重要見解。 我們將探討這兩種技術的特點和優勢,並展示它們如何和諧地協同工作,以優化 .NET 應用程式中 PDF 的創建和監控。
什麼是 OpenTelemetry?
OpenTelemetry 是一個廠商中立的可觀測框架,專為雲端原生應用而設計。 OpenTelemetry 的自動插樁功能提供了一個統一的 API,用於收集遙測信息,包括日誌、追蹤和指標。 利用這些豐富的數據,開發人員可以有效地調試問題、找出效能瓶頸並全面了解程式行為。 OpenTelemetry 支援自動和手動儀器,可實現全面且靈活的遙測資料擷取。
OpenTelemetry 的關鍵組成部分
- API:為了偵測應用程式並產生遙測數據,OpenTelemetry 定義了一套標準化的 API。這簡化了檢測流程,並保證了不同程式語言之間的一致性。
- SDK: 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...
}請將"YourServiceName"替換為您的服務的實際名稱。根據您的 Jaeger 設定選項調整 Jaeger 代理的主機和連接埠。
新增 OpenTelemetry 中介軟體
若要自動偵測傳入的 HTTP 請求,必須在 ASP.NET Core 應用程式中包含 OpenTelemetry 中間件。 在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...
}開始追蹤
設定完成後,OpenTelemetry 將開始追蹤傳入的 HTTP 請求,並自動將遙測資訊傳送到設定的 Jaeger 後端。
核實和監控
您可以檢查 Jaeger 後端中的追蹤訊息,以確認 OpenTelemetry 是否正常運作。 開啟 Jaeger 使用者介面(Jaeger UI 通常可透過http://localhost:16686存取),並尋找與您的服務相關的追蹤資訊。
選擇後端系統(可選)
OpenTelemetry 對於基本儀器來說並非必需,但它可以與其他後端作業系統集成,以儲存和處理遙測資料。 常用選項包括官方支援的作業系統:
- Jaeger(追蹤)
- 普羅米修斯(指標) Zipkin(描圖)
入門
IronPDF是什麼?
流行的 .NET 軟體包IronPDF可讓您在 .NET 程式中建立、編輯和渲染 PDF 文件。 PDF 的處理功能眾多,包括將 HTML 頁面轉換為 PDF、從 PDF 中提取文字和圖像、為現有的 PDF 文件添加文字、圖像和形狀,以及從 HTML 內容、照片或原始資料生成 PDF。
IronPDF 的兩大主要優勢在於其易用性和簡潔性。 由於 .NET 具有直覺的 API 和全面的文檔,開發人員可以輕鬆地在 .NET 專案中建立 PDF。 IronPDF 的高效率和速度是其額外的特性,可以幫助開發人員快速且有效率地建立高品質的 PDF 文件。
IronPDF的一些優點:
- 從 HTML、圖片和原始資料產生 PDF 文件 從PDF文件中提取文字和圖片
- 在 PDF 檔案中新增浮水印、頁首和頁腳 PDF 文件受加密和密碼保護。
- 具備電子簽名和填寫表格的能力
安裝 NuGet 套件
OpenTelemetry 提供了多個適用於不同元件的 NuGet 套件。 您可以根據需要安裝所需的軟體包。 要將遙測資料傳送到可觀測性後端(例如 Jaeger、Zipkin 或 Prometheus),您至少需要 OpenTelemetry 套件、應用程式框架(例如 ASP.NET Core)的偵測套件和匯出器套件。 另外,請確保您的專案中已安裝 IronPDF 軟體包。 要安裝它,請使用 NuGet 套件管理器控制台:
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,請包含以下程式碼。
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...
}這段程式碼透過將 IronPDF 的HtmlToPdf服務配置為單例,確保僅由應用程式建立和使用HtmlToPdf實例。
您可以透過將 OpenTelemetry.NET 與 IronPDF 集成,在 .NET 應用程式中追蹤和觀察 PDF 生成流程。 讓我們深入分析這段程式碼範例,一步一步講解:
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;
}
}
}
}在這個例子中:
- 我們將
HtmlToPdf、ILogger和TracerProvider注入DemoController。 Generate方法啟動文件下載,傳回一個動態建立的 PDF 文件,其內容為"Hello, IronPDF!"。GeneratePdf方法使用HtmlToPdf.RenderHtmlAsPdf渲染 PDF 並輸出 PDF 的二進位資料。- 該程式碼使用 OpenTelemetry 追蹤 PDF 生成過程並記錄追蹤資料。
根據上述原始碼產生的PDF輸出:
OpenTelemetry .NET(開發者使用方法):圖 1 - 使用 IronPDF 和 OpenTelemetry 從上述程式碼產生的輸出
以下是 Jaeger UI 產生的追蹤螢幕截圖:
結論
OpenTelemetry 為 .NET 應用程式效能最佳化和健康監控帶來了變革。 它為開發人員提供了一種與供應商無關且標準化的方法來收集、分析和匯出遙測資料(指標、追蹤和日誌),從而使開發人員能夠全面了解其應用程式的內部運作。
透過將 OpenTelemetry.NET 與 IronPDF 集成,開發人員可以改進創建 PDF 的工作流程,並深入了解其應用程式的效能。 透過利用 OpenTelemetry.NET 實現手動檢測 PDF 生成流程,開發人員可以追蹤執行路徑、監控效能指標並精確定位需要最佳化的區域。 此外,透過將遙測資料匯出到可觀測性平台,可以集中收集和分析監控指標,使開發人員能夠維護其應用程式的健康並提供完美的使用者體驗。
OpenTelemetry.NET 實現與 IronPDF 的整合可增強開發人員創建 PDF 的工作流程,並確保 .NET 應用程式的可擴展性、效能和可靠性。 這些技術的整合有助於開發人員滿足現代軟體開發的需求,並產生出色的成果,無論是建立發票、報告還是文件。
IronPDF 套裝價格合理,並包含終身許可證。 軟體包物超所值,只需$799 ,對於許多系統而言,這是一次性費用。 它為許可證持有者提供全天候線上工程支援。 請造訪Iron Software 網站以了解更多收費詳情。 瀏覽Iron Software 的產品,了解他們提供的解決方案。
常見問題解答
什麼是 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 生成工作流程。這種組合使開發人員能夠有效地監控和改善應用程式的運作狀況。
開發人員如何使用 IronPDF 在 ASP.NET Core 應用程式中產生 PDF?
在 ASP.NET Core 應用程式中,開發人員可以透過將 `HtmlToPdf` 類別注入到控制器中來產生 PDF,將 HTML 內容渲染為 PDF,然後將產生的 PDF 作為文件結果返回以供下載。
OpenTelemetry 支援哪些後端系統匯出器?
OpenTelemetry 支援多種後端系統導出器,包括用於追蹤的 Jaeger、用於指標的 Prometheus 和用於追蹤的 Zipkin。這些導出器能夠在不同系統中儲存和分析遙測資料。







