.NETヘルプ Opentelemetry C#(開発者向けの動作方法) Curtis Chau 更新日:7月 28, 2025 Download IronPDF NuGet Download テキストの検索と置換 テキストと画像のスタンプ Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Grok Ask Grok about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article OpenTelemetryは、トレース、メトリクス、ログなどのテレメトリデータをアプリケーションから収集、処理、エクスポートするためのツール、API、SDKのセットです。 このチュートリアルは、初心者がOpenTelemetryをC#アプリケーションに統合する方法を理解するのに役立ち、.NETアプリケーションを効果的に監視するための組み込みメトリクス収集に焦点を当てています。 さらに、C#でのPDF生成のためのIronPDFライブラリについて学びます。 OpenTelemetryの紹介 OpenTelemetryは、アプリケーションからさまざまなデータを収集するための統一された方法を提供します。 .NET開発者にとって、OpenTelemetryを統合することは、アプリケーションの監視をより密接に行い、リアルタイムでのパフォーマンスを理解し、問題を迅速に特定することを意味します。 OpenTelemetryのインスツルメンテーションライブラリは、.NETアプリのトレーシングとメトリクス収集を自動的に有効にします。 OpenTelemetryフレームワークで収集されたメトリクスにより、開発者は.NETランタイム環境に関する貴重な洞察を得ることができます。 OpenTelemetry .NET実装は、.NET Coreや.NET Frameworkを含む.NETランタイムをサポートしています。 標準化されたテレメトリデータ収集のための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 このコードスニペットは、ASP.NET CoreアプリケーションおよびHTTPクライアントからのテレメトリデータを収集し、コンソールにエクスポートするためのOpenTelemetryの設定方法を示しています。 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 への変換に秀でており、元のレイアウトとスタイルを正確に保存します。 これは、レポート、請求書、ドキュメントなどの Web ベースのコンテンツから PDF を作成するのに最適です。 HTML ファイル、URL、または生の HTML 文字列のサポートにより、IronPDF は高品質な 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のセットアップ 最初に、.NETプロジェクトにIronPDFを追加する必要があります。 これをNuGet Package Managerを使用して行うことができます。 ターミナルを開いてプロジェクトディレクトリに移動します。 次に、IronPDFをインストールするために、以下のコマンドを実行します: dotnet add package IronPDF dotnet add package IronPDF SHELL IronPDFでPDFを生成し、OpenTelemetryで監視する 以下は、簡単な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 $vbLabelText $csharpLabel この例では、PDFドキュメントを生成するためのメソッドGeneratePdfを含む新しいサービスクラスPdfServiceを作成します。 HTMLをPDFドキュメントとしてレンダリングするために、IronPDFのChromePdfRendererクラスを使用します。 OpenTelemetryを使用して、この操作を監視するために「Generate PDF」という新しいアクティビティを開始します。 PDF生成プロセスに関する追加のコンテキストを提供するために、PDFのサイズ、コンテンツタイプ、出力パスなどのカスタムタグをアクティビティに追加します。 また、同じアクティビティ内でエラーを適切にログに記録するために例外をキャッチします。 結論 .NETアプリケーションにOpenTelemetryを統合すると、アプリケーションのパフォーマンスと動作に関する貴重なテレメトリデータを収集できます。 このチュートリアルで説明されている手順に従って、.NET Webアプリケーションの基本的なトレースとメトリクス収集を設定しました。 テレメトリデータを外部のモニタリングツールにエクスポートしたり、トレースやメトリクスに加えてログを収集したりするなど、OpenTelemetryの高度な機能を探求してさらに実験してください。 IronPDFは、その完全な機能を試すためにIronPDFの無料トライアルを提供しています。 ライセンスは$399からです。 よくある質問 C#開発におけるOpenTelemetryの目的は何ですか? OpenTelemetryは、トレース、メトリクス、ログなどのテレメトリーデータを収集、処理、エクスポートするための統一されたアプローチを提供し、開発者がリアルタイムでアプリケーションのパフォーマンスを監視し、理解することを可能にします。 C#アプリケーションにOpenTelemetryを統合し始めるにはどうすればよいですか? 最初に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生成のアクティビティを作成し、モニタリングのためにプロセスに関する関連情報をログに記録するカスタムタグを追加します。 カスタムメトリクスとは何で、C#でOpenTelemetryと共にどのように使用できますか? カスタムメトリクスは、OpenTelemetryのMeterとCounterクラスを使用してコードに手動でインストルメンテーションを施すことにより収集できるアプリケーション固有のデータポイントです。 C#で信頼性の高いPDF生成を確保するにはどうすればよいですか? IronPDFライブラリを使用してPDFドキュメントを生成、操作、およびレンダリングします。IronPDFは、アプリケーションで高品質なPDF出力を確保するための堅牢な機能を提供します。 C#でのPDF生成を支援するライブラリに利用可能なライセンスオプションはありますか? IronPDFは、$399から始まるライセンスで試用版を提供しており、開発者がその完全な機能を探求することができます。 C#アプリケーションでOpenTelemetry統合をテストするにはどうすればよいですか? アプリケーションを実行し、Webブラウザやcurlのようなツールを使用してリクエストを行い、その後、コンソールに出力されたトレースやメトリクスなどのテレメトリーデータを観察します。 Curtis Chau 今すぐエンジニアリングチームとチャット テクニカルライター Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。 関連する記事 更新日 9月 4, 2025 RandomNumberGenerator C# RandomNumberGenerator C#クラスを使用すると、PDF生成および編集プロジェクトを次のレベルに引き上げることができます 詳しく読む 更新日 9月 4, 2025 C# String Equals(開発者向けの仕組み) 強力なPDFライブラリであるIronPDFと組み合わせることで、switchパターンマッチングは、ドキュメント処理のためのよりスマートでクリーンなロジックを構築できます 詳しく読む 更新日 8月 5, 2025 C# Switch Pattern Matching(開発者向けの仕組み) 強力なPDFライブラリであるIronPDFと組み合わせることで、switchパターンマッチングは、ドキュメント処理のためのよりスマートでクリーンなロジックを構築できます 詳しく読む C# Span(開発者向けの動作方法)C# WebRTC(開発者向けの動...
更新日 9月 4, 2025 RandomNumberGenerator C# RandomNumberGenerator C#クラスを使用すると、PDF生成および編集プロジェクトを次のレベルに引き上げることができます 詳しく読む
更新日 9月 4, 2025 C# String Equals(開発者向けの仕組み) 強力なPDFライブラリであるIronPDFと組み合わせることで、switchパターンマッチングは、ドキュメント処理のためのよりスマートでクリーンなロジックを構築できます 詳しく読む
更新日 8月 5, 2025 C# Switch Pattern Matching(開発者向けの仕組み) 強力なPDFライブラリであるIronPDFと組み合わせることで、switchパターンマッチングは、ドキュメント処理のためのよりスマートでクリーンなロジックを構築できます 詳しく読む