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 エージェントを動作させるには追加の設定が必要です。
プリフォーク型の Web サーバーモードを使用するアプリケーションサーバーで OpenTelemetry を構成するには、post-fork フック内で configure_opentelemetry メソッドを必ず呼び出してください。
- Gunicorn
- uWSGI
- uvicorn
OpenTelemetry は、--reload フラグを付けて実行された uvicorn や、マルチワーカー(--workers)構成では現在は動作しません。テスト時はこれらのフラグを無効にするか、代わりに Gunicorn を使用することを推奨します。
高度な設定
ネットワークキャプチャ
ネットワークキャプチャ機能を有効にすることで、開発者は HTTP リクエストヘッダーおよびリクエストボディのペイロードを効果的にデバッグできるようになります。これは、HYPERDX_ENABLE_ADVANCED_NETWORK_CAPTURE フラグを 1 に設定するだけで有効化できます。
トラブルシューティング
ログレベルが原因でログが表示されない場合
デフォルトでは、OpenTelemetry の logging handler は logging.NOTSET レベルを使用しており、
これは結果的に WARNING レベルとして扱われます。logger を作成するときに、
ログレベルを指定できます。
コンソールへのエクスポート
OpenTelemetry Python SDK は、通常、エラーが発生するとコンソールにエラーを表示します。しかし、エラーは発生していないにもかかわらず、期待どおりにデータが HyperDX に表示されない場合は、デバッグモードを有効にすることができます。デバッグモードを有効にすると、すべてのテレメトリーデータがコンソールに出力されるため、アプリケーションが期待どおりのデータで正しく計装されているかを確認できます。
Python 向け OpenTelemetry インストルメンテーションの詳細については、こちらのドキュメントをご覧ください: https://opentelemetry.io/docs/instrumentation/python/manual/