# Configuration ## `ObservabilityRegistryConfig` ```typescript interface ObservabilityRegistryConfig { default?: { enabled?: boolean } configs?: Record | ObservabilityInstance> configSelector?: ConfigSelector } ``` **default** (`{ enabled?: boolean }`): Enable default configuration with DefaultExporter and CloudExporter **configs** (`Record | ObservabilityInstance>`): Named observability instance configurations or pre-instantiated instances **configSelector** (`ConfigSelector`): Runtime configuration selector function ## `ObservabilityInstanceConfig` ```typescript interface ObservabilityInstanceConfig { name: string serviceName: string sampling?: SamplingStrategy exporters?: ObservabilityExporter[] spanOutputProcessors?: SpanOutputProcessor[] includeInternalSpans?: boolean requestContextKeys?: string[] serializationOptions?: SerializationOptions } ``` **name** (`string`): Configuration identifier **serviceName** (`string`): Service name in traces **sampling** (`SamplingStrategy`): Sampling configuration (defaults to ALWAYS) **exporters** (`ObservabilityExporter[]`): Trace data exporters **spanOutputProcessors** (`SpanOutputProcessor[]`): Span output processors **includeInternalSpans** (`boolean`): Include spans internal to Mastra operations **requestContextKeys** (`string[]`): RequestContext keys to extract as metadata (supports dot notation) **serializationOptions** (`SerializationOptions`): Options for controlling serialization of span data (input/output/attributes) **serializationOptions.maxStringLength** (`number`): Maximum length for string values (default: 1024) **serializationOptions.maxDepth** (`number`): Maximum depth for nested objects (default: 6) **serializationOptions.maxArrayLength** (`number`): Maximum number of items in arrays (default: 50) **serializationOptions.maxObjectKeys** (`number`): Maximum number of keys in objects (default: 50) ## `SamplingStrategy` ```typescript type SamplingStrategy = | { type: 'always' } | { type: 'never' } | { type: 'ratio'; probability: number } | { type: 'custom'; sampler: (options?: TracingOptions) => boolean } ``` ## `ConfigSelector` ```typescript type ConfigSelector = ( options: ConfigSelectorOptions, availableConfigs: ReadonlyMap, ) => string | undefined ``` ## `ConfigSelectorOptions` ```typescript interface ConfigSelectorOptions { requestContext?: RequestContext } ``` ## Registry methods The Observability class provides methods for managing observability instances: ### `registerInstance` ```typescript registerInstance( name: string, instance: ObservabilityInstance, isDefault?: boolean ): void; ``` Registers an observability instance in the registry. ### `getInstance` ```typescript getInstance(name: string): ObservabilityInstance | undefined; ``` Retrieves an observability instance by name. ### `getDefaultInstance` ```typescript getDefaultInstance(): ObservabilityInstance | undefined; ``` Returns the default observability instance. ### `getSelectedInstance` ```typescript getSelectedInstance( options: ConfigSelectorOptions ): ObservabilityInstance | undefined; ``` Returns the observability instance selected by the config selector or default. ### `listInstances` ```typescript listInstances(): ReadonlyMap; ``` Returns all registered observability instances. ### `hasInstance` ```typescript hasInstance(name: string): boolean; ``` Checks if an observability instance exists. ### `setConfigSelector` ```typescript setConfigSelector(selector: ConfigSelector): void; ``` Sets the config selector function. ### `unregisterInstance` ```typescript unregisterInstance(name: string): boolean; ``` Removes an observability instance from the registry. ### clear ```typescript clear(): void; ``` Clears all instances without shutdown. ### shutdown ```typescript async shutdown(): Promise; ``` Shuts down all observability instances and clears the registry. ## See also ### Documentation - [Tracing Overview](https://mastra.ai/docs/observability/tracing/overview) - Concepts and usage guide - [Sampling Strategies](https://mastra.ai/docs/observability/tracing/overview) - Sampling configuration details - [Multi-Config Setup](https://mastra.ai/docs/observability/tracing/overview) - Using multiple configurations ### Reference - [Tracing Classes](https://mastra.ai/reference/observability/tracing/instances) - Core tracing classes - [Interfaces](https://mastra.ai/reference/observability/tracing/interfaces) - Type definitions - [Spans Reference](https://mastra.ai/reference/observability/tracing/spans) - Span lifecycle ### Exporters - [DefaultExporter](https://mastra.ai/reference/observability/tracing/exporters/default-exporter) - Storage configuration - [CloudExporter](https://mastra.ai/reference/observability/tracing/exporters/cloud-exporter) - Cloud setup - [Braintrust](https://mastra.ai/reference/observability/tracing/exporters/braintrust) - Braintrust integration - [Langfuse](https://mastra.ai/reference/observability/tracing/exporters/langfuse) - Langfuse integration - [LangSmith](https://mastra.ai/reference/observability/tracing/exporters/langsmith) - LangSmith integration