docs/src/content/en/reference/observability/tracing/configuration.mdx
import PropertiesTable from "@site/src/components/PropertiesTable";
ObservabilityRegistryConfiginterface ObservabilityRegistryConfig {
default?: { enabled?: boolean }
configs?: Record<string, Omit<ObservabilityInstanceConfig, 'name'> | ObservabilityInstance>
configSelector?: ConfigSelector
}
<PropertiesTable content={[ { name: 'default', type: '{ enabled?: boolean }', description: 'Enable default configuration with DefaultExporter and CloudExporter', required: false, }, { name: 'configs', type: "Record<string, Omit<ObservabilityInstanceConfig, 'name'> | ObservabilityInstance>", description: 'Named observability instance configurations or pre-instantiated instances', required: false, }, { name: 'configSelector', type: 'ConfigSelector', description: 'Runtime configuration selector function', required: false, }, ]} />
ObservabilityInstanceConfiginterface ObservabilityInstanceConfig {
name: string
serviceName: string
sampling?: SamplingStrategy
exporters?: ObservabilityExporter[]
spanOutputProcessors?: SpanOutputProcessor[]
includeInternalSpans?: boolean
requestContextKeys?: string[]
serializationOptions?: SerializationOptions
}
<PropertiesTable content={[ { name: 'name', type: 'string', description: 'Configuration identifier', required: true, }, { name: 'serviceName', type: 'string', description: 'Service name in traces', required: true, }, { name: 'sampling', type: 'SamplingStrategy', description: 'Sampling configuration (defaults to ALWAYS)', required: false, }, { name: 'exporters', type: 'ObservabilityExporter[]', description: 'Trace data exporters', required: false, }, { name: 'spanOutputProcessors', type: 'SpanOutputProcessor[]', description: 'Span output processors', required: false, }, { name: 'includeInternalSpans', type: 'boolean', description: 'Include spans internal to Mastra operations', required: false, }, { name: 'requestContextKeys', type: 'string[]', description: 'RequestContext keys to extract as metadata (supports dot notation)', required: false, }, { name: 'serializationOptions', type: 'SerializationOptions', description: 'Options for controlling serialization of span data (input/output/attributes)', required: false, properties: [ { type: 'SerializationOptions', parameters: [ { name: 'maxStringLength', type: 'number', description: 'Maximum length for string values (default: 1024)', isOptional: true, }, { name: 'maxDepth', type: 'number', description: 'Maximum depth for nested objects (default: 6)', isOptional: true, }, { name: 'maxArrayLength', type: 'number', description: 'Maximum number of items in arrays (default: 50)', isOptional: true, }, { name: 'maxObjectKeys', type: 'number', description: 'Maximum number of keys in objects (default: 50)', isOptional: true, }, ], }, ], }, ]} />
SamplingStrategytype SamplingStrategy =
| { type: 'always' }
| { type: 'never' }
| { type: 'ratio'; probability: number }
| { type: 'custom'; sampler: (options?: TracingOptions) => boolean }
ConfigSelectortype ConfigSelector = (
options: ConfigSelectorOptions,
availableConfigs: ReadonlyMap<string, ObservabilityInstance>,
) => string | undefined
ConfigSelectorOptionsinterface ConfigSelectorOptions {
requestContext?: RequestContext
}
The Observability class provides methods for managing observability instances:
registerInstanceregisterInstance(
name: string,
instance: ObservabilityInstance,
isDefault?: boolean
): void;
Registers an observability instance in the registry.
getInstancegetInstance(name: string): ObservabilityInstance | undefined;
Retrieves an observability instance by name.
getDefaultInstancegetDefaultInstance(): ObservabilityInstance | undefined;
Returns the default observability instance.
getSelectedInstancegetSelectedInstance(
options: ConfigSelectorOptions
): ObservabilityInstance | undefined;
Returns the observability instance selected by the config selector or default.
listInstanceslistInstances(): ReadonlyMap<string, ObservabilityInstance>;
Returns all registered observability instances.
hasInstancehasInstance(name: string): boolean;
Checks if an observability instance exists.
setConfigSelectorsetConfigSelector(selector: ConfigSelector): void;
Sets the config selector function.
unregisterInstanceunregisterInstance(name: string): boolean;
Removes an observability instance from the registry.
clear(): void;
Clears all instances without shutdown.
async shutdown(): Promise<void>;
Shuts down all observability instances and clears the registry.