概要

ソースコードインテグレーションは以下をサポートします:

言語:
  • Go
  • Java
  • JavaScript (トランスパイルされた JavaScript はサポートしていません)
  • Python
  • Ruby

Git プロバイダー:
  • GitHub
  • GitLab
  • BitBucket
  • Azure DevOps

セルフホストインスタンスやプライベート URL はサポートされていません。

Datadog のソースコードインテグレーションは、GitHub、GitLab、Bitbucket、Azure DevOps でホストされている Git リポジトリとテレメトリーを接続することが可能です。ソースコードインテグレーションを有効にすると、ソースコードの関連行に素早くアクセスして、スタックトレース、スロープロファイル、その他の問題をデバッグすることができます。

Java RuntimeException のインラインコードスニペットと GitHub でコードを見るためのボタン

セットアップ

Datadog Agent v7.35.0 以降が必要です。

APM をすでに設定している場合は、Integrations > Link Source Code に移動し、バックエンドサービスのソースコードインテグレーションを構成してください。

アクティブコミットをリンクさせる

デプロイされたアーティファクトにテレメトリーのタグ付けまたは git 情報の埋め込みを行うことでアクティブコミットをリンクさせることができます。

テレメトリーのタグ付け

データを特定のコミットにリンクさせるには、テレメトリーに git.commit.shagit.repository_url タグを付けます。git.repository_url タグにプロトコルが含まれていないことを確認してください。例えば、リポジトリの URL が https://github.com/example_repo である場合、git.repository_url タグの値は github.com/example_repo となります。

この方法は、Docker、または containerd >= 1.5.6 を必要とします。AWS Fargate 上で動作するコンテナには対応していません。 その他のコンテナ設定については、Host タブを参照してください。

コンテナでアプリを実行している場合、Datadog はイメージの Docker ラベルから直接ソースコード情報を抽出することができます。ビルド時に、オープンコンテナスタンダードに従って、git commit SHA とリポジトリ URL を Docker ラベルとして追加します。

docker build . \
  -t my-application \
  --label org.opencontainers.image.revision=$(git rev-parse HEAD) \
  --label org.opencontainers.image.source=git-provider.example/me/my-repo

Kubernetes を使用している場合は、Datadog のタグオートディスカバリーを使用してデプロイされたポッドにポッドアノテーションを付けます。

ad.datadoghq.com/tags: '{"git.commit.sha": "<FULL_GIT_COMMIT_SHA>", "git.repository_url": "git-provider.example/me/my-repo"}'

git.commit.shagit.repository_url はテレメトリーでタグ付けされています。

Datadog は、Serverless Monitoring for AWS Lambda 設定に従って、サーバーレスアプリケーションからソースコード情報を直接抽出することができます。

APM サーバーレスの設定方法の説明
Datadog サーバーレスフレームワークプラグインDatadog Serverless Plugin]1 を使用してサーバーレスアプリケーションのインスツルメンテーションを行う場合は、serverless-plugin-datadog version >= 5.18.0 を使用します。
datadog-cdk-constructsサーバーレスアプリケーションのインスツルメンテーションに Datadog CDK Construct を使用する場合、AWS CDK v1 では datadog-cdk-constructs version >= 0.8.5、AWS CDK v2 では datadog-cdk-constructs-v2 version >= 1.4.0 を使用します。
datadog-ciDatadog CLI クライアントを使用してサーバーレスアプリケーションのインスツルメンテーションを行う場合は、datadog-ci version >= 2.4.1 を使用します。CLI ツールは、コードリポジトリと同じディレクトリで実行する必要があります。

トレース、スパン、プロファイルに git.commit.shagit.repository_url というタグを付けるには、環境変数 DD_TAGS でトレーサーを構成します。

export DD_TAGS="git.commit.sha:<FULL_GIT_COMMIT_SHA>,git.repository_url:git-provider.example/me/my-repo"
./my-application start

Datadog はリポジトリの URL、現在のブランチのコミット SHA、追跡されたファイルパスのリストをキャプチャするだけで、ユーザーコードを取り込んだり保存したりすることはありません。

