跳到主要内容

DatadogBridge

注意

Datadog Bridge 目前处于实验阶段。API 和配置选项可能会在未来版本中发生变化。

在 Mastra tracing 与 Datadog 之间实现双向集成。它会实时创建原生 dd-trace APM Span,以便 Tool 和处理器中自动埋点的操作正确嵌套在其父 Mastra Span 下。当 Span 结束时,它会通过 dd-trace 的 pipeline 发出 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

Mastra 可观测性实例在构造 Span 时调用此方法。该方法通过 tracer.startSpan() 立即创建 dd-trace APM Span,并返回与 Mastra 兼容的标识符。Mastra 会在 Span 的整个生命周期中使用返回的 ID。dd-trace Span 对象会存储在内部,用于激活 scope。

返回: 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>

强制将缓冲区中的所有 LLM Observability 数据刷新到 Datadog,而不关闭 Bridge。适用于需要确保运行时终止前已导出数据的 serverless 环境。

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,
})

注意:APM 数据无法在 agentless 模式下发送。如果只需要不含 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 要求先于任何其他 import 初始化 dd-trace,以便其自动埋点功能可在加载时修补 HTTP、数据库和框架库。

完整设置说明(包括 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 条目会拆分成 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 key(仅 agentless 模式需要)
DD_LLMOBS_ML_APPML 应用名称
DD_SITEDatadog 站点
DD_ENV环境名称
DD_LLMOBS_AGENTLESS_ENABLED设为 'true''1' 以启用 agentless 模式