https://docs.sentry.io/platforms/javascript/guides/node/opentelemetry/custom-setup/
以下は Sentry ドキュメント「Node.js 向けカスタム OpenTelemetry セットアップ」 の内容を日本語で Markdown 形式で要約した和訳まとめ です(Sentry の公式ガイドに準拠)(Sentry Docs)
このガイドでは、すでに独自の OpenTelemetry セットアップを持っている場合、または Sentry SDK の標準によらず 自前で OpenTelemetry を構成したい場合 の設定方法を説明します。(Sentry Docs)
Sentry SDK は内部的に OpenTelemetry を使っています。 通常は自動で構成してくれますが、自分で OpenTelemetry 設定を完全に制御したい場合 はカスタムセットアップを行います。(Sentry Documentation)
- Sentry の標準セットアップは OpenTelemetry を自動的に構築します。
- カスタムセットアップでは、
skipOpenTelemetrySetup: trueを指定して Sentry による自動セットアップをスキップします。(Sentry Documentation)
Sentry.init({
dsn: "...",
skipOpenTelemetrySetup: true,
tracesSampleRate: 1.0,
});Sentry と OpenTelemetry SDK モジュール類を用意します。
npm install @sentry/node @sentry/opentelemetry \
@opentelemetry/sdk-trace-node \
@opentelemetry/api \
... # その他必要なOTELパッケージconst Sentry = require("@sentry/node");
const sentryClient = Sentry.init({
dsn: "YOUR_DSN",
skipOpenTelemetrySetup: true,
tracesSampleRate: 1.0,
});const { NodeTracerProvider } = require("@opentelemetry/sdk-trace-node");
const { SentrySampler, SentrySpanProcessor, SentryPropagator } = require("@sentry/opentelemetry");
const provider = new NodeTracerProvider({
sampler: sentryClient ? new SentrySampler(sentryClient) : undefined,
});
provider.addSpanProcessor(new SentrySpanProcessor());provider.register({
propagator: new SentryPropagator(),
contextManager: new Sentry.SentryContextManager(),
});この構成により、トレースの 伝播(trace propagation) や コンテキストの同期 が Sentry と OpenTelemetry 間で正しく機能します。(Sentry Documentation)
Sentry.validateOpenTelemetrySetup();これにより、セットアップが正しく行われているかどうかが検証できます。(Sentry Documentation)
- SentrySampler — Sentry のサンプリングルールを OpenTelemetry に適用
- SentrySpanProcessor — Span を Sentry に送信
- SentryPropagator — Trace ヘッダ伝播
- SentryContextManager — Sentry と OTEL のコンテキスト整合性維持
これらを登録することで、Sentry と独自の OpenTelemetry 設定が正しく連携します。(Sentry Documentation)
✔ 既存の OpenTelemetry を使いながら Sentry のみにエラー監視を追加したいケース ✔ トレーシングデータを別のバックエンド(例: Jaeger など)にも送信したいケース ✔ Sentry と他の OTEL 活用ツールとの共存
- カスタムセットアップは Sentry のデフォルト自動構成よりも柔軟 ですが、構成ミスが発生しやすいので注意が必要です。(GitHub)
- また、OpenTelemetry のバージョンなどによって公開されている API が変わることがあるため、公式ドキュメントや SDK リファレンスも併せて確認してください。(GitHub)