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

PythonアプリケーションにおけるOpenTelemetry

効果的なドキュメント生成と可観測性は、現代のソフトウェア開発でスケーラブルで回復力のあるシステムを開発するための重要な基盤です。 開発者は、オープンソースの可観測性プラットフォームである OpenTelemetry を使用して、分散システムから観測可能なデータを計測、収集、および分析することができます。

開発者は、強力な .NET フレームワークである IronPDF を使用して PDF ドキュメントを簡単に作成、修正、および出力できます。 この記事では OpenTelemetry Python と IronPDF の統合について説明し、これら2つの技術がどのように連携して可観測性と文書作成の可能性を向上させるかを示します。

開発者は、OpenTelemetry API および SDK パッケージを使用して、分散システムからオープンテレメトリーデータを取得、収集、およびエクスポートするための包括的な機能セットにアクセスできます。これは Python における OpenTelemetry プロジェクトの実装です。

OpenTelemetry Python (開発者にとってどのように機能するか): 図1 - OpenTelemetry ホームページ

OpenTelemetry の特徴

Python の OpenTelemetry 計装の注目すべき特徴を調べてみましょう。

分散トレース

  • OpenTelemetry for Python により、開発者は分散システムを通じて要求の経路を追跡することができます。
  • トレースは、サービスに接触した日時を含む要求のシーケンスについての洞察を提供します。
  • 開発者は、Python プログラムを計測して、分散トレースの個別のアクションまたは部分であるスパンを記録することができます。

メトリクスの収集

  • OpenTelemetry Python は、システムの挙動やパフォーマンスに関する数値データを収集する MeterProvider をインポートします。
  • 開発者は、遅延、スループット、エラー率、リソース使用量などの測定を収集するためにアプリケーションを計測できます。
  • これらのメトリクスは、使用パターン、パフォーマンス傾向、システムの健全性についての洞察を提供することで、システム動作の理解を助けます。

コンテキスト伝播

  • OpenTelemetry API パッケージにより、トレースやスパンコンテキストなどの分散コンテキストがサービスの境界を越えて伝播されることが保証され、コンテキスト伝播が容易になります。
  • コンテキスト伝播によりテレメトリーデータがシステムを通過する際に相関付け、文脈化されるため、データの継続性と一貫性が保たれます。

計装ライブラリ

  • OpenTelemetry Python は、既存の Python アプリケーションを計装するために広く使用されているフレームワーク、ライブラリ、プロトコル用の計装パッケージを提供することにより、簡単に計装できます。
  • 計装ライブラリには、Web フレームワーク(Flask や Django など)、データベースクライアント(SQLAlchemy や Pymongo など)、メッセージシステム(Kafka や RabbitMQ など)に対する統合が含まれています。

エクスポートエコシステム

  • OpenTelemetry Python が提供するさまざまなエクスポーターにより、開発者は異なる可観測性システムやバックエンドにテレメトリーデータをエクスポートできます。
  • Jaeger、Zipkin、Prometheus、AWS X-Ray、Google Cloud Trace などの可観測性プラットフォームとの統合がエクスポーターによりサポートされています。
  • 開発者は、テレメトリーデータを長期保管、分析、表示のために1つまたは複数のバックエンドに転送するためにエクスポーターを設定できます。
  • OpenTelemetry Python は、収集されるテレメトリーデータの量を制御するためにさまざまなサンプリング技術をサポートしています。
  • 開発者はカスタムサンプリングロジックを適用するオプションを持ち、一定割合のトレースをサンプリングするように設定するか、要求ヘッダーやルートなどの事前定義されたパラメーターに従ってサンプリングすることができます。

コンテキスト記録

  • OpenTelemetry Python SDK には、テレメトリーデータに加えてコンテキストデータを記録するためのツールがあります。
  • 開発者はコンテキストログを使用してログメッセージにトレースおよびスパンコンテキストを追加することで、トラブルシューティングおよびデバッグのための文脈を提供することができます。

OpenTelemetry Python を作成および設定する

OpenTelemetry の設定を行う

プロジェクト用に OpenTelemetry をセットアップするには、pip install opentelemetry-exporter-jaeger を使用して必要なパッケージをインストールすることから始めます。

