@mastra/core
Version:
Mastra is a framework for building AI-powered applications and agents with a modern TypeScript stack.
118 lines (84 loc) • 3.42 kB
Markdown
# DatadogExporter
Sends Tracing data to Datadog's LLM Observability product for monitoring and analytics.
> **Info:** If you also use `dd-trace` APM auto-instrumentation and need it correctly parented under Mastra spans, use the [DatadogBridge](https://mastra.ai/reference/observability/tracing/bridges/datadog) instead. The exporter sends LLM Observability data after execution completes, so it doesn't participate in `dd-trace`'s live scope.
## Constructor
```typescript
new DatadogExporter(config: DatadogExporterConfig)
```
## `DatadogExporterConfig`
```typescript
interface DatadogExporterConfig extends BaseExporterConfig {
apiKey?: string
mlApp?: string
site?: string
service?: string
env?: string
agentless?: boolean
integrationsEnabled?: boolean
}
```
Extends `BaseExporterConfig`, which includes:
- `logger?: IMastraLogger` - Logger instance
- `logLevel?: LogLevel | 'debug' | 'info' | 'warn' | 'error'` - Log level (default: INFO)
## Methods
### `exportTracingEvent`
```typescript
async exportTracingEvent(event: TracingEvent): Promise<void>
```
Exports a tracing event to Datadog LLM Observability.
### flush
```typescript
async flush(): Promise<void>
```
Force flushes any buffered spans to Datadog without shutting down the exporter. Useful in serverless environments where you need to ensure spans are exported before the runtime terminates.
### shutdown
```typescript
async shutdown(): Promise<void>
```
Flushes pending data and shuts down the exporter. Cancels any pending cleanup timers and disables LLM Observability.
## Usage
### Zero-Config (using environment variables)
```typescript
import { DatadogExporter } from '@mastra/datadog'
// Reads from DD_LLMOBS_ML_APP, DD_API_KEY, DD_SITE, DD_ENV
const exporter = new DatadogExporter()
```
### Explicit Configuration
```typescript
import { DatadogExporter } from '@mastra/datadog'
const exporter = new DatadogExporter({
mlApp: 'my-llm-app',
apiKey: process.env.DD_API_KEY,
site: 'datadoghq.com',
env: 'production',
})
```
### With Local Datadog Agent
```typescript
const exporter = new DatadogExporter({
mlApp: 'my-llm-app',
agentless: false, // Use local Datadog Agent
env: 'production',
})
```
## Span mapping
Mastra span types are mapped to Datadog LLM Observability 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`, `WORKFLOW_STEP`, `GENERIC`, and future span types) automatically default to `task`.
## Environment variables
The exporter reads configuration from these environment variables:
| Variable | Description |
| ----------------------------- | ---------------------------------------- |
| `DD_API_KEY` | Datadog API key |
| `DD_LLMOBS_ML_APP` | ML application name |
| `DD_SITE` | Datadog site |
| `DD_ENV` | Environment name |
| `DD_LLMOBS_AGENTLESS_ENABLED` | Set to 'false' or '0' to use local agent |