Skip to main content
This guide covers how to instrument Mastra for monitoring agent runs, LLM calls, token usage, tool calls, and costs. Mastra already creates OpenTelemetry spans through @mastra/otel-bridge. Monocle adds a Mastra observability config helper and a span processor that normalizes Mastra attributes to the fields used by the AI Agents dashboard. For the full list of required span attributes and what powers the AI dashboard, see the AI Agents feature page.

Installation

Peer dependencies: @mastra/core and @mastra/otel-bridge.

Usage with Mastra

Use createMastraObservabilityConfig() in your Mastra config. It creates the Mastra OtelBridge and excludes internal MODEL_STEP and MODEL_CHUNK spans by default because their data is already represented on the model generation span. When using @monocle.sh/adonisjs-agent, the MastraSpanProcessor is registered automatically when this package is installed. In other Node.js applications, add new MastraSpanProcessor() to your OpenTelemetry tracer provider so Mastra spans are normalized for Monocle.
mastra/index.ts

Normalized attributes

The Mastra processor preserves Mastra spans and adds the attributes Monocle expects: Model generation metadata is also copied to the parent invoke_agent span when Mastra emits it only on the child model span. This lets the Agents tab show the model, response preview, token usage, and cost on the agent run.

Scorers and evaluations

Mastra scorer events are exported as gen_ai.evaluation.result span events. The event name is a Monocle convention; Monocle reads the standard OpenTelemetry evaluation attributes first: For richer scorer metadata, use the Monocle evaluation extensions documented on the AI Agents feature page, such as gen_ai.evaluation.scorer.id, gen_ai.evaluation.scorer.version, and gen_ai.evaluation.target.trace_id.