フッターコンテンツにスキップ
.NETヘルプ

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プロジェクトに組み込むことができます。 -エクスポーター:これらの部分は、収集されたテレメトリ データをバックエンド システムに送信し、保存および調査できるようにする役割を担います。 Zipkin (トレース)、Prometheus (メトリクス)、Jaeger (トレース) などの広く使用されているバックエンドシステムの多くのエクスポーターは、OpenTelemetry によってサポートされています。 -自動インストルメンテーション:この方法は、.NET Core アプリケーションのプロセスを簡素化します。 OpenTelemetryライブラリは、Webアプリケーションまたはサービス内の一般的な操作のデータを自動的にキャプチャできます。これにより手動のコード修正が不要になり、統合プロセスが簡素化されます。 -手動インストルメンテーション:データ収集を細かく制御するために、OpenTelemetry は手動インストルメンテーション用の堅牢な API を提供します。 このアプローチは、独自のアプリケーションロジックに関連する特定のメトリクスとトレースをキャプチャすることを可能にします。 特に .NET Framework アプリケーションや自動計測が特定のニーズをカバーしていないシナリオで有用です。

.NETでOpenTelemetryを使用する利点

.NETアプリケーションにOpenTelemetryを統合すると、次のような利点があります。

-ベンダー中立性: 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...
}
$vbLabelText   $csharpLabel

"YourServiceName"を実際のサービス名に置き換えます。Jaegerの設定オプションに応じて、Jaegerエージェントホストとポートを調整します。

OpenTelemetryミドルウェアを追加する

ASP.NET Core アプリでは、受信する HTTP リクエストの自動計測を取得するために、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...
}
$vbLabelText   $csharpLabel

トレーシングの開始

すべてをセットアップした後、OpenTelemetryは受信HTTPリクエストを追跡し、設定されたJaegerバックエンドにテレメトリ情報を自動的に送信します。

検証と監視

OpenTelemetryが正常に機能していることを確認するために、Jaegerバックエンドでトレースを確認できます。 Jaeger ユーザーインターフェイスを開きます (通常、http://localhost:16686 で Jaeger UI にアクセス可能) で、あなたのサービスに関連するトレースを探します。

バックエンドシステムの選択(オプション)

OpenTelemetryは基本的なインストゥルメンテーションのためには必須ではありませんが、テレメトリーデータを保存および処理するために他のバックエンドオペレーティングシステムと統合します。 公式にサポートされているオペレーティングシステムには以下のものが含まれます。

  • Jaeger(トレース)
  • Prometheus(メトリクス)
  • Zipkin(トレース)

開始方法

IronPDF とは何ですか?

人気のある.NETパッケージIronPDFは、.NETプログラム内でPDFドキュメントを作成、編集、およびレンダリングすることを可能にします。 PDFを扱うための機能は豊富で、HTMLページのPDFへの変換、PDFからのテキストや画像の抽出、既存のPDFドキュメントへのテキスト、画像、図形の追加、HTMLコンテンツ、画像、または生データからのPDFの作成が含まれます。

IronPDFの主な利点の2つは、その使いやすさとシンプルさです。 開発者はその直感的な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

IronPDFとOpenTelemetryを使用する

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...
}
$vbLabelText   $csharpLabel

このコードは、IronPDFのHtmlToPdfサービスをシングルトンとして構成することによって、アプリケーションがHtmlToPdfのインスタンスを作成して使用することを保証します。

IronPDFとOpenTelemetry.NETを統合することにより、.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;
            }
        }
    }
}
$vbLabelText   $csharpLabel

この例では:

  • HtmlToPdfILoggerTracerProviderDemoControllerに注入します。
  • Generateメソッドはファイルダウンロードを開始し、コンテンツ"Hello, IronPDF!"を持つ動的に作成されたPDFを返します。
  • GeneratePdfメソッドはHtmlToPdf.RenderHtmlAsPdfを使用してPDFをレンダリングし、PDFのバイナリデータを出力します。
  • コードはOpenTelemetryを使用してPDF生成プロセスをトレースし、トレースデータをログに記録します。

上のソースコードから生成されたPDF出力

Opentelemetry .NET (開発者向けの動作方法): 図1 - 上記のコードを使用してIronPDFおよびOpenTelemetryで生成された出力

以下は、Jaeger UIから生成されたトレースの画面です。

Opentelemetry .NET (開発者向けの動作方法): 図2 - Jaeger UIからの生成された出力トレース

結論

OpenTelemetryは.NETアプリケーションのパフォーマンス最適化と健康監視のためのゲームチェンジャーです。 これにより、開発者はベンダーニュートラルで標準化された手法でテレメトリデータ(メトリクス、トレース、ログ)を収集、分析、およびエクスポートすることで、アプリケーションの内部動作を詳細に理解できます。

OpenTelemetry.NETとIronPDFを統合することで、開発者はPDF作成のワークフローを改善し、アプリケーションのパフォーマンスに関する洞察を得ることができます。 OpenTelemetry.NETの実装を活用してPDF生成プロセスを手動でインストゥルメンテーションすることで、開発者は実行経路を追跡し、パフォーマンスメトリクスを監視し、最適化が必要な領域を特定することができます。 さらに、中央監視のメトリクスコレクションと分析がテレメトリデータをオブザーバビリティプラットフォームにエクスポートすることで可能になり、開発者はアプリケーションの健康を維持し、完璧なユーザー体験を提供する能力を得ます。

