Tracing
v1 では、専用の @mastra/observability パッケージを使用するよう Observability システムが再構成されました。このガイドでは、アップグレード元のバージョンに応じた 2 つの移行方法を説明します。
telemetry: 設定を observability: に移行せずに Mastra パッケージを v1 へアップグレードすると、以前の設定は実行時に無視されます。サービスはエラーなく起動しますが、Trace、Log、Metric はどこにも送信されません。Mastra Cloud へデータを送信していた場合、Dashboard は空になります。
Mastra パッケージを更新する変更と同時にこの移行を完了し、アップグレードが完了したと判断する前に Mastra Studio に Trace が表示されることを確認してください。以前 Mastra Cloud でホストしていた場合は、Mastra Cloud 移行ガイドにも従ってください。新しい Platform へ MastraPlatformExporter でデータを送信するには、新しいアクセストークンと Studio プロジェクトが必要です。
以前の CloudExporter は MastraPlatformExporter(Mastra platform へデータを送信)に、以前の DefaultExporter は MastraStorageExporter(Mastra Storage にデータを永続化)に置き換えられました。元のクラスも @mastra/observability から引き続き利用でき、動作は同一ですが、非推奨です。新しいコードでは MastraPlatformExporter と MastraStorageExporter を使用してください。既存の CloudExporter または DefaultExporter の import は、今後のメジャーバージョンで削除されるまで動作します。
移行方法移行方法への直接リンク
OTEL ベースの Telemetry(0.x)から移行するOTEL ベースの Telemetry(0.x)から移行するへの直接リンク
Mastra で以前の telemetry: 設定を使用している場合、システムは全面的に再設計されています。
変更前(OTEL Telemetry を使用する 0.x):
import { Mastra } from '@mastra/core'
export const mastra = new Mastra({
telemetry: {
serviceName: 'my-app',
enabled: true,
sampling: {
type: 'always_on',
},
export: {
type: 'otlp',
endpoint: 'http://localhost:4318',
},
},
})
変更後(Observability を使用する v1):
import { Mastra } from '@mastra/core'
import {
Observability,
MastraStorageExporter,
MastraPlatformExporter,
SensitiveDataFilter,
} from '@mastra/observability'
export const mastra = new Mastra({
observability: new Observability({
configs: {
default: {
serviceName: 'mastra',
exporters: [
new MastraStorageExporter(), // Persists observability events to Mastra Storage
new MastraPlatformExporter(), // Sends observability events to Mastra platform (if MASTRA_PLATFORM_ACCESS_TOKEN is set)
],
spanOutputProcessors: [
new SensitiveDataFilter(), // Redacts sensitive data like passwords, tokens, keys
],
},
},
}),
})
この設定には、MastraStorageExporter、MastraPlatformExporter、SensitiveDataFilter Processor が含まれます。すべての設定オプションについては、Observability Tracing ドキュメントを参照してください。
変更後(カスタム設定を使用する v1)変更後(カスタム設定を使用する v1)への直接リンク
特定の Exporter(OTLP など)を設定する必要がある場合は、Exporter パッケージをインストールして設定します。
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/otel-exporter@latest @opentelemetry/exporter-trace-otlp-proto
pnpm add @mastra/otel-exporter@latest @opentelemetry/exporter-trace-otlp-proto
yarn add @mastra/otel-exporter@latest @opentelemetry/exporter-trace-otlp-proto
bun add @mastra/otel-exporter@latest @opentelemetry/exporter-trace-otlp-proto
import { Mastra } from '@mastra/core'
import { Observability } from '@mastra/observability'
import { OtelExporter } from '@mastra/otel-exporter'
export const mastra = new Mastra({
observability: new Observability({
configs: {
production: {
serviceName: 'my-app',
sampling: { type: 'always' },
exporters: [
new OtelExporter({
provider: {
custom: {
endpoint: 'http://localhost:4318/v1/traces',
protocol: 'http/protobuf',
},
},
}),
],
},
},
}),
})
主な変更点:
@mastra/observabilityパッケージをインストールするtelemetry:をobservability: new Observability()に置き換えるMastraStorageExporter、MastraPlatformExporter、SensitiveDataFilterを含む明示的なconfigs:を使用する- Export の型を文字列リテラル(
'otlp')から Exporter クラスのインスタンス(new OtelExporter())へ変更する
利用可能なすべての Exporter については、Exporter ドキュメントを参照してください。
AI Tracing から移行するAI Tracing から移行するへの直接リンク
すでに中間システムである AI Tracing へアップグレードしている場合は、新しいパッケージをインストールし、明示的な設定を使用する必要があります。
変更前(AI Tracing):
import { Mastra } from '@mastra/core'
export const mastra = new Mastra({
observability: {
default: { enabled: true },
},
})
変更後(v1 Observability):
import { Mastra } from '@mastra/core'
import {
Observability,
MastraStorageExporter,
MastraPlatformExporter,
SensitiveDataFilter,
} from '@mastra/observability'
export const mastra = new Mastra({
observability: new Observability({
configs: {
default: {
serviceName: 'mastra',
exporters: [new MastraStorageExporter(), new MastraPlatformExporter()],
spanOutputProcessors: [new SensitiveDataFilter()],
},
},
}),
})
主な変更点:
@mastra/observabilityパッケージをインストールする@mastra/observabilityからObservability、Exporter、Processor を import するMastraStorageExporter、MastraPlatformExporter、SensitiveDataFilterを含む明示的なconfigsを使用する
変更変更への直接リンク
パッケージの import パスパッケージの import パスへの直接リンク
Observability 機能は、専用の @mastra/observability パッケージへ移動しました。
移行するには、パッケージをインストールして import 文を更新します。
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/observability@latest
pnpm add @mastra/observability@latest
yarn add @mastra/observability@latest
bun add @mastra/observability@latest
- import { Tracing } from '@mastra/core/observability';
+ import { Observability } from '@mastra/observability';
Registry の設定Registry の設定への直接リンク
Observability Registry は、Plain Object ではなく、明示的な Config を含む Observability クラスのインスタンスを使用して設定するようになりました。
移行するには、明示的な Exporter と Processor を指定した new Observability() を使用します。
+ import {
+ Observability,
+ MastraStorageExporter,
+ MastraPlatformExporter,
+ SensitiveDataFilter,
+ } from '@mastra/observability';
export const mastra = new Mastra({
- observability: {
- default: { enabled: true },
- },
+ observability: new Observability({
+ configs: {
+ default: {
+ serviceName: 'mastra',
+ exporters: [new MastraStorageExporter(), new MastraPlatformExporter()],
+ spanOutputProcessors: [new SensitiveDataFilter()],
+ },
+ },
+ }),
});
設定プロパティを processors から spanOutputProcessors へ変更configuration-property-processors-to-spanoutputprocessorsへの直接リンク
Span Processor の設定プロパティが processors から spanOutputProcessors に改名されました。
移行するには、設定オブジェクトのプロパティ名を変更します。
+ import { SensitiveDataFilter } from '@mastra/observability';
export const mastra = new Mastra({
observability: new Observability({
configs: {
production: {
serviceName: 'my-app',
- processors: [new SensitiveDataFilter()],
+ spanOutputProcessors: [new SensitiveDataFilter()],
exporters: [...],
},
},
}),
});
Exporter メソッドを exportEvent から exportTracingEvent へ変更exporter-method-exportevent-to-exporttracingeventへの直接リンク
カスタム Exporter を作成している場合は、Exporter メソッドが exportEvent から exportTracingEvent に改名されました。
移行するには、カスタム Exporter のメソッド実装を更新します。
export class MyExporter implements ObservabilityExporter {
- exportEvent(event: TracingEvent): void {
+ exportTracingEvent(event: TracingEvent): void {
// export logic
}
}
削除削除への直接リンク
OTEL ベースの telemetry 設定otel-based-telemetry-configurationへの直接リンク
0.x の OTEL ベースの telemetry 設定が削除されました。serviceName、sampling.type、export.type プロパティを使用する以前のシステムはサポートされません。
移行するには、上記の「OTEL ベースの Telemetry(0.x)から移行する」セクションに従ってください。詳しい設定オプションについては、Observability Tracing ドキュメントを参照してください。
カスタム Instrumentation ファイルカスタム Instrumentation ファイルへの直接リンク
/mastra 内の Instrumentation ファイル(拡張子 .ts、.js、.mjs)の自動検出が削除されました。別ファイルによるカスタム Instrumentation はサポートされなくなりました。
移行するには、組み込みの Exporter システムを使用するか、ObservabilityExporter インターフェースでカスタム Exporter を実装します。詳しくは、Exporter ドキュメントを参照してください。
instrumentation.mjs ファイルinstrumentationmjs-filesへの直接リンク
OpenTelemetry Instrumentation の初期化に instrumentation.mjs ファイルを使用していた場合(AWS Lambda などのデプロイ構成で一般的)、このファイルは不要になりました。新しい Observability システムは、Mastra インスタンスで直接設定します。
変更前(0.x)変更前(0.x)への直接リンク
Instrumentation ファイルが必要でした。
// instrumentation.mjs
import { NodeSDK } from '@opentelemetry/sdk-node'
// ... OTEL setup
また、プロセスの起動時に import する必要がありました。
node --import=./.mastra/output/instrumentation.mjs --env-file=".env" .mastra/output/index.mjs
変更後(v1)変更後(v1)への直接リンク
instrumentation.mjs ファイルを削除し、Mastra インスタンスで Observability を設定するだけです。
// src/mastra/index.ts
import {
Observability,
MastraStorageExporter,
MastraPlatformExporter,
SensitiveDataFilter,
} from '@mastra/observability'
export const mastra = new Mastra({
observability: new Observability({
configs: {
default: {
serviceName: 'mastra',
exporters: [new MastraStorageExporter(), new MastraPlatformExporter()],
spanOutputProcessors: [new SensitiveDataFilter()],
},
},
}),
})
--import フラグを指定せず、通常どおりプロセスを起動します。
node --env-file=".env" .mastra/output/index.mjs
個別の Instrumentation ファイルや特殊な起動フラグは不要です。
Provider 移行リファレンスProvider 移行リファレンスへの直接リンク
0.x で特定の Provider と OTEL ベースの Telemetry を使用していた場合、v1 では次のように設定します。
| Provider | Exporter | ガイド | リファレンス |
|---|---|---|---|
| Arize AX, Arize Phoenix | Arize | ガイド | リファレンス |
| Braintrust | Braintrust | ガイド | リファレンス |
| Langfuse | Langfuse | ガイド | リファレンス |
| LangSmith | LangSmith | ガイド | リファレンス |
| Dash0, Laminar, New Relic, SigNoz, Traceloop, Custom OTEL | OpenTelemetry | ガイド | リファレンス |
| LangWatch | <近日公開> | - | - |
インストールインストールへの直接リンク
専用 Exporter(Arize、Braintrust、Langfuse、LangSmith):
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/[exporter-name]-exporter
pnpm add @mastra/[exporter-name]-exporter
yarn add @mastra/[exporter-name]-exporter
bun add @mastra/[exporter-name]-exporter
OpenTelemetry Exporter(Dash0、Laminar、New Relic、SigNoz、Traceloop):
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/otel-exporter@latest
pnpm add @mastra/otel-exporter@latest
yarn add @mastra/otel-exporter@latest
bun add @mastra/otel-exporter@latest
加えて、Provider に必要なプロトコルパッケージをインストールします(OTEL ガイドを参照)。