.NET幫助 Opentelemetry C#(對於開發者的運行原理) Jacob Mellor 更新:7月 28, 2025 下載 IronPDF NuGet 下載 DLL 下載 Windows 安裝程式 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在雙子座打開 請向 Gemini 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 OpenTelemetry 是一套工具、API 和 SDK,可共同收集、處理和匯出來自應用程式的軌跡、度量和日誌等遙測資料。 本教學旨在幫助初學者瞭解如何使用擴充方法在 C# 應用程式中整合 OpenTelemetry,並將重點放在內建的度量資料收集,以有效監控 .NET 應用程式。 我們還將瞭解 用於 C# 產生 PDF 的 IronPDF 函式庫。 OpenTelemetry 簡介 OpenTelemetry 提供統一的方式從您的應用程式收集各種資料。 對 .NET 開發人員而言,整合 OpenTelemetry 代表您可以更密切地監控您的應用程式,瞭解它們的即時效能,並快速找出問題。 OpenTelemetry 的儀器函式庫可自動啟用 .NET 應用程式的追蹤與度量資料收集功能。 透過 OpenTelemetry Framework 所收集的度量指標,開發人員可獲得對 .NET 執行環境的寶貴洞察力。 OpenTelemetry .NET 實作支援 .NET runtime,包括 .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 Package Manager 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(); }); } Public Sub ConfigureServices(ByVal services As IServiceCollection) services.AddControllers() services.AddOpenTelemetryTracing(Sub(builder) builder.AddAspNetCoreInstrumentation().AddHttpClientInstrumentation().AddConsoleExporter() End Sub) End Sub $vbLabelText $csharpLabel 本程式碼片段展示如何設定 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); }); } Public Sub ConfigureServices(ByVal services As IServiceCollection) services.AddControllers() services.AddOpenTelemetryMetrics(Sub(builder) builder.AddAspNetCoreInstrumentation().AddHttpClientInstrumentation().AddConsoleExporter(Sub(options) options.Targets = ConsoleExporterOutputTargets.Console) End Sub) End Sub $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(); }); Dim meter As New Meter("MyCustomMetrics", "1.0") Dim counter = meter.CreateCounter(Of Integer)("custom_request_count", description:= "Counts custom requests") app.Use(Function(context, [next]) counter.Add(1, New KeyValuePair(Of String, Object)("path", context.Request.Path)) Return [next]() End Function) $vbLabelText $csharpLabel 此程式碼片段示範如何建立自訂指標,以計算對您應用程式的請求,並以請求路徑標記每個指標。 透過利用 OpenTelemetry 提供的擴充方法,開發人員可對遙測資料收集程序進行更仔細的控制。 測試您的整合 使用命令列或 Visual Studio 執行您的應用程式。 向您的應用程式提出一些請求,方法是在網頁瀏覽器中導航至其 URL,或是使用 curl 之類的工具。 您應該可以看到遙測資料,包括軌跡和指標,列印到您的主控台輸出。 curl http://localhost:5000 curl http://localhost:5000 SHELL IronPDF 簡介 IronPDF 是專為 C# 開發人員設計的功能強大的函式庫,可直接在 .NET 應用程式中產生、處理和渲染 PDF 文件。 此功能對於從使用 HTML 的 Web 應用程式、服務或桌面應用程式產生報告、發票或任何 以文件為基礎的輸出尤其有用。結合 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"); } } Imports IronPdf Friend Class Program Shared Sub Main(ByVal args() As String) Dim renderer = New ChromePdfRenderer() ' 1. Convert HTML String to PDF Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>" Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent) pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf") ' 2. Convert HTML File to PDF Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath) pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf") ' 3. Convert URL to PDF Dim url = "http://ironpdf.com" ' Specify the URL Dim pdfFromUrl = renderer.RenderUrlAsPdf(url) pdfFromUrl.SaveAs("URLToPDF.pdf") End Sub End Class $vbLabelText $csharpLabel 設定 IronPDF。 首先,您需要將 IronPDF 加入您的 .NET 專案。 您可以使用 NuGet Package Manager 進行這項工作。 開啟您的終端機,並導航至您的專案目錄。 然後,執行下列指令安裝 IronPdf: dotnet add package IronPDF dotnet add package IronPDF SHELL 使用 IronPDF 生成 PDF 並使用 OpenTelemetry 進行監控 以下是如何使用 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; } } } Imports IronPdf Imports OpenTelemetry.Trace Public Class PdfService Private ReadOnly _tracer As Tracer Public Sub New(ByVal tracer As Tracer) _tracer = tracer End Sub Public Sub GeneratePdf() ' Create a new activity for this operation Dim activity = _tracer.StartActivity("Generate PDF") ' Simulate adding some attributes related to the operation If activity IsNot Nothing Then activity.SetTag("pdf.size", "A4") End If If activity IsNot Nothing Then activity.SetTag("pdf.content", "Hello World") End If Try ' Initialize the PDF generator Dim renderer = New ChromePdfRenderer() ' Generate a PDF from HTML Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>") ' Save the PDF to a file Dim outputPath = "output.pdf" pdf.SaveAs(outputPath) ' Log success If activity IsNot Nothing Then activity.SetTag("pdf.status", "Success") End If If activity IsNot Nothing Then activity.SetTag("pdf.outputPath", outputPath) End If Catch ex As Exception ' Log any exceptions that occur during PDF generation If activity IsNot Nothing Then activity.SetTag("pdf.status", "Error") End If If activity IsNot Nothing Then activity.SetTag("pdf.error", ex.Message) End If Throw End Try End Sub End Class $vbLabelText $csharpLabel 在這個範例中,我們建立一個新的服務類 PdfService,其中包含一個方法 GeneratePdf,用來產生 PDF 文件。 我們使用 IronPDF 的 ChromePdfRenderer 類將 HTML 呈現為 PDF 文件。 透過 OpenTelemetry,我們啟動一個名為"Generate 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 with C# 中使用? 自訂度量是特定於應用程式的資料點,您可以使用 OpenTelemetry 的 Meter 和 Counter 類別手動偵測您的程式碼來收集。 如何確保在 C# 中可靠地產生 PDF? 使用 IronPDF 函式庫可靠地產生、處理及呈現 PDF 文件。IronPDF 提供了強大的功能,以確保您的應用程式能有高品質的 PDF 輸出。 對於協助以 C# 產生 PDF 的函式庫,是否有任何授權選項? IronPdf 提供免費試用版供生產測試使用,授權費從 399 美元起,讓開發人員可以輕鬆探索其完整功能。 如何在 C# 應用程式中測試 OpenTelemetry 整合? 執行您的應用程式,並使用網頁瀏覽器或 curl 等工具提出請求,然後觀察輸出到主控台的軌跡和指標等遙測資料。 Jacob Mellor 立即與工程團隊聊天 首席技术官 Jacob Mellor 是 Iron Software 的首席技術官,作為 C# PDF 技術的先鋒工程師。作為 Iron Software 核心代碼的原作者,他自開始以來塑造了公司產品架構,與 CEO Cameron Rimington 一起將其轉變為一家擁有超過 50 名員工的公司,為 NASA、特斯拉 和 全世界政府機構服務。Jacob 持有曼徹斯特大學土木工程一級榮譽学士工程學位(BEng) (1998-2001)。他於 1999 年在倫敦開設了他的第一家軟件公司,並於 2005 年製作了他的首個 .NET 組件,專注於解決 Microsoft 生態系統內的複雜問題。他的旗艦產品 IronPDF & Iron Suite .NET 庫在全球 NuGet 被安裝超過 3000 萬次,其基礎代碼繼續為世界各地的開發工具提供動力。擁有 25 年的商業經驗和 41 年的編碼專業知識,Jacob 仍專注於推動企業級 C#、Java 及 Python PDF 技術的創新,同時指導新一代技術領袖。 相關文章 更新12月 11, 2025 銜接 CLI 簡化與 .NET : 使用 Curl DotNet 與 IronPDF for .NET Jacob Mellor 藉由 CurlDotNet 彌補了這方面的不足,CurlDotNet 是為了讓 .NET 生態系統能熟悉 cURL 而建立的函式庫。 閱讀更多 更新9月 4, 2025 RandomNumberGenerator C# 使用RandomNumberGenerator C#類可以幫助將您的PDF生成和編輯項目提升至新水準 閱讀更多 更新9月 4, 2025 C#字符串等於(它如何對開發者起作用) 當結合使用強大的PDF庫IronPDF時,開關模式匹配可以讓您構建更智能、更清晰的邏輯來進行文檔處理 閱讀更多 C# Span(對於開發者的運行原理)C# WebRTC(對於開發者的運...
更新12月 11, 2025 銜接 CLI 簡化與 .NET : 使用 Curl DotNet 與 IronPDF for .NET Jacob Mellor 藉由 CurlDotNet 彌補了這方面的不足,CurlDotNet 是為了讓 .NET 生態系統能熟悉 cURL 而建立的函式庫。 閱讀更多