git 情報を CI のアーティファクトに埋め込む

リポジトリ URL やコミットハッシュなどの git 情報をアーティファクトに埋め込むことができます。Datadog トレーシングライブラリはこの情報を使って、アクティブコミットを APM サービスに自動的にリンクさせます。

git 情報の埋め込みに対応している言語を、次の中から 1 つ選択します。

Go はバージョン 1.18 からバイナリにバージョン管理情報を埋め込むようになりました。

サービスが以下の要件をすべて満たしていることを確認します。

  • Go >= 1.18 のバージョンを使用している。
  • Datadog Go Tracer >= 1.48.0 のバージョンを使用している。
  • アプリケーションは go.mod を使ってモジュールとしてビルドされました。モジュールパスはコードリポジトリの URL です。

リポジトリの構成

GitHub SaaS ユーザーの場合、テレメトリーをソースコードにリンクさせるために、Datadog の GitHub インテグレーションGitHub インテグレーションタイルにインストールします。インテグレーションタイルで権限を指定する際、Contents に対して Datadog の読み取り権限を有効にしてください。

GitHub とのインテグレーションを設定することで、エラー追跡にインラインコードスニペットを表示することができます。詳しくは、インラインソースコードをご覧ください。

テレメトリーをソースコードにリンクさせるために、Datadog は datadog-ci git-metadata upload コマンドで Git リポジトリから全てのコミット SHA についてメタデータを収集します。

Git リポジトリ内で datadog-ci git-metadata upload を実行すると、Datadog はリポジトリの URL、現在のブランチのコミット SHA、そして追跡したファイルのパスのリストを受け取ります。

検証

データが収集されていることを確認するために、CI パイプラインで datadog-ci git-metadata upload を実行します。

以下のような出力が期待できます。

Reporting commit 007f7f466e035b052415134600ea899693e7bb34 from repository git@github.com:my-org/my-repository.git.
180 tracked file paths will be reported.
✅  Handled in 0.077 seconds.

使用方法

Git プロバイダーへのリンク

トレースは GitHub のソースリポジトリのエラー追跡で直接アクセスできます。

  1. APM > Error Tracking の順に移動します。
  2. 課題をクリックします。右側に Issue Details パネルが表示されます。
  3. Latest Event の下で、フレームの右側にある View ボタンをクリックするか、View fileView Git blameView commit を選択すると、ソースコード管理ツールにリダイレクトされます。
エラー追跡のエラースタックトレースの右側に、3 つのオプション (view file、view blame、view commit) を持つビューリポジトリボタンがあります

トレースは、Continuous Profiler で GitHub 上のソースリポジトリに直接アクセスすることができます。

  1. APM > Profile Search の順に移動します。
  2. プロファイルをクリックし、フレームグラフのメソッドにカーソルを合わせます。右側に More actions というラベルの付いたケバブアイコンが表示されます。
  3. More actions* > View in repo をクリックし、トレースをソースコードリポジトリで開きます。
Continuous Profiler から GitHub へのリンク

インラインソースコード

GitHub SaaS ユーザーの場合、Datadog の GitHub インテグレーションをインストールすると、エラー追跡のスタックトレースに GitHub リポジトリからコードスニペットを直接インラインで表示することができます。インテグレーションタイルで権限を指定する際、Contents に対して Datadog の読み取り権限を有効にしてください。

  1. APM > Error Tracking の順に移動します。
  2. 課題をクリックします。右側に Issue Details パネルが表示されます。
  3. Connect to PreviewAuthorize をクリックして、エラーを含むソースコードスニペットにアクセスします。
  4. Latest Event の下で、フレームの右側にある View Code ボタンをクリックするか、View fileView Git blameView commit を選択すると、ソースコード管理ツールにリダイレクトされます。
スタックトレース内のインラインコードスニペット

組織用の GitHub アプリをインストールするには、組織のオーナーであるか、リポジトリの管理者権限が必要です。また、個人の GitHub アカウントに GitHub アプリをインストールすることも可能です。詳しくは、GitHub Apps & OAuth Apps をご覧ください。

その他の参考資料