Skip to Content
DocsObservabilityNext.js Tracing

Next.js Tracing

Next.js requires additional configuration to enable OpenTelemetry tracing.

Step 1: Next.js Configuration

Start by enabling the instrumentation hook in your Next.js config:

next.config.ts
import type { NextConfig } from "next"; const nextConfig: NextConfig = { experimental: { instrumentationHook: true // Not required in Next.js 15+ } }; export default nextConfig;

Step 2: Mastra Configuration

Configure your Mastra instance:

mastra.config.ts
import { Mastra } from "@mastra/core"; export const mastra = new Mastra({ // ... other config telemetry: { serviceName: "your-project-name", enabled: true } });

Step 3: Configure your providers

If you’re using Next.js, you have two options for setting up OpenTelemetry instrumentation:

Option 1: Using a Custom Exporter

The default that will work across providers is to configure a custom exporter:

  1. Install the required dependencies (example using Langfuse):
npm install @opentelemetry/api langfuse-vercel
  1. Create an instrumentation file:
instrumentation.ts
import { NodeSDK, ATTR_SERVICE_NAME, Resource, } from '@mastra/core/telemetry/otel-vendor'; import { LangfuseExporter } from 'langfuse-vercel'; export function register() { const exporter = new LangfuseExporter({ // ... Langfuse config }) const sdk = new NodeSDK({ resource: new Resource({ [ATTR_SERVICE_NAME]: 'ai', }), traceExporter: exporter, }); sdk.start(); }

Option 2: Using Vercel’s Otel Setup

If you’re deploying to Vercel, you can use their OpenTelemetry setup:

  1. Install the required dependencies:
npm install @opentelemetry/api @vercel/otel
  1. Create an instrumentation file at the root of your project (or in the src folder if using one):
instrumentation.ts
import { registerOTel } from '@vercel/otel' export function register() { registerOTel({ serviceName: 'your-project-name' }) }

Summary

This setup will enable OpenTelemetry tracing for your Next.js application and Mastra operations.

For more details, see the documentation for: