スパンの Code Origin

概要

Code Origin は、APM スパンが生成されるコードベース内の正確な位置を特定します。互換性のあるサービスで有効にすると、各サービスエントリスパンにファイルパス、行番号、関数名が自動的に追加され、次のことが容易になります。

  • パフォーマンスの問題をデバッグする
  • コード実行フローを理解する
  • パフォーマンスのボトルネックを特定する

Trace Explorer で、有効なサービスからスパンを選択すると、概要タブに Code Origin の詳細が表示されます。

Code Origin の詳細

はじめに

前提条件

  • Datadog APM はスパンをキャプチャするように構成されています。
  • Source Code Integration は有効になっています (コードプレビューに必要)。
  • あなたのサービスは互換性要件を満たしています。

互換性要件

SDK バージョンフレームワーク
1.47.0+Spring Boot/Data、gRPC サーバー、Micronaut 4、Kafka コンシューマー

制限: JDK 18 以下では、-parametersフラグでコンパイルされたクラスはサポートされない場合があります。Spring 6+、Spring Boot 3+、および Scala は、このフラグをデフォルトで使用します。

SDK バージョンフレームワーク
2.15.0+Django、Flask、Starlette、およびその派生物
SDK バージョンフレームワーク
4.49.0+Fastify
5.54.0+Express

注: NestJS はサポートされていませんが、基盤となるフレームワークは Express または Fastify のいずれかです。

SDK バージョンフレームワーク
3.15.0+ASP.NET、ASP.NET Core
SDK バージョンフレームワーク
1.11.0+すべてのサポートされている Web フレームワーク

Code Origin を有効にする

次の環境変数を設定してサービスを実行します。

export DD_CODE_ORIGIN_FOR_SPANS_ENABLED=true
トランスパイルされた Node.js アプリケーション (例えば TypeScript) の場合、デプロイされたアプリケーションとともにソースマップを生成して公開し、Node.js を --enable-source-mapsフラグ付きで実行し、Node.js トレーサー v5.59.0 以降を使用します。そうしないと、コードプレビューは動作しません。詳細については、Node.js ソースコードインテグレーションのドキュメントを参照してください。

Code Origin の使用方法

トレースエクスプローラーで

  1. Trace Explorer に移動します。

  2. Code Origin を有効にしたサービスから「Service Entry Spans」を検索します。

    Code Origin - Service Entry Spans の検索
  3. スパンをクリックして、その詳細を表示します。

  4. トレース詳細のサイドパネルで、「Code Origin」セクションを探します。

    Trace Explorer の Code Origin の詳細
  5. Code Origin セクションから:

    • Start Debug Session をクリックして実行中のサービスで Live Debugger セッションを開始し、Code Origin メソッドの位置でログをキャプチャします。または、コードプレビューのガターでブレークポイントを選択し、選択したコード行でログをキャプチャします。

      Code Origin - Live Debugger セッションの開始
    • Click on source code variables to add them as attributes to future spans with Dynamic Instrumentation.

      Code Origin - Dynamic Instrumentation を使用してスパンタグを追加

IDE で

  1. Datadog IDE Integration を設定します。

    • サポートされている IDE: IntelliJ、VS Code
    • サポートされている言語: Java、Python
  2. エンドポイントメソッドの上にインライン注釈として RED メトリクス (リクエスト、エラー、実行時間) を表示します。

    IDE の Code Origin の詳細

トラブルシューティング

Code Origin セクションが表示されません

  • SDK 構成で Code Origin が有効であることを確認してください。

  • サービスがすべての互換性要件 (すなわち、サービス言語、サポートされているフレームワーク、最小トレーサーバージョン) を満たしていることを確認してください。

  • ほとんどのサービスでは、Code Origin データはサービスエントリスパンのみにキャプチャされます。APM Trace Explorer で「Service Entry Spans」にフィルターできます。

    Code Origin - Service Entry Spans の検索

コードプレビューが表示されないか、ファイルが見つかりません

  • ソースコードインテグレーションのすべてのセットアップ要件が満たされていることを確認し、DD_GIT_*環境変数が正しい値で構成されていることを確認してください。
  • トランスパイルされた Node.js アプリケーション (例えば TypeScript) の場合、デプロイされたアプリケーションとともにソースマップを生成および公開し、--enable-source-maps フラグを使用して Node.js を実行し、Node.js トレーサー v5.59.0 以降を使用してください。そうしないと、コードプレビューは動作しません。詳細については、Node.js ソースコードインテグレーションのドキュメントを参照してください。
  • Code Origin はユーザーコードのみを参照するように設計されていますが、場合によってはサードパーティコードの参照が混入することがあります。これらのケースを Datadog サポートに報告し、これらの参照の改善にご協力ください。

参考資料