Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save kenzo0107/a2bad72e26157f29e69fbd4bcd24eae4 to your computer and use it in GitHub Desktop.

Select an option

Save kenzo0107/a2bad72e26157f29e69fbd4bcd24eae4 to your computer and use it in GitHub Desktop.

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,
});

🛠️ カスタム OpenTelemetry の構成手順

1. 必要パッケージをインストール

Sentry と OpenTelemetry SDK モジュール類を用意します。

npm install @sentry/node @sentry/opentelemetry \
            @opentelemetry/sdk-trace-node \
            @opentelemetry/api \
            ... # その他必要なOTELパッケージ

2. Sentry SDK の初期化

const Sentry = require("@sentry/node");

const sentryClient = Sentry.init({
  dsn: "YOUR_DSN",
  skipOpenTelemetrySetup: true,
  tracesSampleRate: 1.0,
});

3. OpenTelemetry の設定を自分で行う

トレーサープロバイダの作成

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());

4. OpenTelemetry のコンテキスト管理および伝播設定

provider.register({
  propagator: new SentryPropagator(),
  contextManager: new Sentry.SentryContextManager(),
});

この構成により、トレースの 伝播(trace propagation)コンテキストの同期 が Sentry と OpenTelemetry 間で正しく機能します。(Sentry Documentation)


5. 設定の検証

Sentry.validateOpenTelemetrySetup();

これにより、セットアップが正しく行われているかどうかが検証できます。(Sentry Documentation)


⚙️ カスタム OpenTelemetry 構成時のポイント

✅ Sentry の内部コンポーネントが必要になる

  • 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)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment