Next.js Tracing
Next.jsでOpenTelemetryトレーシングを有効にするには、追加の設定が必要です。
ステップ1: Next.js設定
まず、Next.js設定でinstrumentationフックを有効にします:
next.config.ts
import type { NextConfig } from "next";
const nextConfig: NextConfig = {
experimental: {
instrumentationHook: true, // Not required in Next.js 15+
},
};
export default nextConfig;
ステップ2: Mastra設定
Mastraインスタンスを設定します:
mastra.config.ts
import { Mastra } from "@mastra/core";
export const mastra = new Mastra({
// ... other config
telemetry: {
serviceName: "your-project-name",
enabled: true,
},
});
ステップ3: プロバイダーの設定
Next.jsを使用している場合、OpenTelemetryインストルメンテーションの設定には2つのオプションがあります:
オプション1: カスタムエクスポーターの使用
プロバイダー間で動作するデフォルトは、カスタムエクスポーターを設定することです:
- 必要な依存関係をインストールします(Langfuseを使用した例):
npm install @opentelemetry/api langfuse-vercel
- instrumentationファイルを作成します:
instrumentation.ts
import {
NodeSDK,
ATTR_SERVICE_NAME,
resourceFromAttributes,
} 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: resourceFromAttributes({
[ATTR_SERVICE_NAME]: "ai",
}),
traceExporter: exporter,
});
sdk.start();
}
オプション2: VercelのOtel設定の使用
Vercelにデプロイする場合は、VercelのOpenTelemetry設定を使用できます:
- 必要な依存関係をインストールします:
npm install @opentelemetry/api @vercel/otel
- プロジェクトのルート(またはsrcフォルダを使用している場合はその中)にinstrumentationファイルを作成します:
instrumentation.ts
import { registerOTel } from "@vercel/otel";
export function register() {
registerOTel({ serviceName: "your-project-name" });
}
まとめ
この設定により、Next.jsアプリケーションとMastra操作でOpenTelemetryトレーシングが有効になります。
詳細については、以下のドキュメントを参照してください: