This product is not supported for your selected Datadog site. ().

概要

Datadog は、dbt Cloud または dbt Core のメタデータにアクセスして、ジョブ実行に関する情報 (実行時間、dbt によって生成されたモデル、モデル間のリネージ関係など) を抽出できます。Datadog は、ウェアハウス内のテーブルと dbt モデルを照合し、テーブル障害の原因と影響を特定します。

以下の手順に従って、dbt Cloud を Datadog に接続します。

dbt Cloud で API トークンを生成する

Datadog がアカウントのメタデータにアクセスできるように dbt Cloud でサービストークンを作成します。

  1. dbt Cloud で、User Profile > API Tokens > Service Tokens に移動します。
  2. + Create Service Token をクリックします。
  3. トークンに名前を設定します。
  4. トークンの権限を設定します。
    • dbt Cloud で Webhook を自分で作成する場合は、関連する dbt Cloud プロジェクトにスコープ設定された Stakeholder/Read-Only 権限セットを使用します。
    • Datadog が Webhook を作成および管理する場合は、dbt Cloud Enterprise プランには Developer 権限を、dbt Cloud Team プランには Account Admin 権限を使用します。
  5. Save をクリックし、生成された API トークンをコピーします。

dbt Cloud アカウントを Datadog に接続する

API トークンを使用して、Data Observability で統合を構成します。

  1. Datadog Data Observability > Settings に移動します。
  2. dbt Cloud セクションで、Configure をクリックします。
  3. すでに dbt Cloud 統合アカウントを作成済みの場合は、前述の権限を持つ API トークンで更新されていることを確認してください。
  4. まだ作成していない場合は、アカウントを作成します。Account Name、Account Id、Account Url、および API Token セクションに入力します。
  5. Save をクリックして設定を保存します。

Webhook を構成する

Data Observability 設定で、dbt Cloud アカウントを展開し、Datadog が dbt Cloud ジョブ実行イベントを受信する方法を選択します。

dbt Cloud で Webhook を自分で作成する

アーティファクトのインジェストに Stakeholder/Read-Only サービストークンを使用する場合は、このオプションを使用します。

  1. I’ll manage the webhook in dbt Cloud myself を選択します。
  2. Datadog の Webhook URL をコピーします。
  3. dbt Cloud で、Account Settings > Webhooks > Create New Webhook に移動します。
  4. Datadog の Webhook URL を Webhook URL フィールドに貼り付けます。
  5. Job Run Started および Job Run Completed イベントを有効にします。インジェストを特定のジョブに限定するには、dbt Cloud の Webhook 設定でそれらのジョブを選択します。
  6. dbt Cloud で Webhook を保存します。
  7. dbt Cloud から HMAC シークレットをコピーし、Datadog の HMAC secret from dbt Cloud フィールドに貼り付けて、Save をクリックします。

注: 保存後、自分で作成した Webhook が dbt Cloud からのトラフィックを受け入れ始めるまでに最大 5 分かかる場合があります。

後で Datadog のユーザー管理 Webhook 設定を削除する場合は、dbt Cloud から手動で Webhook を削除してください。

Datadog に Webhook を管理させる

Datadog に dbt Cloud の Webhook を作成および管理させたい場合は、このオプションを使用します。

  1. Datadog-managed を選択します。
  2. Save をクリックします。

このモードでは、dbt Cloud Enterprise プランには Developer 権限を、dbt Cloud Team プランには Account Admin 権限を持つ dbt Cloud トークンが必要です。

次のステップ

次回の dbt ジョブ実行後、以下に示すように、Datadog Data Observability でジョブ実行データとリネージデータの確認を開始できるはずです。

Data Observability の概要では、dbt ジョブの実行が時系列の積み上げ棒グラフで表示され、接続されている dbt Cloud アカウントとそのステータスがテーブルで表示されます。

以下の手順に従って、dbt Core を Datadog に接続します。

