Datadog exporter
Datadog 是一个完整的监控平台,提供专门的 LLM Observability 功能。Datadog exporter 会将 Trace 发送到 Datadog 的 LLM Observability 产品,帮助你深入了解模型性能、token 用量和对话流程。
dd-trace APM?如果还使用 dd-trace APM 自动埋点,请考虑改用 Datadog Bridge。Bridge 会实时创建 dd-trace span,使 Tool 和 processor 内的 HTTP 与数据库调用正确嵌套在父 Mastra span 下。单独使用 exporter 时,会在执行完成后才发送 LLM Observability 数据,这意味着自动埋点的 APM span 会回退到请求处理程序。
安装安装的直接链接
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/datadog@latest
pnpm add @mastra/datadog@latest
yarn add @mastra/datadog@latest
bun add @mastra/datadog@latest
配置配置的直接链接
前提条件前提条件的直接链接
- Datadog 账户:在启用 LLM Observability 的 datadoghq.com 注册
- API key:从 Datadog Organization Settings → API Keys 获取
- 环境变量:设置凭据
DD_API_KEY=your-datadog-api-key
DD_LLMOBS_ML_APP=my-llm-app
DD_SITE=datadoghq.com # Optional: defaults to datadoghq.com
DD_ENV=production # Optional: environment name
零配置设置零配置设置的直接链接
设置环境变量后,无需任何配置即可使用 exporter:
import { Mastra } from '@mastra/core'
import { Observability } from '@mastra/observability'
import { DatadogExporter } from '@mastra/datadog'
export const mastra = new Mastra({
observability: new Observability({
configs: {
datadog: {
serviceName: 'my-service',
exporters: [new DatadogExporter()],
},
},
}),
})
显式配置显式配置的直接链接
你也可以直接传入凭据(优先于环境变量):
import { Mastra } from '@mastra/core'
import { Observability } from '@mastra/observability'
import { DatadogExporter } from '@mastra/datadog'
export const mastra = new Mastra({
observability: new Observability({
configs: {
datadog: {
serviceName: 'my-service',
exporters: [
new DatadogExporter({
mlApp: process.env.DD_LLMOBS_ML_APP!,
apiKey: process.env.DD_API_KEY!,
}),
],
},
},
}),
})
配置选项配置选项的直接链接
完整配置完整配置的直接链接
new DatadogExporter({
// Required settings
mlApp: process.env.DD_LLMOBS_ML_APP!, // Groups traces under this ML app name
apiKey: process.env.DD_API_KEY!, // Required for agentless mode (default)
// Optional settings
site: 'datadoghq.com', // Datadog site (datadoghq.eu, us3.datadoghq.com, etc.)
service: 'my-service', // Service name (defaults to mlApp)
env: 'production', // Environment name
agentless: true, // true = direct HTTPS, false = local Datadog Agent
// Advanced settings
integrationsEnabled: false, // Enable dd-trace auto-instrumentation
// Diagnostic logging
logLevel: 'info', // debug | info | warn | error
})
使用本地 Datadog Agent使用本地 Datadog Agent的直接链接
如果本地正在运行 Datadog Agent,可以通过它路由 Trace,而不是直接使用 HTTPS:
new DatadogExporter({
mlApp: process.env.DD_LLMOBS_ML_APP!,
agentless: false, // Use local Datadog Agent
env: 'production',
})
注意:使用 Agent 模式时,API key 会从本地 Agent 配置中读取。
Span 类型映射Span 类型映射的直接链接
Mastra span 类型会自动映射到 Datadog LLM Observability span kind:
| Mastra SpanType | Datadog Kind |
|---|---|
AGENT_RUN | agent |
MODEL_GENERATION | workflow |
MODEL_STEP | llm |
TOOL_CALL | tool |
MCP_TOOL_CALL | tool |
WORKFLOW_RUN | workflow |
| 其他 Workflow 类型 | task |
GENERIC | task |
除非另有指定,其他或未来的 Mastra span 类型在映射时默认为 task。
应用性能监控应用性能监控的直接链接
以上部分介绍 Mastra 的 LLM Observability 集成。要追踪 Mastra HTTP server 路由(请求延迟、错误跟踪、服务地图),请直接使用 dd-trace 进行 Datadog Application Performance Monitoring(APM)。
前提条件前提条件的直接链接
-
Datadog Agent:在同一主机上安装 Datadog Agent,或确保可通过网络访问。Agent 会在
localhost:8126接收来自dd-trace的 Trace,并将其转发到 Datadog。按照 Agent 安装指南进行设置。 -
dd-trace 软件包:在项目中安装 Tracing 库:
- npm
- pnpm
- Yarn
- Bun
npm install dd-tracepnpm add dd-traceyarn add dd-tracebun add dd-trace
APM Trace 始终通过 Datadog Agent 路由。这与支持 agentless 模式(通过 HTTPS 直接发送到 Datadog)的 LLM Observability 不同。
仅使用 APM仅使用 APM的直接链接
在入口文件顶部、其他任何 import 之前导入并初始化 dd-trace:
import tracer from 'dd-trace'
tracer.init({
service: process.env.DD_SERVICE || 'my-mastra-app',
env: process.env.DD_ENV || 'production',
version: process.env.DD_VERSION,
})
import { Mastra } from '@mastra/core'
export const mastra = new Mastra({
bundler: {
externals: [
'dd-trace',
'@datadog/native-metrics',
'@datadog/native-appsec',
'@datadog/native-iast-taint-tracking',
'@datadog/pprof',
],
},
})
设置 tracer 元数据环境变量:
DD_SERVICE=my-mastra-app
DD_ENV=production
DD_VERSION=1.0.0
dd-trace 会为常用 HTTP 框架自动埋点,包括 Mastra server adapter 支持的框架。传入请求、传出 HTTP 调用和数据库查询会在 Datadog 中显示为 APM Trace。
APM 与 LLM ObservabilityAPM 与 LLM Observability的直接链接
在创建 Mastra 实例之前导入并初始化 dd-trace。DatadogExporter 会检测现有 tracer 并跳过重新初始化,在 APM 设置上叠加 LLM Observability:
import tracer from 'dd-trace'
tracer.init({
service: process.env.DD_SERVICE || 'my-mastra-app',
env: process.env.DD_ENV || 'production',
version: process.env.DD_VERSION,
})
import { Mastra } from '@mastra/core'
import { Observability } from '@mastra/observability'
import { DatadogExporter } from '@mastra/datadog'
export const mastra = new Mastra({
observability: new Observability({
configs: {
datadog: {
serviceName: 'my-mastra-app',
exporters: [
new DatadogExporter({
mlApp: process.env.DD_LLMOBS_ML_APP!,
apiKey: process.env.DD_API_KEY!,
}),
],
},
},
}),
bundler: {
externals: [
'dd-trace',
'@datadog/native-metrics',
'@datadog/native-appsec',
'@datadog/native-iast-taint-tracking',
'@datadog/pprof',
],
},
})
DD_SERVICE=my-mastra-app
DD_ENV=production
DD_VERSION=1.0.0
DD_API_KEY=your-datadog-api-key
DD_LLMOBS_ML_APP=my-llm-app
Server 路由会显示为 APM Trace,LLM 调用会显示为 LLM Observability span,并且都位于 Datadog 的同一服务下。
在其他所有模块之前导入并初始化 dd-trace。这样,它的自动埋点可以在加载时 patch HTTP、数据库和框架库。
故障排除故障排除的直接链接
原生模块 ABI 不匹配原生模块 ABI 不匹配的直接链接
如果看到如下错误:
Error: No native build was found for runtime=node abi=137 platform=linuxglibc arch=x64
这表示 dd-trace 的原生模块存在 Node.js 版本兼容性问题。这些原生模块是可选的,用于提供性能监控功能。
解决方案:
-
使用 Node.js 22.x:原生模块与 Node.js 22.x 的兼容性最好。
-
忽略原生模块警告:原生模块(
@datadog/native-metrics、@datadog/native-appsec等)是可选的。即使加载失败,核心 Tracing 功能仍可正常工作。
Bundler external 配置Bundler external 配置的直接链接
使用 esbuild、webpack 或 Mastra CLI bundler 等 bundler 时,可能需要将 dd-trace 及其依赖标记为 external:
export const mastra = new Mastra({
bundler: {
externals: [
'dd-trace',
'@datadog/native-metrics',
'@datadog/native-appsec',
'@datadog/native-iast-taint-tracking',
'@datadog/pprof',
],
},
})