observability/datadog/README.md
Datadog LLM Observability exporter for Mastra. Exports observability data to Datadog's LLM Observability product.
pnpm add @mastra/datadog
dd-trace native modules ship prebuilt binaries for this ABI)import { Mastra } from '@mastra/core';
import { DatadogExporter } from '@mastra/datadog';
const datadog = new DatadogExporter({
mlApp: 'my-llm-app',
apiKey: process.env.DD_API_KEY,
});
const mastra = new Mastra({
observability: {
configs: {
default: {
serviceName: 'my-service',
exporters: [datadog],
},
},
},
});
If you have a Datadog Agent running locally, you can use agent mode instead:
const datadog = new DatadogExporter({
mlApp: 'my-llm-app',
agentless: false, // Use local Datadog Agent instead of direct HTTPS
env: 'production',
});
| Option | Description | Default |
|---|---|---|
apiKey | Datadog API key (required) | DD_API_KEY env var |
mlApp | ML application name for grouping traces (required) | DD_LLMOBS_ML_APP env var |
site | Datadog site (e.g., 'datadoghq.com', 'datadoghq.eu') | DD_SITE or 'datadoghq.com' |
agentless | Use direct HTTPS intake (no local agent required) | true |
service | Service name for the application | Uses mlApp value |
env | Environment name (e.g., 'production', 'staging') | DD_ENV env var |
integrationsEnabled | Enable dd-trace automatic integrations | false |
Note that the site is also used to specify non-default regions, e.g. us3.datadoghq.com instead of us1.datadoghq.com.
The exporter reads configuration from environment variables:
DD_API_KEY - Datadog API key (required)DD_LLMOBS_ML_APP - ML application nameDD_SITE - Datadog siteDD_ENV - Environment nameDD_LLMOBS_AGENTLESS_ENABLED - Set to 'false' or '0' to use local Datadog AgentMastra span types are mapped to Datadog LLMObs span kinds:
| Mastra SpanType | Datadog Kind |
|---|---|
AGENT_RUN | agent |
MODEL_GENERATION | workflow |
MODEL_STEP | llm |
TOOL_CALL | tool |
MCP_TOOL_CALL | tool |
WORKFLOW_RUN | workflow |
| All other types | task |
All unmapped span types (including MODEL_CHUNK, GENERIC, etc., and future span types) automatically default to task.
If you see errors like No native build was found for runtime=node abi=137:
These are non-blocking warnings. The dd-trace native modules (@datadog/native-metrics, etc.) are optional and provide performance monitoring features. Core tracing works without them.
Options:
dd-trace native modules target Node.js 22 (ABI 127/131). Newer Node.js versions have different ABIs.When using bundlers, mark dd-trace and native modules as external:
// src/mastra/index.ts
export const mastra = new Mastra({
bundler: {
externals: [
'dd-trace',
'@datadog/native-metrics',
'@datadog/native-appsec',
'@datadog/native-iast-taint-tracking',
'@datadog/pprof',
],
},
});
Apache-2.0