メインコンテンツまでスキップ
メインコンテンツまでスキップ

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='<YOUR_INGESTION_API_KEY>' \
OTEL_SERVICE_NAME='<NAME_OF_YOUR_APP_OR_SERVICE>' \
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エージェントが動作するためには追加の変更が必要です。

フォーク前のウェブサーバーモードを使用してアプリケーションサーバーのOpenTelemetryを構成するには、ポストフォークフック内で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.NOTSETレベルを使用し、これがWARNINGレベルになります。ロガーを作成するときにロギングレベルを指定できます:

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/