UNPKG

@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
# 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 |