Datadog ソースコードインテグレーション

概要

ソースコードインテグレーションは、Git とのインテグレーションで、テレメトリ (スタックトレースなど) とソースコードを連携させることができるものです。

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

GitHub アプリのインテグレーションと組み合わせることで、エラーにインラインコードスニペットを表示することができます。詳しくは、インラインソースコードをご覧ください。

コンフィギュレーション

ソースコードのインテグレーションは、Go、Java、JavaScript、Python をサポートしています。
Datadog Agent 7.35.0 以降が必要です。

テレメトリーデータとソースコードのマッピングを行うには

  1. git.commit.shagit.repository_url タグをコンテナに追加したり、テレメトリに直接追加したりします。
  2. Datadog の GitHub Apps インテグレーションをインストールして、ソースコードのスニペットをインラインで表示します。
  1. git.commit.shagit.repository_url タグをコンテナに追加したり、テレメトリに直接追加したりします。
  2. CI パイプラインで datadog-ci git-metadata upload を実行し、git リポジトリのメタデータをアップロードします。

テレメトリーのタグ付け

データを特定のコミットにリンクさせるには、テレメトリーに git.commit.shagit.repository_url タグを付けます。

この方法は、Docker、または containerd >= 1.5.6 が必要です。その他のコンテナのセットアップについては、「その他」のセクションを参照してください。

コンテナでアプリを実行している場合、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 SHA とリポジトリ URL がテレメトリーに追加されます。

コンテナ化されていない環境やサポートされていない環境では、トレース、スパン、プロファイルに git commit SHA とリポジトリ URL を手動でタグ付けします。

トレース、スパン、プロファイルに 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

リポジトリの構成

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

テレメトリーをソースコードにリンクさせるために、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 へのリンク

スタックトレース

エラー追跡と APM のエラースパンでは、スタックトレースからリポジトリへのリンクに直接アクセスできます。

  1. APM > Error Tracking の順に移動します。
  2. 課題をクリックします。右側に Issue Details パネルが表示されます。
  3. Latest available errors の下にある、フレームにカーソルを合わせます。右側に View ボタンが表示され、GitHub に誘導されます。
インラインコードスニペット
インラインソースコード

GitHub SaaS をご利用の方は、Datadog の GitHub アプリインテグレーションをインストールすると、スタックトレースに GitHub リポジトリからのコードスニペットを直接インライン化することができます。

インテグレーションタイルで権限を指定する際、Contents に対する Datadog の読み取り権限を有効にします。

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

詳しくは、GitHub アプリと OAuth アプリをご覧ください。

  1. フレームをクリックすると、ソースコードの行を含むコードスニペットが展開されます。
  2. Connect to PreviewAuthorize をクリックして、エラーを含むソースコードスニペットにアクセスします。
インラインコードスニペット

Continuous Profiler

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

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

その他の参考資料

お役に立つドキュメント、リンクや記事: