Interfaces
Interfaces principalesLien direct vers Interfaces principales
ObservabilityInstanceLien direct vers observabilityinstance
Interface principale de l’observabilité.
interface ObservabilityInstance {
/** Get current configuration */
getConfig(): Readonly<Required<ObservabilityInstanceConfig>>
/** Get all exporters */
getExporters(): readonly ObservabilityExporter[]
/** Get all span output processors */
getSpanOutputProcessors(): readonly SpanOutputProcessor[]
/** Get the logger instance (for exporters and other components) */
getLogger(): IMastraLogger
/** Start a new span of a specific SpanType */
startSpan<TType extends SpanType>(options: StartSpanOptions<TType>): Span<TType>
/** Force flush any buffered spans without shutting down */
flush(): Promise<void>
/** Shutdown observability and clean up resources */
shutdown(): Promise<void>
}
SpanTypeMapLien direct vers spantypemap
Association des types de spans aux interfaces d’attributs correspondantes.
interface SpanTypeMap {
AGENT_RUN: AgentRunAttributes
WORKFLOW_RUN: WorkflowRunAttributes
MODEL_GENERATION: ModelGenerationAttributes
MODEL_STEP: ModelStepAttributes
MODEL_CHUNK: ModelChunkAttributes
TOOL_CALL: ToolCallAttributes
CLIENT_TOOL_CALL: ClientToolCallAttributes
PROVIDER_TOOL_CALL: ProviderToolCallAttributes
MCP_TOOL_CALL: MCPToolCallAttributes
PROCESSOR_RUN: ProcessorRunAttributes
WORKFLOW_STEP: WorkflowStepAttributes
WORKFLOW_CONDITIONAL: WorkflowConditionalAttributes
WORKFLOW_CONDITIONAL_EVAL: WorkflowConditionalEvalAttributes
WORKFLOW_PARALLEL: WorkflowParallelAttributes
WORKFLOW_LOOP: WorkflowLoopAttributes
WORKFLOW_SLEEP: WorkflowSleepAttributes
WORKFLOW_WAIT_EVENT: WorkflowWaitEventAttributes
GENERIC: AIBaseAttributes
}
Cette association définit l’interface d’attributs utilisée pour chaque type de span lors de la création ou du traitement des spans.
SpanLien direct vers Span
Interface Span utilisée en interne pour le tracing.
interface Span<TType extends SpanType> {
readonly id: string
readonly traceId: string
readonly type: TType
readonly name: string
/** Is an internal span? (spans internal to the operation of mastra) */
isInternal: boolean
/** Parent span reference (undefined for root spans) */
parent?: AnySpan
/** Pointer to the ObservabilityInstance instance */
observabilityInstance: ObservabilityInstance
attributes?: SpanTypeMap[TType]
metadata?: Record<string, any>
input?: any
output?: any
errorInfo?: any
/** Tags for categorizing traces (only present on root spans) */
tags?: string[]
/** End the span */
end(options?: EndSpanOptions<TType>): void
/** Record an error for the span, optionally end the span as well */
error(options: ErrorSpanOptions<TType>): void
/** Update span attributes */
update(options: UpdateSpanOptions<TType>): void
/** Create child span - can be any span type independent of parent */
createChildSpan<TChildType extends SpanType>(
options: ChildSpanOptions<TChildType>,
): Span<TChildType>
/** Create event span - can be any span type independent of parent */
createEventSpan<TChildType extends SpanType>(
options: ChildEventOptions<TChildType>,
): Span<TChildType>
/** Returns TRUE if the span is the root span of a trace */
get isRootSpan(): boolean
/** Returns TRUE if the span is a valid span (not a NO-OP Span) */
get isValid(): boolean
}
ObservabilityExporterLien direct vers observabilityexporter
Interface des exporters d’observabilité.
interface ObservabilityExporter {
/** Exporter name */
name: string
/** Initialize exporter with tracing configuration and/or access to Mastra */
init?(options: InitExporterOptions): void
/** Handle tracing events */
onTracingEvent?(event: TracingEvent): void | Promise<void>
/** Handle log events */
onLogEvent?(event: LogEvent): void | Promise<void>
/** Handle metric events */
onMetricEvent?(event: MetricEvent): void | Promise<void>
/** Handle score events */
onScoreEvent?(event: ScoreEvent): void | Promise<void>
/** Handle feedback events */
onFeedbackEvent?(event: FeedbackEvent): void | Promise<void>
/** Handle exporter pipeline droppedEvent */
onDroppedEvent?(event: ObservabilityDropEvent): void | Promise<void>
/** Export tracing events */
exportTracingEvent(event: TracingEvent): Promise<void>
/**
* @deprecated Implement `onScoreEvent` instead. Eval scores now flow through the
* unified observability bus as `ScoreEvent`s. This method is preserved on the
* interface for backwards compatibility with existing exporters; new exporters
* should not implement it.
*/
addScoreToTrace?({
traceId,
spanId,
score,
reason,
scorerName,
metadata,
}: {
traceId: string
spanId?: string
score: number
reason?: string
scorerName: string
metadata?: Record<string, any>
}): Promise<void>
/** Force flush any buffered spans without shutting down */
flush(): Promise<void>
/** Shutdown exporter */
shutdown(): Promise<void>
}
Les charges utiles des callbacks d’événements utilisent les enveloppes du bus d’événements d’observabilité :
TracingEvent transporte les événements du cycle de vie des spans avec exportedSpan, LogEvent
encapsule ExportedLog dans log, MetricEvent encapsule ExportedMetric dans
metric, ScoreEvent encapsule ExportedScore dans score et FeedbackEvent
encapsule ExportedFeedback dans feedback. Pour connaître le comportement de l’exporter de la plateforme Mastra avec ces
callbacks, consultez MastraPlatformExporter.
Comme LogEvent, MetricEvent et FeedbackEvent, ScoreEvent est une
enveloppe du bus d’observabilité qui encapsule une charge utile délimitée. Pour les scores, cette
charge utile est ExportedScore.
ScoreEventLien direct vers scoreevent
Les événements de score sont envoyés aux exporters via onScoreEvent. L’événement est une petite
enveloppe contenant le type de signal et la charge utile du score :
interface ScoreEvent {
type: 'score'
score: ExportedScore
}
ExportedScoreLien direct vers exportedscore
ExportedScore est la charge utile délimitée que les exporters reçoivent dans
ScoreEvent.score. Elle contient l’identité du score, la trace ou le span cible servant de point d’ancrage,
les informations sur le scorer, la valeur, une explication facultative et les métadonnées de corrélation.
interface ExportedScore {
scoreId: string
timestamp: Date
traceId?: string
spanId?: string
scorerId: string
scorerName?: string
scorerVersion?: string
source?: string
scoreSource?: string
score: number
reason?: string
experimentId?: string
scoreTraceId?: string
targetEntityType?: EntityType
correlationContext?: CorrelationContext
metadata?: Record<string, unknown>
}
traceId et spanId identifient la trace ou le span évalué. scoreTraceId
identifie la trace de l’exécution du scoring elle-même lorsque ce scorer a été tracé. Pour les
nouveaux exporters, préférez scoreSource au champ obsolète source, et
préférez correlationContext.experimentId au champ de premier niveau obsolète
experimentId.
EntityType est l’énumération des entités d’observabilité de Mastra. Les valeurs actuelles incluent
agent, scorer, rag_ingestion, trajectory, input_processor,
input_step_processor, output_processor, output_step_processor,
workflow_step, tool, workflow_run et memory.
CorrelationContext est l’instantané du contexte partagé attaché aux signaux
d’observabilité. Il peut contenir des champs de hiérarchie d’entités, des identifiants d’utilisateur ou d’organisation,
des informations sur l’exécution, la session, le thread, la requête, l’environnement, la source, le nom du service, l’expérimentation
et les tags. Pour la cible évaluée, préférez les champs de premier niveau traceId et spanId de
ExportedScore.
ObservabilityDropEventLien direct vers observabilitydropevent
Événement structuré émis lorsque le pipeline de l’exporter abandonne des événements d’observabilité.
type ObservabilityDropSignal = 'tracing' | 'log' | 'metric' | 'score' | 'feedback'
type ObservabilityDropReason = 'unsupported-storage' | 'retry-exhausted'
interface ObservabilityDropEvent {
type: 'drop'
signal: ObservabilityDropSignal
reason: ObservabilityDropReason
count: number
timestamp: Date
exporterName: string
storageName?: string
error?: {
id?: string
domain?: string
message: string
}
}
Utilisez onDroppedEvent sur un exporter ou un bridge personnalisé pour transmettre ces événements à des systèmes externes de métriques ou d’alerte.
SpanOutputProcessorLien direct vers spanoutputprocessor
Interface des processeurs de sortie de spans.
interface SpanOutputProcessor {
/** Processor name */
name: string
/** Process span before export */
process(span?: AnySpan): AnySpan | undefined
/** Shutdown processor */
shutdown(): Promise<void>
}
Types de spansLien direct vers Types de spans
SpanTypeLien direct vers spantype
Types de spans propres à l’IA avec leurs métadonnées associées.
enum SpanType {
/** Agent run - root span for agent processes */
AGENT_RUN = 'agent_run',
/** Generic span for custom operations */
GENERIC = 'generic',
/** Model generation with model calls, token usage, prompts, completions */
MODEL_GENERATION = 'model_generation',
/** Single model execution step within a generation (one API call) */
MODEL_STEP = 'model_step',
/** Individual model streaming chunk/event */
MODEL_CHUNK = 'model_chunk',
/** MCP (Model Context Protocol) tool execution */
MCP_TOOL_CALL = 'mcp_tool_call',
/** Input or Output Processor execution */
PROCESSOR_RUN = 'processor_run',
/** Function/tool execution with inputs, outputs, errors */
TOOL_CALL = 'tool_call',
/**
* Client-side tool execution marker. The server creates this span
* when the model emits a client tool call, injects its W3C carrier
* into the outgoing tool-call chunk, then ends the span once tool
* args are available. Child spans/logs from the client SDK flow back
* as OTLP/JSON via the ClientObservabilityProxy interface in
* @mastra/observability and parent themselves under this span.
* See the "Client tools" section in the @mastra/client-js reference
* for the full flow.
*/
CLIENT_TOOL_CALL = 'client_tool_call',
/**
* Provider-executed (server-side) tool span. Reconstructed from
* tool-call and tool-result stream chunks for tools the model
* provider executes (e.g. Anthropic code execution, server-side
* web search). Created on the tool-result chunk under the model
* step that delivered it, with the start time backdated to the
* tool-call chunk.
*/
PROVIDER_TOOL_CALL = 'provider_tool_call',
/** Workflow run - root span for workflow processes */
WORKFLOW_RUN = 'workflow_run',
/** Workflow step execution with step status, data flow */
WORKFLOW_STEP = 'workflow_step',
/** Workflow conditional execution with condition evaluation */
WORKFLOW_CONDITIONAL = 'workflow_conditional',
/** Individual condition evaluation within conditional */
WORKFLOW_CONDITIONAL_EVAL = 'workflow_conditional_eval',
/** Workflow parallel execution */
WORKFLOW_PARALLEL = 'workflow_parallel',
/** Workflow loop execution */
WORKFLOW_LOOP = 'workflow_loop',
/** Workflow sleep operation */
WORKFLOW_SLEEP = 'workflow_sleep',
/** Workflow wait for event operation */
WORKFLOW_WAIT_EVENT = 'workflow_wait_event',
}
AnySpanLien direct vers anyspan
Type union destiné aux cas qui doivent gérer n’importe quel span.
type AnySpan = Span<keyof SpanTypeMap>
Attributs des spansLien direct vers Attributs des spans
AgentRunAttributesLien direct vers agentrunattributes
Attributs d’une exécution d’Agent.
interface AgentRunAttributes {
/** Agent identifier */
agentId: string
/** Agent Instructions */
instructions?: string
/** Agent Prompt */
prompt?: string
/** Available tools for this execution */
availableTools?: string[]
/** Maximum steps allowed */
maxSteps?: number
}
ModelGenerationAttributesLien direct vers modelgenerationattributes
Attributs d’une génération de modèle.
interface ModelGenerationAttributes {
/** Model name (e.g., 'gpt-5.4', 'claude-opus-4-6') */
model?: string
/** Model provider (e.g., 'openai', 'anthropic') */
provider?: string
/**
* Definitions of the tools made available to the model for this generation
* (name, description, and JSON-schema parameters), captured once per
* generation. Per-step tool names live on MODEL_INFERENCE spans as
* `availableTools`.
*/
tools?: ModelToolDefinition[]
/** Type of result/output this model call produced */
resultType?: 'tool_selection' | 'response_generation' | 'reasoning' | 'planning'
/** Token usage statistics */
usage?: {
promptTokens?: number
completionTokens?: number
totalTokens?: number
promptCacheHitTokens?: number
promptCacheMissTokens?: number
}
/** Model parameters */
parameters?: {
maxOutputTokens?: number
temperature?: number
topP?: number
topK?: number
presencePenalty?: number
frequencyPenalty?: number
stopSequences?: string[]
seed?: number
maxRetries?: number
}
/** Whether this was a streaming response */
streaming?: boolean
/** Reason the generation finished */
finishReason?: string
}
ModelToolDefinitionLien direct vers modeltooldefinition
Définition sérialisée d’un outil mis à la disposition du modèle, attachée aux spans MODEL_GENERATION afin que les exporters d’observabilité puissent exposer les schémas des outils.
interface ModelToolDefinition {
/** Tool type: 'function' for standard tools, or the provider tool type (e.g. 'provider-defined') */
type: string
name: string
description?: string
/** JSON schema of the tool's input parameters (function tools) */
parameters?: Record<string, unknown>
/** Provider tool id (e.g. 'anthropic.web_search_20250305') for provider-defined tools */
id?: string
}
ModelStepAttributesLien direct vers modelstepattributes
Attributs d’une étape du modèle, pour une seule exécution du modèle au sein d’une génération.
interface ModelStepAttributes {
/** Index of this step in the generation (0, 1, 2, ...) */
stepIndex?: number
/** Token usage statistics */
usage?: UsageStats
/** Reason this step finished (stop, tool-calls, length, etc.) */
finishReason?: string
/** Should execution continue */
isContinued?: boolean
/** Result warnings */
warnings?: Record<string, any>
}
ModelChunkAttributesLien direct vers modelchunkattributes
Attributs d’un chunk de modèle, pour chaque chunk ou événement de streaming.
interface ModelChunkAttributes {
/** Type of chunk (text-delta, reasoning-delta, tool-call, etc.) */
chunkType?: string
/** Sequence number of this chunk in the stream */
sequenceNumber?: number
}
ToolCallAttributesLien direct vers toolcallattributes
Attributs d’un appel d’outil.
interface ToolCallAttributes {
toolId?: string
toolType?: string
toolDescription?: string
toolCallId?: string
success?: boolean
}
MCPToolCallAttributesLien direct vers MCPToolCallAttributes
Attributs d’un appel d’outil MCP.
interface MCPToolCallAttributes {
/** Id of the MCP tool/function */
toolId: string
/** MCP server identifier */
mcpServer: string
/** MCP server version */
serverVersion?: string
/** Tool description */
toolDescription?: string
toolCallId?: string
/** Whether tool execution was successful */
success?: boolean
}
ProcessorRunAttributesLien direct vers processorrunattributes
Attributs d’un Processor.
interface ProcessorRunAttributes {
/** Name of the Processor */
processorName: string
/** Processor type (input or output) */
processorType: 'input' | 'output'
/** Processor index in the agent */
processorIndex?: number
}
WorkflowRunAttributesLien direct vers workflowrunattributes
Attributs d’une exécution de Workflow.
interface WorkflowRunAttributes {
/** Workflow identifier */
workflowId: string
/** Workflow status */
status?: WorkflowRunStatus
}
WorkflowStepAttributesLien direct vers workflowstepattributes
Attributs d’une étape de Workflow.
interface WorkflowStepAttributes {
/** Step identifier */
stepId: string
/** Step status */
status?: WorkflowStepStatus
}
Types d’optionsLien direct vers Types d’options
StartSpanOptionsLien direct vers startspanoptions
Options permettant de démarrer de nouveaux spans.
interface StartSpanOptions<TType extends SpanType> {
/** Span type */
type: TType
/** Span name */
name: string
/** Span attributes */
attributes?: SpanTypeMap[TType]
/** Span metadata */
metadata?: Record<string, any>
/** Input data */
input?: any
/** Parent span */
parent?: AnySpan
/** Policy-level tracing configuration */
tracingPolicy?: TracingPolicy
/** Options passed when using a custom sampler strategy */
customSamplerOptions?: CustomSamplerOptions
}
UpdateSpanOptionsLien direct vers updatespanoptions
Options permettant de mettre à jour des spans.
interface UpdateSpanOptions<TType extends SpanType> {
/** Span attributes */
attributes?: Partial<SpanTypeMap[TType]>
/** Span metadata */
metadata?: Record<string, any>
/** Input data */
input?: any
/** Output data */
output?: any
}
EndSpanOptionsLien direct vers endspanoptions
Options permettant de terminer des spans.
interface EndSpanOptions<TType extends SpanType> {
/** Output data */
output?: any
/** Span metadata */
metadata?: Record<string, any>
/** Span attributes */
attributes?: Partial<SpanTypeMap[TType]>
}
ErrorSpanOptionsLien direct vers errorspanoptions
Options permettant d’enregistrer les erreurs des spans.
interface ErrorSpanOptions<TType extends SpanType> {
/** The error associated with the issue */
error: Error
/** End the span when true */
endSpan?: boolean
/** Span metadata */
metadata?: Record<string, any>
/** Span attributes */
attributes?: Partial<SpanTypeMap[TType]>
}
Types de contexteLien direct vers Types de contexte
TracingContextLien direct vers tracingcontext
Contexte de Tracing propagé pendant l’exécution d’un Workflow et d’un Agent.
interface TracingContext {
/** Current span for creating child spans and adding metadata */
currentSpan?: AnySpan
}
TracingPropertiesLien direct vers tracingproperties
Propriétés renvoyées à l’utilisateur pour manipuler les traces depuis l’extérieur.
type TracingProperties = {
/** Trace ID used on the execution (if the execution was traced) */
traceId?: string
}
TracingOptionsLien direct vers tracingoptions
Options transmises lors du démarrage d’une nouvelle exécution d’Agent ou de Workflow.
interface TracingOptions {
/** Metadata to add to the root trace span */
metadata?: Record<string, any>
/**
* Additional RequestContext keys to extract as metadata for this trace.
* These keys are added to the requestContextKeys config.
* Supports dot notation for nested values (e.g., 'user.id', 'session.data.experimentId').
*/
requestContextKeys?: string[]
/**
* Trace ID to use for this execution (1-32 hexadecimal characters).
* If provided, this trace will be part of the specified trace rather than starting a new one.
*/
traceId?: string
/**
* Parent span ID to use for this execution (1-16 hexadecimal characters).
* If provided, the root span will be created as a child of this span.
*/
parentSpanId?: string
/**
* Tags to apply to this trace.
* Tags are string labels that can be used to categorize and filter traces
* Note: Tags are only applied to the root span of a trace.
*/
tags?: string[]
/**
* When true, input data will be hidden from all spans in this trace.
* Useful for protecting sensitive data from being logged.
*/
hideInput?: boolean
/**
* When true, output data will be hidden from all spans in this trace.
* Useful for protecting sensitive data from being logged.
*/
hideOutput?: boolean
}
TracingPolicyLien direct vers tracingpolicy
Configuration du tracing au niveau de la stratégie, appliquée lors de la création d’un Workflow ou d’un Agent.
interface TracingPolicy {
/**
* Bitwise options to set different types of spans as Internal in
* a workflow or agent execution. Internal spans are hidden by
* default in exported traces.
*/
internal?: InternalSpans
}
Types de configurationLien direct vers Types de configuration
ObservabilityInstanceConfigLien direct vers observabilityinstanceconfig
Configuration d’une instance d’observabilité unique.
interface ObservabilityInstanceConfig {
/** Unique identifier for this config in the observability registry */
name: string
/** Service name for observability */
serviceName: string
/** Sampling strategy - controls whether tracing is collected (defaults to ALWAYS) */
sampling?: SamplingStrategy
/** Custom exporters */
exporters?: ObservabilityExporter[]
/** Custom span output processors */
spanOutputProcessors?: SpanOutputProcessor[]
/** Set to true if you want to see spans internal to the operation of mastra */
includeInternalSpans?: boolean
/** RequestContext keys to automatically extract as metadata for all spans */
requestContextKeys?: string[]
}
ObservabilityRegistryConfigLien direct vers observabilityregistryconfig
Configuration complète du registre d’observabilité.
interface ObservabilityRegistryConfig {
/** Enables default exporters, with sampling: always, and sensitive data filtering */
default?: {
enabled?: boolean
}
/** Map of tracing instance names to their configurations or pre-instantiated instances */
configs?: Record<string, Omit<ObservabilityInstanceConfig, 'name'> | ObservabilityInstance>
/** Optional selector function to choose which tracing instance to use */
configSelector?: ConfigSelector
}
Types d’échantillonnageLien direct vers Types d’échantillonnage
SamplingStrategyLien direct vers samplingstrategy
Configuration de la stratégie d’échantillonnage.
type SamplingStrategy =
| { type: 'always' }
| { type: 'never' }
| { type: 'ratio'; probability: number }
| { type: 'custom'; sampler: (options?: CustomSamplerOptions) => boolean }
CustomSamplerOptionsLien direct vers customsampleroptions
Options transmises lors de l’utilisation d’une stratégie d’échantillonnage personnalisée.
interface CustomSamplerOptions {
requestContext?: RequestContext
metadata?: Record<string, any>
}
Types de sélecteur de configurationLien direct vers Types de sélecteur de configuration
ConfigSelectorLien direct vers configselector
Fonction permettant de sélectionner l’instance d’observabilité à utiliser pour un span.
type ConfigSelector = (
options: ConfigSelectorOptions,
availableConfigs: ReadonlyMap<string, ObservabilityInstance>,
) => string | undefined
ConfigSelectorOptionsLien direct vers configselectoroptions
Options transmises lors de l’utilisation d’un sélecteur de configuration de tracing personnalisé.
interface ConfigSelectorOptions {
/** Request Context */
requestContext?: RequestContext
}
Spans internesLien direct vers Spans internes
InternalSpansLien direct vers internalspans
Options bit à bit permettant de définir différents types de spans comme internes lors de l’exécution d’un Workflow ou d’un Agent.
enum InternalSpans {
/** No spans are marked internal */
NONE = 0,
/** Workflow spans are marked internal */
WORKFLOW = 1 << 0,
/** Agent spans are marked internal */
AGENT = 1 << 1,
/** Tool spans are marked internal */
TOOL = 1 << 2,
/** Model spans are marked internal */
MODEL = 1 << 3,
/** All spans are marked internal */
ALL = (1 << 4) - 1,
}
Voir aussiLien direct vers Voir aussi
DocumentationLien direct vers Documentation
- Présentation du Tracing : guide complet du Tracing
- Créer des spans enfants : utiliser les hiérarchies de spans
- Ajouter des métadonnées personnalisées : enrichir les traces
RéférenceLien direct vers Référence
- Configuration : registre et configuration
- Classes de Tracing : implémentations principales
- Référence des spans : méthodes du cycle de vie des spans