ライブ環境でテストする
ウォーターマークなしで本番環境でテストしてください。
必要な場所でいつでも動作します。
オープンテレメトリは、アプリケーションからトレース、メトリクス、ログのような遠隔測定データを収集、処理、エクスポートするために連携するツール、API、SDK のセットです。 このチュートリアルは、初心者がC#アプリケーションにOpenTelemetryを拡張メソッドを使用して統合する方法を理解するのを助けることを目的としており、.NETアプリケーションを効果的に監視するための組み込みメトリクスの収集に焦点を当てています。 についても学ぶ。C#でPDFを生成するIronPDFライブラリ.
オープンテレメトリアプリケーションからあらゆる種類のデータを収集するための統一された方法を提供します。 .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を使用したWebアプリケーションからのドキュメントベースの出力サービスやデスクトップアプリケーション。IronPDFをOpenTelemetryと組み合わせることで、開発者はアプリケーション内のPDF生成プロセスのパフォーマンスと信頼性を監視でき、スムーズなユーザーエクスペリエンスを確保します。
まず、IronPDFを.NETプロジェクトに追加する必要があります。 この処理はNuGetパッケージマネージャーを使用して行うことができます。 ターミナルを開いて、プロジェクトのディレクトリに移動してください。 次に、以下のコマンドを実行してIronPDFをインストールします:
dotnet add package IronPDF
以下は、シンプルな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;
}
}
}
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 を作成し、PDFドキュメントを生成するためのメソッド GeneratePdf を含めます。 私たちは、HTMLをPDFドキュメントとしてレンダリングするためにIronPDFのChromePdfRendererクラスを使用します。 OpenTelemetryを使用して、この操作を監視するために「Generate PDF」という名前の新しいアクティビティを開始します。 PDF生成プロセスに関する追加のコンテキストを提供するために、PDFのサイズ、コンテンツタイプ、出力パスなどの情報をカスタムタグとしてアクティビティに追加します。 私たちは同じアクティビティ内でエラーを適切にログに記録するために、例外もキャッチします。
.NET アプリケーションに OpenTelemetry を統合することで、貴重なテレメトリーデータを収集し、アプリケーションのパフォーマンスや動作に関する洞察を提供できます。 このチュートリアルの手順に従うことで、.NET ウェブアプリケーションの基本的なトレーシングおよびメトリクス収集を設定しました。 さらに実験を進めて、テレメトリデータを外部のモニタリングツールにエクスポートする機能や、トレースとメトリクスと共にログを収集する機能など、より高度なOpenTelemetry機能を探索してください。
IronPDFはIronPDFの無料トライアルまた、その全機能をテストするために、本番環境で使用する必要があります。 ライセンスは399ドルから。
9つの .NET API製品 オフィス文書用