OtelExporter
Trace とログを OpenTelemetry 互換の Observability プラットフォームへ送信します。Trace は標準化された GenAI セマンティック規約を使用します。ログは元の severity とメッセージ本文を維持し、OTEL ログレコードのネイティブ Trace コンテキストと mastra.traceId / mastra.spanId 属性の両方を介して Trace に関連付けられます。
コンストラクターコンストラクターへの直接リンク
new OtelExporter(config: OtelExporterConfig)
OtelExporterConfigotelexporterconfigへの直接リンク
interface OtelExporterConfig {
provider?: ProviderConfig
signals?: {
traces?: boolean
logs?: boolean
}
timeout?: number
batchSize?: number
logLevel?: 'debug' | 'info' | 'warn' | 'error'
}
Provider の設定Provider の設定への直接リンク
Dash0Configdash0configへの直接リンク
interface Dash0Config {
apiKey?: string
endpoint?: string
dataset?: string
}
SignozConfigsignozconfigへの直接リンク
interface SignozConfig {
apiKey?: string
region?: 'us' | 'eu' | 'in'
endpoint?: string
}
NewRelicConfignewrelicconfigへの直接リンク
interface NewRelicConfig {
apiKey?: string
endpoint?: string
}
TraceloopConfigtraceloopconfigへの直接リンク
interface TraceloopConfig {
apiKey?: string
destinationId?: string
endpoint?: string
}
LaminarConfiglaminarconfigへの直接リンク
interface LaminarConfig {
apiKey?: string
endpoint?: string
}
CustomConfigcustomconfigへの直接リンク
interface CustomConfig {
endpoint: string
protocol?: 'http/json' | 'http/protobuf' | 'grpc' | 'zipkin'
headers?: Record<string, string>
}
メソッドメソッドへの直接リンク
exportTracingEventexporttracingeventへの直接リンク
async exportTracingEvent(event: TracingEvent): Promise<void>
Tracing イベントを設定済みの OTEL バックエンドへエクスポートします。
flushflushへの直接リンク
async flush(): Promise<void>
exporter をシャットダウンせず、バッファー内のすべての Span を OTEL バックエンドへ強制的にフラッシュします。ランタイム終了前に Span が確実にエクスポートされるようにする必要があるサーバーレス環境で役立ちます。
shutdownshutdownへの直接リンク
async shutdown(): Promise<void>
保留中の Trace をフラッシュし、exporter をシャットダウンします。
使用例使用例への直接リンク
ゼロコンフィグ(環境変数を使用)ゼロコンフィグ(環境変数を使用)への直接リンク
import { OtelExporter } from '@mastra/otel-exporter'
// Set SIGNOZ_API_KEY, SIGNOZ_REGION environment variables
const exporter = new OtelExporter({ provider: { signoz: {} } })
// Or for other providers:
// Set DASH0_API_KEY, DASH0_ENDPOINT for Dash0
// Set NEW_RELIC_LICENSE_KEY for New Relic
// Set TRACELOOP_API_KEY for Traceloop
// Set LMNR_PROJECT_API_KEY for Laminar
明示的な設定明示的な設定への直接リンク
import { OtelExporter } from '@mastra/otel-exporter'
const exporter = new OtelExporter({
provider: {
signoz: {
apiKey: process.env.SIGNOZ_API_KEY,
region: 'us',
},
},
})
カスタムエンドポイントを使用カスタムエンドポイントを使用への直接リンク
const exporter = new OtelExporter({
provider: {
custom: {
endpoint: 'https://my-collector.example.com/v1/traces',
protocol: 'http/protobuf',
headers: {
'x-api-key': process.env.API_KEY,
},
},
},
timeout: 60000,
logLevel: 'debug',
})
プロトコル要件プロトコル要件への直接リンク
Provider ごとに必要な OTEL exporter パッケージが異なります。Trace とログのエクスポートは独立しています。Trace のみが必要な場合は Trace パッケージだけを、ログもエクスポートする場合は選択したプロトコルの Trace パッケージとログパッケージの両方をインストールしてください。Zipkin は OTLP ログをサポートしていません。
| プロトコル | Trace パッケージ | ログパッケージ |
|---|---|---|
| gRPC | @opentelemetry/exporter-trace-otlp-grpc(+ @grpc/grpc-js) | @opentelemetry/exporter-logs-otlp-grpc(+ @grpc/grpc-js) |
| HTTP/Protobuf | @opentelemetry/exporter-trace-otlp-proto | @opentelemetry/exporter-logs-otlp-proto |
| HTTP/JSON | @opentelemetry/exporter-trace-otlp-http | @opentelemetry/exporter-logs-otlp-http |
| Zipkin | @opentelemetry/exporter-zipkin | 非対応 |
タグのサポートタグのサポートへの直接リンク
OtelExporter は、分類とフィルタリングのための Trace タグ付けをサポートします。タグはルート Span にのみ適用され、mastra.tags 属性として保存されます。
使用方法使用方法への直接リンク
const result = await agent.generate('Hello', {
tracingOptions: {
tags: ['production', 'experiment-v2', 'user-request'],
},
})
タグの保存方法タグの保存方法への直接リンク
バックエンドとの互換性を最大限に確保するため、タグは JSON 文字列化された配列として mastra.tags Span 属性に保存されます。
{
"mastra.tags": "[\"production\",\"experiment-v2\",\"user-request\"]"
}
OpenTelemetry 仕様はネイティブの配列属性をサポートしていますが、多くのバックエンド(Jaeger、Zipkin、Tempo)では配列のサポートに制限があります。JSON 文字列を使用することで、すべての Observability プラットフォームで一貫した動作を実現できます。
関連項目関連項目への直接リンク
- OtelExporter ガイド:Provider の設定を含むセットアップガイド
- OtelBridge:双方向の OTEL コンテキスト連携
- Tracing の概要:Tracing の一般概念