CloudExporter
Added in: @mastra/observability@1.8.0
Sends tracing spans, logs, metrics, scores, and feedback to the Mastra platform for online visualization and monitoring.
ConstructorDirect link to Constructor
new CloudExporter(config?: CloudExporterConfig)
CloudExporterConfigDirect link to cloudexporterconfig
interface CloudExporterConfig extends BaseExporterConfig {
/** Maximum number of spans per batch. Default: 1000 */
maxBatchSize?: number
/** Maximum wait time before flushing in milliseconds. Default: 5000 */
maxBatchWaitMs?: number
/** Maximum retry attempts. Default: 3 */
maxRetries?: number
/** Cloud access token (from env or config) */
accessToken?: string
/** Project ID for project-scoped collector routes (letters, numbers, hyphens, underscores) */
projectId?: string
/** Base cloud observability endpoint */
endpoint?: string
/** Explicit cloud traces endpoint override */
tracesEndpoint?: string
/** Explicit cloud logs endpoint override */
logsEndpoint?: string
/** Explicit cloud metrics endpoint override */
metricsEndpoint?: string
/** Explicit cloud scores endpoint override */
scoresEndpoint?: string
/** Explicit cloud feedback endpoint override */
feedbackEndpoint?: string
}
Extends BaseExporterConfig, which includes:
logger?: IMastraLogger- Logger instancelogLevel?: LogLevel | 'debug' | 'info' | 'warn' | 'error'- Log level (default: INFO)
Environment variablesDirect link to Environment variables
The exporter reads these environment variables if not provided in config:
MASTRA_CLOUD_ACCESS_TOKEN- Authentication token forCloudExporterrequestsMASTRA_PROJECT_ID- Project ID to use when deriving project-scoped collector routes such as/projects/:projectId/ai/spans/publishMASTRA_CLOUD_TRACES_ENDPOINT- Traces endpoint override. Pass either a base origin or a full traces publish URL. Defaults tohttps://observability.mastra.aiin@mastra/observability@1.9.2and later
PropertiesDirect link to Properties
readonly name = 'mastra-cloud-observability-exporter';
MethodsDirect link to Methods
exportTracingEventDirect link to exporttracingevent
async exportTracingEvent(event: TracingEvent): Promise<void>
Processes tracing events for Cloud export.
Only SPAN_ENDED tracing events are exported. SPAN_STARTED and SPAN_UPDATED are ignored. Matching spans are buffered and uploaded to the Cloud traces endpoint on the next flush.
Returns: Promise<void> after the tracing event has been accepted for buffering or ignored.
onLogEventDirect link to onlogevent
async onLogEvent(event: LogEvent): Promise<void>
Processes log signals for Cloud export.
Every LogEvent passed to this handler is buffered and exported to the Cloud logs endpoint derived from the configured base endpoint. Unlike tracing, there is no additional event-status filtering at the CloudExporter level. If the exporter is disabled, this method becomes a no-op.
Returns: Promise<void> after the log event has been accepted for buffering.
onMetricEventDirect link to onmetricevent
async onMetricEvent(event: MetricEvent): Promise<void>
Processes metric signals for Cloud export.
Every MetricEvent passed to this handler is buffered and exported to the Cloud metrics endpoint derived from the configured base endpoint. There is no additional filtering by metric subtype or status inside CloudExporter; the exporter forwards every metric event it receives unless it is disabled.
Returns: Promise<void> after the metric event has been accepted for buffering.
onScoreEventDirect link to onscoreevent
async onScoreEvent(event: ScoreEvent): Promise<void>
Processes score signals for Cloud export.
Every ScoreEvent passed to this handler is buffered and exported to the Cloud scores endpoint derived from the configured base endpoint. There is no extra filtering at the exporter layer beyond the disabled-exporter check, so all score events received by this method are forwarded.
Returns: Promise<void> after the score event has been accepted for buffering.
onFeedbackEventDirect link to onfeedbackevent
async onFeedbackEvent(event: FeedbackEvent): Promise<void>
Processes feedback signals for Cloud export.
Every FeedbackEvent passed to this handler is buffered and exported to the Cloud feedback endpoint derived from the configured base endpoint. There is no feedback-type filtering inside CloudExporter; all feedback events received here are forwarded unless the exporter is disabled.
Returns: Promise<void> after the feedback event has been accepted for buffering.
flushDirect link to flush
async flush(): Promise<void>
Force flushes any buffered events to the Mastra platform without shutting down the exporter. Useful in serverless environments where you need to ensure spans are exported before the runtime terminates.
shutdownDirect link to shutdown
async shutdown(): Promise<void>
Flushes remaining events and performs cleanup.
BehaviorDirect link to Behavior
AuthenticationDirect link to Authentication
If no access token is provided via config or environment variable, the exporter:
- Logs a warning with sign-up information
- Operates as a no-op (discards all events)
BatchingDirect link to Batching
The exporter batches tracing spans, logs, metrics, scores, and feedback for efficient network usage:
- Flushes when total buffered event count reaches
maxBatchSize - Flushes when
maxBatchWaitMselapsed since the first buffered signal in the batch - Flushes on
shutdown()
Error handlingDirect link to Error handling
- Uses exponential backoff retry with
maxRetriesattempts - Drops batches after all retries fail
- Logs errors but continues processing new events
Endpoint routingDirect link to Endpoint routing
- Base origins derive signal endpoints automatically
- Without
projectId, derived routes use/ai/{signal}/publish - With
projectIdorMASTRA_PROJECT_ID, derived routes use/projects/:projectId/ai/{signal}/publish - Explicit full publish URLs are used as-is, even when
projectIdis configured
Signal ProcessingDirect link to Signal Processing
exportTracingEvent()only exportsSPAN_ENDEDtracing eventsonLogEvent(),onMetricEvent(),onScoreEvent(), andonFeedbackEvent()buffer every event they receive for their respective signal type- All supported signal batches are uploaded to their matching Cloud publish endpoints during
flush()andshutdown()
MastraCloudSpanRecordDirect link to mastracloudspanrecord
Internal format for cloud spans:
interface MastraCloudSpanRecord {
traceId: string
spanId: string
parentSpanId: string | null
name: string
spanType: string
attributes: Record<string, any> | null
metadata: Record<string, any> | null
startedAt: Date
endedAt: Date | null
input: any
output: any
error: any
isEvent: boolean
createdAt: Date
updatedAt: Date | null
}
UsageDirect link to Usage
import { CloudExporter } from '@mastra/observability'
// Uses environment variable for token
const exporter = new CloudExporter()
// Explicit configuration
const customExporter = new CloudExporter({
accessToken: 'your-token',
projectId: 'project_123',
maxBatchSize: 500,
maxBatchWaitMs: 2000,
logLevel: 'debug',
})
See alsoDirect link to See also
DocumentationDirect link to Documentation
- Tracing Overview: Complete guide
- Exporters: Exporter concepts
Other ExportersDirect link to Other Exporters
- DefaultExporter: Storage persistence
- ConsoleExporter: Debug output
- Langfuse: Langfuse integration
- Braintrust: Braintrust integration
ReferenceDirect link to Reference
- Configuration: Configuration options
- Interfaces: Type definitions