メインコンテンツへスキップ
メインコンテンツへスキップ

Python

ClickStack は、テレメトリーデータ(ログとトレース)を収集するために OpenTelemetry の標準を使用します。トレースは自動インストルメンテーションによって自動生成されるため、トレースを活用するために手動でインストルメンテーションを行う必要はありません。

このガイドでは次を統合します:

  • ログ
  • メトリクス
  • トレース

はじめに

ClickStack OpenTelemetry インストルメンテーションパッケージのインストール

次のコマンドで、ClickStack OpenTelemetry パッケージ をインストールします。

pip install hyperdx-opentelemetry

Python アプリケーションで使用しているパッケージ向けの OpenTelemetry 自動計装ライブラリをインストールします。アプリケーションのパッケージをスキャンして利用可能なライブラリのリストを生成するために、OpenTelemetry Python SDK に付属する opentelemetry-bootstrap ツールを使用することを推奨します。

opentelemetry-bootstrap -a install

環境変数を設定する

その後、ClickStack にテレメトリを送信するために、シェル環境で以下の環境変数を設定する必要があります。

export HYPERDX_API_KEY='<あなたの取り込みAPIキー>' \
OTEL_SERVICE_NAME='<アプリまたはサービスの名前>' \
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 

OTEL_SERVICE_NAME 環境変数は、HyperDX アプリ内でサービスを識別するために使用されます。任意の名前を指定できます。

OpenTelemetry Python エージェントでアプリケーションを実行する

OpenTelemetry Python エージェント(opentelemetry-instrument)を使用してアプリケーションを実行できます。

opentelemetry-instrument python app.py

GunicornuWSGI または uvicorn を使用している場合

このような場合は、OpenTelemetry Python エージェントを動作させるには追加の設定が必要です。

プリフォーク型の Web サーバーモードを使用するアプリケーションサーバーで OpenTelemetry を構成するには、post-fork フック内で configure_opentelemetry メソッドを必ず呼び出してください。

from hyperdx.opentelemetry import configure_opentelemetry

def post_fork(server, worker):
    configure_opentelemetry()

高度な設定

ネットワークキャプチャ

ネットワークキャプチャ機能を有効にすることで、開発者は HTTP リクエストヘッダーおよびリクエストボディのペイロードを効果的にデバッグできるようになります。これは、HYPERDX_ENABLE_ADVANCED_NETWORK_CAPTURE フラグを 1 に設定するだけで有効化できます。

export HYPERDX_ENABLE_ADVANCED_NETWORK_CAPTURE=1

トラブルシューティング

ログレベルが原因でログが表示されない場合

デフォルトでは、OpenTelemetry の logging handler は logging.NOTSET レベルを使用しており、 これは結果的に WARNING レベルとして扱われます。logger を作成するときに、 ログレベルを指定できます。

import logging

logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)

コンソールへのエクスポート

OpenTelemetry Python SDK は、通常、エラーが発生するとコンソールにエラーを表示します。しかし、エラーは発生していないにもかかわらず、期待どおりにデータが HyperDX に表示されない場合は、デバッグモードを有効にすることができます。デバッグモードを有効にすると、すべてのテレメトリーデータがコンソールに出力されるため、アプリケーションが期待どおりのデータで正しく計装されているかを確認できます。

export DEBUG=true

Python 向け OpenTelemetry インストルメンテーションの詳細については、こちらのドキュメントをご覧ください: https://opentelemetry.io/docs/instrumentation/python/manual/