OpenTelemetry.NETの実装とIronPDFの統合により、開発者のPDF作成ワークフローを強化し、.NETアプリケーションのスケーラビリティ、パフォーマンス、および信頼性を保証できます。 これらの技術の統合は、現代のソフトウェア開発のニーズを満たし、優れた成果をもたらす開発者を支援します。これには、請求書の作成、報告書の作成、またはドキュメントの作成があります。

パッケージとして購入すると、IronPDFは非常にリーズナブルな価格で生涯ライセンスが含まれています。 このパッケージは、単独の料金$799で素晴らしい価値を提供します。これは多くのシステムに対する一度限りの料金です。 ライセンス保有者には24時間365日オンラインのエンジニアリングサポートが提供されます。 Iron Softwareのウェブサイトを訪問して料金についての詳細を確認してください。 彼らが提供するソリューションについてもっと知るためにIron Softwareの製品を探求してください。

よくある質問

OpenTelemetryとは何ですか、そして.NETアプリケーションをどのように強化するのでしょうか?

OpenTelemetryは、クラウドネイティブアプリケーション向けに設計されたベンダーニュートラルな可観測性フレームワークです。ログ、トレース、およびメトリクスのキャプチャ用に標準化されたAPIとSDKを提供し、問題の診断、性能のボトルネックの特定、およびアプリケーションの動作に関する包括的な洞察を得るのに役立ちます。

OpenTelemetryをASP.NET Coreとどのように統合して自動計装を可能にするのでしょうか?

OpenTelemetryは、サービスとミドルウェアを`Startup.cs`ファイルで設定して自動計装を可能にすることで、ASP.NET Coreに統合できます。これには、トレースとエクスポーター(例:Jaeger)を設定してテレメトリデータを送信し、アプリケーションのパフォーマンスを監視することが含まれます。

IronPDFは、.NETアプリケーション向けのPDF生成においてどんな役割を果たしますか?

IronPDFは.NETライブラリで、.NETアプリケーション内でのPDFの作成と操作を簡素化します。HTMLからPDFへの変換、PDFからのテキスト抽出、および透かしや暗号化の追加などの機能をサポートし、PDFドキュメントを扱うための多用途ツールです。

開発者はOpenTelemetryを使用してPDF生成プロセスをどのように追跡および分析できますか?

開発者はOpenTelemetry.NETをIronPDFと統合することで、PDF生成プロセスを追跡し分析できます。この統合により、テレメトリデータの収集と分析が可能になり、PDF生成のワークフローに関する洞察が得られ、アプリケーションのパフォーマンスの最適化が支援されます。

OpenTelemetryを使用して.NETアプリケーションでIronPDFを組み合わせるメリットは何ですか?

OpenTelemetryとIronPDFを.NETアプリケーションで使用することで、アプリケーションのスケーラビリティの向上、パフォーマンス分析の強化、PDF生成ワークフローの最適化など、複数のメリットがあります。この組み合わせを使用することで、開発者はアプリケーションの健全性を効果的に監視・向上させることができます。

開発者はIronPDFを使用してASP.NET CoreアプリケーションでどのようにPDFを生成できますか?

ASP.NET Coreアプリケーション内で、開発者はコントローラーに`HtmlToPdf`クラスを注入し、HTMLコンテンツをPDFとしてレンダリングし、生成されたPDFをダウンロード用のファイル結果として返すことでPDFを生成できます。

OpenTelemetryでバックエンドシステムをサポートしているエクスポーターは何ですか?

OpenTelemetryは、トレース用のJaeger、メトリクス用のPrometheus、トレース用のZipkinなど、さまざまなバックエンドシステム向けのエクスポーターをサポートしています。これらのエクスポーターは、さまざまなシステムでのテレメトリデータの保存と分析を可能にします。

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

Jacob Mellorは、Iron Softwareの最高技術責任者であり、C# PDF技術の開拓者としてその先進的な役割を担っています。Iron Softwareのコアコードベースのオリジナルデベロッパーである彼は、創業時から製品のアーキテクチャを形作り、CEOのCameron Rimingtonと協力してNASA、Tesla、全世界の政府機関を含む50人以上の会社に成長させました。

Jacobは、1998年から2001年にかけてマンチェスター大学で土木工学の第一級優等学士号(BEng)を取得しました。1999年にロンドンで最初のソフトウェアビジネスを立ち上げ、2005年には最初の.NETコンポーネントを作成し、Microsoftエコシステムにおける複雑な問題の解決を専門にしました。

彼の旗艦製品であるIronPDFとIronSuite .NETライブラリは、全世界で3000万以上のNuGetインストールを達成しており、彼の基本コードが世界中で使用されている開発者ツールを支えています。商業的な経験を25年間積み、コードを書くことを41年間続けるJacobは、企業向けのC#、Java、およびPython PDF技術の革新を推進し続け、次世代の技術リーダーを指導しています。