Python
ClickStackは、テレメトリーデータ(ログとトレース)を収集するためにOpenTelemetry標準を使用しています。トレースは自動計測により自動生成されるため、トレーシングから価値を引き出すために手動での計測は必要ありません。
このガイドは以下を統合しています:
- ログ
- メトリック
- トレース
始めに
ClickStack OpenTelemetry計測パッケージのインストール
次のコマンドを使用してClickStack OpenTelemetryパッケージをインストールします。
Pythonアプリケーションで使用されるパッケージのために、OpenTelemetry自動計測ライブラリをインストールします。アプリケーションパッケージをスキャンして利用可能なライブラリのリストを生成するために、OpenTelemetry Python SDKに付属のopentelemetry-bootstrap
ツールを使用することをお勧めします。
環境変数の設定
その後、テレメトリをClickStackに送信するために、シェル内で以下の環境変数を設定する必要があります:
OTEL_SERVICE_NAME
環境変数は、HyperDXアプリでサービスを識別するために使用され、任意の名前を付けることができます。
OpenTelemetry Pythonエージェントでアプリケーションを実行する
これで、OpenTelemetry Pythonエージェント(opentelemetry-instrument
)を使用してアプリケーションを実行できます。
Gunicorn
、uWSGI
、またはuvicorn
を使用している場合
この場合、OpenTelemetry Pythonエージェントが動作するためには追加の変更が必要です。
フォーク前のウェブサーバーモードを使用してアプリケーションサーバーのOpenTelemetryを構成するには、ポストフォークフック内でconfigure_opentelemetry
メソッドを呼び出すことを確認してください。
- Gunicorn
- uWSGI
- uvicorn
OpenTelemetryは、--reload
フラグを使用して実行されるuvicorn
やマルチワーカー(--workers
)では現在動作しません。テスト中はこれらのフラグを無効にするか、Gunicornを使用することをお勧めします。
高度な構成
ネットワークキャプチャ
ネットワークキャプチャ機能を有効にすることで、開発者はHTTPリクエストヘッダーやボディペイロードを効果的にデバッグする能力を得ます。これは、HYPERDX_ENABLE_ADVANCED_NETWORK_CAPTURE
フラグを1に設定するだけで実現できます。
トラブルシューティング
ログレベルによるログ未表示
デフォルトでは、OpenTelemetryのロギングハンドラーはlogging.NOTSET
レベルを使用し、これがWARNINGレベルになります。ロガーを作成するときにロギングレベルを指定できます:
コンソールへのエクスポート
OpenTelemetry Python SDKは、エラーが発生すると通常コンソールに表示します。しかし、エラーに遭遇しないがデータがHyperDXに期待通りに表示されない場合は、デバッグモードを有効にするオプションがあります。デバッグモードが有効になると、すべてのテレメトリーがコンソールに印刷され、アプリケーションが期待されるデータで正しく計測されているかどうかを確認できます。
Python OpenTelemetry計測についての詳しい情報は、こちらを参照してください: https://opentelemetry.io/docs/instrumentation/python/manual/