pip install opentelemetry-exporter-jaeger
pip install opentelemetry-exporter-jaeger
SHELL

その後、次のコマンドを使用して OpenTelemetry Python SDK をインストールしてください。

pip install opentelemetry-sdk
pip install opentelemetry-sdk
SHELL

opentelemetry-api pip パッケージは計装のための包括的な API を提供し、アプリケーションを計装しやすくする自動計装を提供します。 別の方法として、効率的なテレメトリーデータエクスポートを保証するためにエクスポートインポート BatchSpanProcessor メソッドを使用することができます。

OpenTelemetry SDK のパラメーターを定義するには、設定ファイルを作成します。構成ファイル otel_config.py が例として役立ちます。 すべてのインポートが含まれていることを確認します。たとえば、resources としての Resource インポート、trace としての TracerProvider インポートを含め、コードの例をエラーなく設定できます。

from opentelemetry import trace
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.jaeger.thrift import JaegerExporter

# Configure Jaeger exporter
jaeger_exporter = JaegerExporter(
    agent_host_name="localhost",
    agent_port=6831,
)

# Create a TracerProvider with Jaeger exporter
tracer_provider = TracerProvider(resource=Resource.create({'service.name': 'my-python-service'}))
tracer_provider.add_span_processor(BatchSpanProcessor(jaeger_exporter))
trace.set_tracer_provider(tracer_provider)
from opentelemetry import trace
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.jaeger.thrift import JaegerExporter

# Configure Jaeger exporter
jaeger_exporter = JaegerExporter(
    agent_host_name="localhost",
    agent_port=6831,
)

# Create a TracerProvider with Jaeger exporter
tracer_provider = TracerProvider(resource=Resource.create({'service.name': 'my-python-service'}))
tracer_provider.add_span_processor(BatchSpanProcessor(jaeger_exporter))
trace.set_tracer_provider(tracer_provider)
PYTHON

この構成ファイル内では次のことが行われます。

  • Jaeger エクスポーターがローカルホスト Jaeger エージェントにトレースをエクスポートするように設定されています。
  • Jaeger エクスポーターを使用して TracerProvider を作成し、それをグローバルトレーサープロバイダーとして構成します。
  • Python プログラムのサービス名を提供します。

アプリケーションで OpenTelemetry を初期化する

Python プログラムに otel_config モジュールをインポートし、次の Python コード例で初期化して OpenTelemetry を開始します。

from opentelemetry import trace
from otel_config import tracer_provider

# Initialize OpenTelemetry
trace.get_tracer(__name__)
from opentelemetry import trace
from otel_config import tracer_provider

# Initialize OpenTelemetry
trace.get_tracer(__name__)
PYTHON

このようにすることで、OpenTelemetry 計装のために otel_config.py に記載された構成が初期化されます。

アプリケーションを計装する

OpenTelemetry を使用して Python プログラムを計装し、それによりトレースを記録します。 コードを計装するには、手動で行うか、組み込みライブラリを使用する2つのオプションがあります。 これは、いくつかの手動計装呼び出しの例です。

from opentelemetry import trace

# Start a span
with trace.get_tracer(__name__).start_as_current_span("example_span"):
    # Your code here
    pass
from opentelemetry import trace

# Start a span
with trace.get_tracer(__name__).start_as_current_span("example_span"):
    # Your code here
    pass
PYTHON

Jaeger UI でトレースを表示する

