Skip to main content
Mastra 1.0 is available 🎉 Read announcement

DefaultExporter

Persists traces to Mastra's configured storage with automatic batching and retry logic.

Constructor
Direct link to Constructor

new DefaultExporter(config?: DefaultExporterConfig)

DefaultExporterConfig
Direct link to DefaultExporterConfig

interface DefaultExporterConfig extends BaseExporterConfig {
/** Maximum number of spans per batch. Default: 1000 */
maxBatchSize?: number;

/** Maximum total buffer size before emergency flush. Default: 10000 */
maxBufferSize?: number;

/** Maximum time to wait before flushing batch in milliseconds. Default: 5000 */
maxBatchWaitMs?: number;

/** Maximum number of retry attempts. Default: 4 */
maxRetries?: number;

/** Base retry delay in milliseconds (uses exponential backoff). Default: 500 */
retryDelayMs?: number;

/** Tracing storage strategy or 'auto' for automatic selection. Default: 'auto' */
strategy?: TracingStorageStrategy | "auto";
}

Extends BaseExporterConfig, which includes:

  • logger?: IMastraLogger - Logger instance
  • logLevel?: LogLevel | 'debug' | 'info' | 'warn' | 'error' - Log level (default: INFO)

TracingStorageStrategy
Direct link to TracingStorageStrategy

type TracingStorageStrategy = "realtime" | "batch-with-updates" | "insert-only";

Strategy Behaviors
Direct link to Strategy Behaviors

  • realtime: Immediately persists each event to storage
  • batch-with-updates: Batches creates and updates separately, applies in order
  • insert-only: Only processes SPAN_ENDED events, ignores updates

Properties
Direct link to Properties

readonly name = 'mastra-default-observability-exporter';

Methods
Direct link to Methods

init
Direct link to init

init(options: InitExporterOptions): void

Initializes the exporter after dependencies are ready. Resolves tracing strategy based on storage capabilities.

exportTracingEvent
Direct link to exportTracingEvent

async exportTracingEvent(event: TracingEvent): Promise<void>

Processes a tracing event according to the resolved strategy.

flush
Direct link to flush

async flush(): Promise<void>

Force flushes any buffered events to storage without shutting down the exporter. Useful in serverless environments where you need to ensure spans are exported before the runtime terminates.

shutdown
Direct link to shutdown

async shutdown(): Promise<void>

Flushes remaining buffered events and performs cleanup.

Automatic Strategy Selection
Direct link to Automatic Strategy Selection

When strategy: 'auto' (default), the exporter queries the storage adapter for its capabilities:

interface TracingStrategy {
/** Strategies supported by this adapter */
supported: TracingStorageStrategy[];

/** Preferred strategy for optimal performance */
preferred: TracingStorageStrategy;
}

The exporter will:

  1. Use the storage adapter's preferred strategy if available
  2. Fall back to the first supported strategy if preferred isn't available
  3. Log a warning if a user-specified strategy isn't supported

Batching Behavior
Direct link to Batching Behavior

Flush Triggers
Direct link to Flush Triggers

The buffer flushes when any of these conditions are met:

  • Buffer size reaches maxBatchSize
  • Time since first buffered event exceeds maxBatchWaitMs
  • Buffer size reaches maxBufferSize (emergency flush)
  • shutdown() is called

Retry Logic
Direct link to Retry Logic

Failed flushes are retried with exponential backoff:

  • Retry delay: retryDelayMs * 2^attempt
  • Maximum attempts: maxRetries
  • Batch is dropped after all retries fail

Out-of-Order Handling
Direct link to Out-of-Order Handling

For batch-with-updates strategy:

  • Tracks which spans have been created
  • Rejects updates/ends for spans not yet created
  • Logs warnings for out-of-order events
  • Maintains sequence numbers for ordered updates

Usage
Direct link to Usage

import { DefaultExporter } from "@mastra/observability";

// Default configuration
const exporter = new DefaultExporter();

// Custom batching configuration
const customExporter = new DefaultExporter({
maxBatchSize: 500,
maxBatchWaitMs: 2000,
strategy: "batch-with-updates",
logLevel: 'debug'
});

See Also
Direct link to See Also

Documentation
Direct link to Documentation

Other Exporters
Direct link to Other Exporters

Reference
Direct link to Reference