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

互換性要件

最新の Python トレーサーは、CPython バージョン 2.7 と 3.5-3.10 に対応しています。

Datadog の Python バージョンとフレームワークのサポート一覧 (レガシーバージョンとメンテナンスバージョンを含む) については、互換性要件ページをご覧ください。

インストールと利用開始

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

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

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

APM に Datadog Agent を構成する

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

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

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

Docker
Kubernetes
Amazon ECS
ECS Fargate

  1. アプリケーションがインスツルメントされた後、トレースクライアントはデフォルトで Unix ドメインソケット /var/run/datadog/apm.socket にトレースを送信しようとします。ソケットが存在しない場合、トレースは http://localhost:8126 に送信されます。

    別のソケット、ホスト、またはポートが必要な場合は、環境変数 DD_TRACE_AGENT_URL を使用します。以下にいくつかの例を示します。

    DD_TRACE_AGENT_URL=http://custom-hostname:1234
    DD_TRACE_AGENT_URL=unix:///var/run/datadog/apm.socket
    

    トレース用の接続は、コードで構成することも可能です。

    from ddtrace import tracer
    
    # Network sockets
    tracer.configure(
        https=False,
        hostname="custom-hostname",
        port="1234",
    )
    
    # Unix domain socket configuration
    tracer.configure(
        uds_path="/var/run/datadog/apm.socket",
    )
    

    同様に、トレースクライアントは Unix ドメインソケット /var/run/datadog/dsd.socket に統計情報を送信しようと試みます。ソケットが存在しない場合、統計情報は http://localhost:8125 に送信されます。

    別の構成が必要な場合は、環境変数 DD_DOGSTATSD_URL を使用することができます。以下にいくつかの例を示します。

    DD_DOGSTATSD_URL=udp://custom-hostname:1234
    DD_DOGSTATSD_URL=unix:///var/run/datadog/dsd.socket
    

    統計用の接続は、コードで構成することも可能です。

    from ddtrace import tracer
    
    # Network socket
    tracer.configure(
      dogstatsd_url="udp://localhost:8125",
    )
    
    # Unix domain socket configuration
    tracer.configure(
      dogstatsd_url="unix:///var/run/datadog/dsd.socket",
    )
    

  1. Datadog Agent の DD_SITE に設定して、Agent が正しい Datadog の場所にデータを送信するようにします。

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

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

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

アプリケーションのインスツルメンテーション

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

pip install ddtrace

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

pip install --upgrade pip

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

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

ddtrace-run python app.py

セットアップが完了し、アプリケーションでトレーサーを実行したら、ddtrace-run --info を実行して、構成が期待通りに動作しているかどうかを確認することができます。このコマンドの出力は、実行中にコード内で行われた構成の変更を反映しないことに注意してください。

コンフィギュレーション

必要に応じて、統合サービスタグ付けの設定など、アプリケーションパフォーマンスのテレメトリーデータを送信するためのトレースライブラリーを構成します。詳しくは、ライブラリの構成を参照してください。

v1 へのアップグレード

ddtrace v1 にアップグレードする場合は、ライブラリドキュメントのアップグレードガイドリリースノートで詳細を確認してください。

その他の参考資料