在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
開放遙測是一套工具、API 和 SDK,可协同工作以收集、处理并导出來自您的應用程序的遙測數據,如追蹤、指標和日誌。 本教程旨在幫助初學者理解如何在 C# 應用程式中使用擴展方法整合 OpenTelemetry,重點在於內建的度量收集,以有效地監控 .NET 應用程式。 我們還將了解有關IronPDF 庫用於在 C# 中生成 PDF.
開放遙測提供一種統一的方法從您的應用程式中收集各種數據。 對於 .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
此命令會在一個名為 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();
});
}
Public Sub ConfigureServices(ByVal services As IServiceCollection)
services.AddControllers()
services.AddOpenTelemetryTracing(Sub(builder)
builder.AddAspNetCoreInstrumentation().AddHttpClientInstrumentation().AddConsoleExporter()
End Sub)
End Sub
以下程式碼片段顯示如何配置 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
此設置可從 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)
此代碼片段演示如何創建一個自定義指標,用於計算對應用程式的請求,並使用請求路徑標記每個指標。 透過利用OpenTelemetry提供的擴展方法,開發人員可以對遙測數據收集過程進行更精細的控制。
使用命令行或 Visual Studio 運行您的應用程序。 請透過網頁瀏覽器瀏覽應用程式的 URL 或使用像 curl 這樣的工具向您的應用程式發送一些請求。 您應該會在主控台輸出中看到遙測數據,包括追蹤和指標。
curl http://localhost:5000
IronPDF 是一個強大的庫,專為 C# 開發者設計,使得可以在 .NET 應用程式中直接生成、操作和呈現 PDF 文件。 此功能特別適用於生成報告、發票或任何使用 HTML 從網路應用程式生成基於文件的輸出,服務或桌面應用程式。結合 IronPDF 與 OpenTelemetry,開發者可以監控應用程式內 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;
}
}
}
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
在此範例中,我們創建了一個新的服務類 PdfService,其中包含一個方法 GeneratePdf 用於生成 PDF 文件。 我們使用 IronPDF 的 ChromePdfRenderer 類將 HTML 呈現為 PDF 文件。 使用 OpenTelemetry,我們開始一個名為「Generate PDF」的新活動來監控此操作。 我們為活動添加自定義標籤,以提供關於 PDF 生成過程的額外上下文,例如 PDF 的大小、內容類型和輸出路徑。 我們也會捕捉任何例外,將錯誤適當地記錄在相同的活動中。
將 OpenTelemetry 整合到您的 .NET 應用程式中,可以收集有價值的遙測數據,提供對應用程式性能和行為的深入瞭解。 透過遵循本教程中列出的步驟,您已經為 .NET 網路應用程式設置了基本的追蹤和指標收集。 進一步實驗,探索更高級的OpenTelemetry功能,例如將遙測數據匯出到外部監控工具或收集日誌與跟踪和指標一起使用。
IronPDF 提供一個IronPDF 免費試用用於生產以測試其全部功能。 授權的起價僅為 $399。