💭
MastraにおけるOpentelemetry設定例
Mastra の Install
今回はこの部分を割愛します。他の方でわかりやすく解説されている記事があるので、それを元に Install してもらうのが良いです。
公式ドキュメントはこちら: https://mastra.ai/ja/docs/getting-started/installation
OpenTelemetry の設定箇所
ローカル環境での設定例(Jaeger を使って)
今回は Docker Compose を使って Mastra と Jaeger を起動して、Mastra の Opentelemetry を Jaeger に送信する例を記載します。
Mastra 設定例
- src/mastra/index.ts
- ここでは、install 直後の設定から telemetry の設定を追加しています。
src/mastra/index.ts
import { Mastra } from '@mastra/core/mastra';
import { PinoLogger } from '@mastra/loggers';
import { LibSQLStore } from '@mastra/libsql';
import { weatherWorkflow } from './workflows/weather-workflow';
import { weatherAgent } from './agents/weather-agent';
export const mastra = new Mastra({
workflows: { weatherWorkflow },
agents: { weatherAgent },
storage: new LibSQLStore({
// stores telemetry, evals, ... into memory storage, if it needs to persist, change to file:../mastra.db
url: ":memory:",
}),
logger: new PinoLogger({
name: 'Mastra',
level: 'info',
}),
// ここから
telemetry: {
serviceName: 'mastra-app',
enabled: true,
sampling: {
type: 'always_on',
},
export: {
type: 'otlp',
endpoint: 'http://jaeger:4317',
protocol: 'grpc', // grpc or httpを設定
},
}
// ここまで
});
Jaeger 設定例
- Docker Compose ファイル
- mastra と jaeger を compose ファイルを使って起動する
compose.yml
services:
app:
build:
context: .
ports:
- '4111:4111'
depends_on:
- jaeger
networks:
- default
jaeger:
image: jaegertracing/all-in-one:latest
ports:
- '16686:16686'
- '4317:4317' # Opentelemetryを受け取るポート設定(gRPC)
- '4318:4318' # Opentelemetryを受け取るポート設定(HTTP)
environment:
- COLLECTOR_OTLP_ENABLED=true
- LOG_LEVEL=debug
- SPAN_STORAGE_TYPE=memory
- JAEGER_DISABLED=false
- COLLECTOR_ZIPKIN_HOST_PORT=:9411
networks:
- default
Jaeger UI での表示内容
以下の画像のように Services にmastra-appが表示されていて、 Find Traces ボタンを押すとトレース内容が表示されます。
この様になっていれば、Opentelemetry の送信ができていることになります。

Discussion