記録されたトレースを確認および調査するには、Jaeger ユーザーインターフェースにアクセスします。 Web ブラウザで Jaeger UI (通常は http://localhost:16686 にあります) を開いて、OpenTelemetry コレクターが記録するトレースを表示するには、サービス名を選択します。

これらの手順に従うことで、アプリケーションに OpenTelemetry Python がうまく確立および構成されていることを確認しました。 今、OpenTelemetry を使用してトレースを記録し、これらを Jaeger バックエンドにエクスポートすることで、Python プログラムの挙動とパフォーマンスを確認できます。

IronPDFを始めよう

IronPDF とは何ですか?

Iron Software の強力な .NET ライブラリ IronPDF を使用することで、開発者は .NET アプリケーション内で PDF ドキュメントを作成、編集、および表示できます。 開発者は、事前に存在する PDF ファイル、HTML テキスト、URL、画像など、さまざまなソースからプログラムを使用して PDF ドキュメントを作成することができます。 IronPDF の機能を詳しく見てみましょう。

OpenTelemetry Python (開発者にとってどのように機能するか): 図2 - IronPDF ホームページ

HTML を PDF に変換する

開発者は IronPDF を使用して HTML コンテンツを簡単に PDF ファイルに変換できます。 HTML テキストを入力として使用することで、形式、画像、スタイルを備えた視覚的に豊かな PDF ドキュメントを開発者が作成できます。

URL を PDF に変換する

開発者は IronPDF を使用して URL から直接 PDF ドキュメントを生成できます。 この機能の優れた応用として、ウェブページからコンテンツをキャプチャしたり、ウェブアプリから動的に生成されたコンテンツをキャプチャすることが挙げられます。

画像を PDF に変換する

IronPDF を使用すれば、PNG、JPEG、および BMP 形式の画像を PDF ドキュメントに変換できます。 この機能は、アプリ開発者が写真から PDF ドキュメントを作成するために、たとえば写真アルバムを作成したり PDF ファイルに写真を組み込むアプリケーションに役立ちます。

IronPDF のインストール方法

Python がコンピュータにインストールされていることを確認した後、pip を使用して IronPDF をインストールします。

 pip install ironpdf

IronPDF を使用して PDF ドキュメントを生成するための OpenTelemetry

IronPDF を使用して PDF を作成する ために、OpenTelemetry の初期化の下に次のコードを追加します。

from ironpdf import ChromePdfRenderer
from opentelemetry import trace

# Generate PDF document with IronPDF
with trace.get_tracer(__name__).start_as_current_span("pdf_generation"):
    iron_pdf = ChromePdfRenderer()
    html_content = "<html><body><h1>Hello, IronPDF!</h1></body></html>"

    pdf_content = iron_pdf.render_html_as_pdf(html_content)

    # Save or send the PDF content as needed
    with open("output.pdf", "wb") as file:
        file.write(pdf_content)
from ironpdf import ChromePdfRenderer
from opentelemetry import trace

# Generate PDF document with IronPDF
with trace.get_tracer(__name__).start_as_current_span("pdf_generation"):
    iron_pdf = ChromePdfRenderer()
    html_content = "<html><body><h1>Hello, IronPDF!</h1></body></html>"

    pdf_content = iron_pdf.render_html_as_pdf(html_content)

    # Save or send the PDF content as needed
    with open("output.pdf", "wb") as file:
        file.write(pdf_content)
PYTHON

このコードの一部では次のことを行います。

  • OpenTelemetry トレーサーを使用して、pdf_generation という新しいスパンが開始されます。
  • HTML マテリアルを PDF ドキュメントに変換するために IronPDF を使用します。
  • 生成された PDF マテリアルは output.pdf というファイルに含まれています。

OpenTelemetry Python (開発者にとってどのように機能するか): 図3 - 上記のコードから生成された出力例

結論

最後に、Python アプリケーションにおける可観測性とドキュメント生成機能の組み合わせが、OpenTelemetry Python と IronPDF の統合によって提供されます。 開発者は、分散トレースとメトリクス収集を動的な PDF 生成と統合することによって、システムパフォーマンスに対するより良い洞察を得ながら、プロフェッショナルな外観のドキュメントをすばやく作成できます。

企業が効率を追求し、ソフトウェアソリューションの卓越性を目指す中で、OpenTelemetry Python と IronPDF の協力は強力な推進者として登場し、開発者が信頼性、スケーラビリティ、およびパフォーマンスに優れたアプリケーションを作成することを可能にします。

IronPDF にはライフタイムライセンスが含まれており、バンドルで購入されるとかなり手頃な価格です。 バンドルは数システム用に一度だけ購入すればよく、たった $799 ですごい取引です。 オンライアエンジニアリングサポートがライセンス所有者に24時間365日利用可能です。料金について詳しく知りたい方は、ウェブサイトをご覧ください。 Iron Software が販売している製品についてさらに知りたい方はこちらのページをご覧ください。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。