Python アプリケーションのトレース

Python アプリケーションのトレース

互換性要件

Python のバージョン 2.7+ および 3.5+ 以降がサポートされています。サポート対象のライブラリの一覧については、互換性要件ページをご覧ください。

インストールと利用開始

アプリ内のドキュメントに従ってください (推奨)

Datadog アプリ内のクイックスタート手順に従って、最高のエクスペリエンスを実現します。例:

  • デプロイコンフィギュレーション (ホスト、Docker、Kubernetes、または Amazon ECS) を範囲とする段階的な手順。
  • serviceenvversion タグを動的に設定します。
  • セットアップ中に Continuous Profiler、トレースの 100% の取り込み、およびトレース ID 挿入を有効にします。

それ以外の場合、Python で記述されたアプリケーションのトレースを開始するには、Datadog トレーシングライブラリ ddtrace を、pip を使用してインストールします。

pip install ddtrace

注: このコマンドは pip バージョン 18.0.0 以上が必要です。Ubuntu、Debian、またはその他のパッケージマネージャーをお使いの場合は、以下のコマンドで pip バージョンを更新してください。

sudo -H pip3 install --upgrade pip

Python アプリケーションをインスツルメントするには、記載されている ddtrace-run コマンドを使用します。これを使用するには、Python エントリーポイントコマンドを ddtrace-run でプレフィックスします。

たとえば、アプリケーションが python app.py で始まる場合、次のようになります。

ddtrace-run python app.py

APM に Datadog Agent を構成する

インスツルメントされたアプリケーションからトレースを受信するように Datadog Agent をインストールして構成します。デフォルトでは、Datadog Agent は datadog.yaml ファイルの apm_enabled: true で有効になっており、localhost:8126 でトレーストラフィックをリッスンします。コンテナ化環境の場合、以下のリンクに従って、Datadog Agent 内でトレース収集を有効にします。

  1. メインの datadog.yaml コンフィギュレーションファイルapm_non_local_traffic: true を設定します

  2. コンテナ化された環境でトレースを受信するように Agent を構成する方法については、それぞれの説明を参照してください。


  1. アプリケーションをインスツルメント化した後、トレースクライアントはデフォルトでトレースを localhost:8126 に送信します。これが正しいホストとポートでない場合は、以下の環境変数を設定して変更します。

    DD_AGENT_HOSTDD_TRACE_AGENT_PORT

    コードにホスト名とポートを設定できます:

    import os
    from ddtrace import tracer
    
    tracer.configure(
        hostname="custom-hostname",
        port="1234",
    )
    
  1. Datadog Agent の DD_SITEに設定して、Agent が正しい Datadog の場所にデータを送信するようにします。

AWS Lambda で Datadog APM を設定するには、サーバーレス関数のトレースドキュメントを参照してください。

トレースは、HerokuCloud FoundryAWS Elastic BeanstalkAzure App Services Extension など、他の多くの環境で利用できます。

その他の環境については、その環境のインテグレーションのドキュメントを参照し、セットアップの問題が発生した場合はサポートにお問い合わせください。

より高度な使用方法、コンフィギュレーション、細かい制御については、Datadog の API ドキュメントを参照してください。

コンフィギュレーション

ddtrace-run を使用する場合、次の環境変数 (オプション) を利用できます。

DD_TRACE_DEBUG
デフォルト: false
トレーサーでデバッグロギングを有効化します。
DATADOG_PATCH_MODULES
このアプリケーションの実行のためにパッチされたモジュールをオーバーライドします。次のような形式になります。 DATADOG_PATCH_MODULES=module:patch,module:patch...

サービスに envserviceversion を設定するには、DD_ENVDD_SERVICEDD_VERSION を使用することをおすすめします。このような環境変数の構成におすすめの方法については、統合サービスタグ付けのドキュメントをご参照ください。

DD_ENV
アプリケーションの環境 (例: prodpre-prodstaging) を設定します。詳細については、環境の設定方法を参照してください。バージョン 0.38 以降で利用可能。
DD_SERVICE
このアプリケーションで使用するサービス名。値は、Web フレームワークのインテグレーション (例: Pylons、Flask、Django) 用のミドルウェアを設定する際にパススルーされます。Web インテグレーションを行わずにトレースする場合は、コード内でサービス名を設定することをお勧めします。バージョン 0.38 以降で利用可能。
DD_SERVICE_MAPPING
サービス名のマッピングを定義し、トレース内におけるサービスの名前変更を許可します (例: postgres:postgresql,defaultdb:postgresql)。バージョン 0.47 以降で利用可能。
DD_VERSION
アプリケーションのバージョン (例: 1.2.36c44da202020.02.13) を設定します。バージョン 0.38 以降で利用可能。
DD_TAGS
すべてのスパンとプロファイルに追加されるデフォルトタグのリスト (例: layer:api,team:intake)。バージョン 0.38 以降で利用可能。
DD_TRACE_ENABLED
デフォルト: true
Web フレームワークとライブラリインスツルメンテーションを有効にします。false の場合、アプリケーションコードはトレースを生成しません。
DD_AGENT_HOST
デフォルト: localhost
デフォルトのトレーサーがトレースの送信を試みるトレースエージェントホストの宛先アドレスをオーバーライドします。
DATADOG_TRACE_AGENT_PORT
デフォルト: 8126
デフォルトのトレーサーがトレースを送信する宛先ポートをオーバーライドします。
DD_TRACE_AGENT_URL
トレーサーが送信するトレース Agent の URL。設定した場合、ホスト名およびポートより優先されます。datadog.yaml ファイルの apm_config.receiver_socket または  DD_APM_RECEIVER_SOCKET 環境変数と組み合わせて、Unix ドメインソケットをサポートします。
DD_LOGS_INJECTION
デフォルト: false
ログとトレースの挿入を接続するを有効にします。

その他の参考資料