メインコンテンツへ移動

DatadogBridge

警告

Datadog Bridge は現在実験的です。API と設定オプションは今後のリリースで変更される可能性があります。

Mastra tracing と Datadog の双方向統合を可能にします。ネイティブの dd-trace APM Span をリアルタイムで作成し、Tool や Processor 内で自動計装された操作が親 Mastra Span の下に正しくネストされるようにします。Span の終了時に、dd-trace のパイプラインを通じて LLM Observability データを出力します。

コンストラクター
コンストラクターへの直接リンク

new DatadogBridge(config?: DatadogBridgeConfig)

DatadogBridgeConfig
datadogbridgeconfigへの直接リンク

interface DatadogBridgeConfig extends BaseExporterConfig {
apiKey?: string
mlApp?: string
site?: string
service?: string
env?: string
agentless?: boolean
integrationsEnabled?: boolean
requestContextKeys?: string[]
}

次の項目を含む BaseExporterConfig を拡張します。

  • logger?: IMastraLogger - Logger インスタンス
  • logLevel?: LogLevel | 'debug' | 'info' | 'warn' | 'error' - ログレベル(デフォルト:INFO)

メソッド
メソッドへの直接リンク

createSpan
createspanへの直接リンク

createSpan(options: CreateSpanOptions<SpanType>): SpanIds | undefined

Span の構築時に Mastra Observability インスタンスから呼び出されます。tracer.startSpan() を介して dd-trace APM Span を即座に作成し、Mastra 互換の識別子を返します。返された ID は Span の存続期間を通して Mastra によって使用されます。dd-trace Span オブジェクトは内部に保存され、スコープの有効化に使用されます。

戻り値: SpanIds | undefined - { spanId, traceId, parentSpanId }。Bridge が無効な場合は undefined

executeInContext
executeincontextへの直接リンク

executeInContext<T>(spanId: string, fn: () => Promise<T>): Promise<T>

Mastra Span の dd-trace コンテキスト内で非同期関数を実行します。関数内で実行される dd-trace 自動計装済みの操作(HTTP、データベースなど)は、この Span を親とします。

戻り値: Promise<T> - 関数の実行結果。

executeInContextSync
executeincontextsyncへの直接リンク

executeInContextSync<T>(spanId: string, fn: () => T): T

Mastra Span の dd-trace コンテキスト内で同期関数を実行します。

戻り値: T - 関数の実行結果。

flush
flushへの直接リンク

async flush(): Promise<void>

Bridge をシャットダウンせず、バッファー内の LLM Observability データを Datadog に強制的にフラッシュします。ランタイムの終了前にデータが確実にエクスポートされるようにする必要があるサーバーレス環境で役立ちます。

shutdown
shutdownへの直接リンク

async shutdown(): Promise<void>

適切に閉じられなかった APM Span を強制終了し、保留中の LLM Observability データをフラッシュして LLM Observability 統合を無効にし、すべての内部状態を消去します。

使用例
使用例への直接リンク

基本的な使用方法
基本的な使用方法への直接リンク

import tracer from 'dd-trace'

tracer.init({
service: process.env.DD_SERVICE || 'my-mastra-app',
env: process.env.DD_ENV || 'production',
})

import { Mastra } from '@mastra/core'
import { Observability } from '@mastra/observability'
import { DatadogBridge } from '@mastra/datadog'

const mastra = new Mastra({
observability: new Observability({
configs: {
default: {
serviceName: 'my-mastra-app',
bridge: new DatadogBridge({
mlApp: process.env.DD_LLMOBS_ML_APP!,
}),
},
},
}),
agents: { myAgent },
})

Agentless モード(LLM Observability のみ、ローカル Agent なし)
Agentless モード(LLM Observability のみ、ローカル Agent なし)への直接リンク

ローカルの Datadog Agent がなく、LLM Observability データのみが必要な場合は、Agentless モードを有効にします。

new DatadogBridge({
mlApp: process.env.DD_LLMOBS_ML_APP!,
apiKey: process.env.DD_API_KEY!,
agentless: true,
})

注:Agentless モードでは APM データを送信できません。dd-trace APM を使わず、LLM Observability データのみが必要な場合は、Datadog Exporterの方が簡単です。

追加の Exporter との併用
追加の Exporter との併用への直接リンク

Bridge は Datadog 以外の exporter と組み合わせて、追加の送信先に Trace を送信できます。

import { Mastra } from '@mastra/core'
import { Observability, MastraStorageExporter } from '@mastra/observability'
import { DatadogBridge } from '@mastra/datadog'

const mastra = new Mastra({
observability: new Observability({
configs: {
default: {
serviceName: 'my-mastra-app',
bridge: new DatadogBridge({
mlApp: process.env.DD_LLMOBS_ML_APP!,
}),
exporters: [
new MastraStorageExporter(), // Studio access
],
},
},
}),
})
注記

同じ設定で DatadogBridgeDatadogExporter を組み合わせないでください。どちらも LLM Observability に出力するため、同じデータが二重に書き込まれます。

セットアップ要件
セットアップ要件への直接リンク

DatadogBridge では、ロード時に自動計装が HTTP、データベース、フレームワークのライブラリにパッチを適用できるように、他の import より先に dd-trace を初期化する必要があります。

dd-trace の初期化、bundler の externals、Agent の設定を含む完全なセットアップ手順については、DatadogBridge ガイドを参照してください。

Span のマッピング
Span のマッピングへの直接リンク

Mastra Span タイプは、Datadog LLM Observability Span kind に次のようにマッピングされます。

Mastra SpanTypeDatadog Kind
AGENT_RUNagent
MODEL_GENERATIONworkflow
MODEL_STEPllm
TOOL_CALLtool
MCP_TOOL_CALLtool
WORKFLOW_RUNworkflow
その他のすべてのタイプtask

タグのサポート
タグのサポートへの直接リンク

tracingOptions.tags の値は、構造化された LLM Observability annotation タグになります。key:value の項目はキーと値のペアに分割され、コロンのないタグは true に設定されます。

const result = await agent.generate('Hello', {
tracingOptions: {
tags: ['production', 'instance_name:career-scout-api'],
},
})

このコードは次を生成します。

{
"production": true,
"instance_name": "career-scout-api"
}

環境変数
環境変数への直接リンク

Bridge は次の環境変数から設定を読み取ります。

変数説明
DD_API_KEYDatadog API キー(Agentless モードでのみ必須)
DD_LLMOBS_ML_APPML アプリケーション名
DD_SITEDatadog サイト
DD_ENV環境名
DD_LLMOBS_AGENTLESS_ENABLEDAgentless モードを有効にするには 'true' または '1' に設定