注: 外部オーケストレーター (Airflow など) で dbt Core を実行しており、オーケストレーターのタスクと dbt の実行を関連付けたい場合は、まず Airflow インテグレーションの手順 に従ってください。

Datadog API キーを取得する

  1. こちらの指示に従って、Datadog API キーを作成または取得します。

openlineage-dbt をインストールする

  1. openlineage-dbt パッケージをインストールします。このパッケージを仮想環境にセットアップするには、Amazon MWAA で dbt を使用する を参照してください。

    pip3 install openlineage-dbt>=1.39.0
    

環境変数を設定する

  1. 以下の環境変数を設定します。datadoghq.com を組織の該当する Datadog サイト に置き換えます。定義済みの Datadog サイトの詳細については、OpenLineage ドキュメント を参照してください。

    export DD_SITE=datadoghq.com
    export DD_API_KEY=<YOUR_DATADOG_API_KEY>
    export OPENLINEAGE__TRANSPORT__TYPE=datadog
    
    # OPENLINEAGE_NAMESPACE determines the Datadog tag value for the environment (similar to how the service tag identifies the application).
    # Typical values are dev, staging, or prod, but you can over ride it with any custom value.
    export OPENLINEAGE_NAMESPACE=<YOUR_ENV>
    
    # Optional, for debugging purposes
    export OPENLINEAGE_CLIENT_LOGGING=DEBUG
    
    # Required for CI/CD Drift Detection (requires openlineage-dbt >= 1.46.0).
    # Attaches the sourceCodeLocation facet (repository URL, commit SHA, and pull
    # request number) so Datadog can associate the dbt run with a pull request.
    # Disabled by default; not required for job monitoring alone.
    export OPENLINEAGE__FACETS__SOURCE_CODE_LOCATION__DISABLED=false
    

    CI/CD チェック の場合、実行時に GITHUB_REF (プルリクエストによってトリガーされる GitHub Actions ワークフロー) または CI_MERGE_REQUEST_IID (GitLab マージリクエストパイプライン) が公開されると、プルリクエスト番号が自動的に検出されます。どちらの変数も存在しない場合は、プルリクエスト番号を明示的に設定します。

    export OPENLINEAGE__FACETS__SOURCE_CODE_LOCATION__PULL_REQUEST_NUMBER=<PR_NUMBER>
    

    CI ジョブがランナーの git コンテキストを継承しないコンテナ内で実行される場合 (例: コンテナを起動する GitHub Actions ワークフロー)、リポジトリ URL、コミット SHA、プルリクエスト番号は自動的に検出されないため、これら 3 つすべてを明示的に渡す必要があります。コンテナ内での dbt Core CI ジョブを実行するを参照してください。

dbt 呼び出しを更新する

  1. dbt 呼び出しを変更し、dbt を直接呼び出す代わりに OpenLineage ラッパー (dbt-ol) を使用します。これは、run、build、test など、Datadog で追跡したいすべての dbt コマンドに適用されます。利用可能なコマンドの全リストについては、dbt ドキュメント を参照してください。

  2. --consume-structured-logs フラグを追加して、コマンドの実行中に dbt ジョブを表示します。

    # Run models
    dbt-ol run --consume-structured-logs --openlineage-dbt-job-name <YOUR_DBT_JOB_NAME>
    
    # Run tests (required to see test failures in Datadog)
    dbt-ol test --consume-structured-logs --openlineage-dbt-job-name <YOUR_DBT_JOB_NAME>
    
    # Run build (runs models, tests, seeds, and snapshots)
    dbt-ol build --consume-structured-logs --openlineage-dbt-job-name <YOUR_DBT_JOB_NAME>
    

次のステップ

次回の dbt ジョブ実行後、以下に示すように、Datadog Data Observability でジョブ実行データとリネージデータの確認を開始できるはずです。

dbt ジョブの実行とモデルリネージが表示された Data Observability の概要。

参考資料