Ichizokuは日本唯一のSentry公認販売業者です。 日本語のドキュメント、動画、サポート窓口で日本のお客様のSentry活用を支援します。

JavaScript v8 SDKにおけるOpenTelemetryとNodeサポートの改善

Sentry Launch Weekで初めて発表したように、私たちはJavaScript SDKのメジャーリリースに向けて取り組んできました。

このアップデートにより、Sentry JavaScript SDKをさらに簡単に使い始めることができます。このリリースは、自動instrumentationを提供するフレームワークとライブラリの数を広げます。しかし、Sentryのセットアップをカスタマイズしたい場合、OpenTelemetry (OTel)の拡張サポートにより、必要なcustom configurationを85行のコードから10行以下に減らしました。

OpenTelemetryによるトレース

OpenTelemetry はスタンダードな機能とメンテナンス機能を提供してくれますが、それらのツールと収集されたデータを使って、あなたに洞察を提供するのは私たちの役目です。

例えば、Sentry の新しいトレース・ビューは、v8 の改良された Node.js サポートの恩恵も受ける最新の機能改良の一つに過ぎません。
私たちのNode SDKにOTelを組み込むことで、以前のバージョンよりも詳細なスパンデータを収集します。
Next.jsとPrisma 4で構築されたSentry独自のChangelogに記録されたスパンの詳細をご覧ください。

より多くのNodeフレームワークとライブラリの自動インストルメンテーション

特にOTelのNode SDKは、Sentryの以前のNode SDKよりも多くのNodeフレームワークを自動パフォーマンス計測のためにサポートしています。Node SDKの一部をOTelに置き換えることで、SentryがデフォルトでサポートするNode.jsフレームワークとライブラリのサポートを拡大しました。
これは、あなたのNodeプロジェクトに以下のフレームワークやライブラリがある場合、Sentry Node SDKが自動的にそれらを検出し、設定することを意味します。

  • Express(改善)
  • Connect(改善)
  • Nest.js(新規)
  • Koa(改善)
  • Fastify(新規)
  • Hapi(新規)
ライブラリ
  • pg (Postgres)
  • pg-native (Postgres)
  • mongodb (Mongo)
  • mongoose (Mongo)
  • mysql2 (MySQL)
  • mysql (MySQL)
  • graphql (GraphQL)
  • apollo-server-core (Apollo)
  • @nestjs/graphql (Apollo)
  • Prisma ORM (v4)
  • pg (Postgres)
  • pg-native (Postgres)
  • mongodb (Mongo)
  • mongoose (Mongo)
  • mysql2 (MySQL)
  • mysql (MySQL)
  • graphql (GraphQL)
  • apollo-server-core (Apollo)
  • nestjs/graphql (Apollo)
  • Prisma ORM (v4)

例えば、私たちは長い間Expressをサポートしてきましたし、他のフレームワークのサポートも行ってきました。

しかし、最新のメジャーリリースでは、どのフレームワークを使用しているかを自動的に検出し、Sentryに送信するための遠隔測定データを収集するために、1つのSDK(私たちのNode SDK)を通してサポートを提供しています。
アプリで最初にインポートする sentry.js ファイルを別に作成することをお勧めします。

instrument.js

server.js:

その後、すべてのエラーとパフォーマンスのデータが取得され、Sentryのトレースに接続されます。

シンプルなトレースAPI

どのスパンを作成すべきかを正確に知ることは、必ずしも明らかではありません。簡単に言えば、それはあなたの仕事ではなく、私たちの仕事です。
ブラウザでもNode.jsフレームワークでも、私たちのゴールは可能な限り最高の自動計測を提供することです。つまり、Sentryをアプリケーションに追加すると、ほとんど設定しなくても、意味のあるデータと洞察を得ることができます。

しかし、より微妙なアプリケーションでは、カスタムインストルメンテーションが必要な場合もあります。このような状況では、スタックを通るパスを追跡するために利用可能なツールがあり、それらのツールが理解しやすいものであることを保証したいと思います。
そのため、私たちはこの最新のメジャーでNodeエコシステムにより良いサポートを提供することに目を向ける一方で、トレースAPIをオーバーホールして簡素化しました。

新しいAPIはスパン(開始と停止を行う単位)に焦点を当て、アプリケーション内の他の意味のあるイベントと連鎖させます。上のインタラクティブなデモで示されているように、トレース内のスパンは、オペレーションがどこで開始、停止、成功、失敗するかを示します。Sentry に送信されるスパンをカスタマイズする方法については、以下の例を参照してください。

OpenTelemetryにすでに慣れ親しんでいる場合、これらのAPIはよりフレンドリーになりました。新しいAPIについての詳細はこちら。

アップグレードの準備はできていますか?

JavaScript v8は、あなたのアプリでのSentryのセットアップをよりシンプルにすると同時に、トレースデータから得られる詳細なレベルを向上させます。
最終的には、データの調査や問題のデバッグが簡単になります。
使用しているJavaScriptフレームワーク特有の変更についてもっと知りたい場合は、こちらのマイグレーションドキュメントをご覧ください。

最新のメジャーリリースで変更・追加された点についての詳細な洞察とともに、マイグレーションドキュメントやツールへのリンクが見つかります。

ソフトウェアのバグはSentryのものですが、私たちはまだバグを書き続けています。SDKのアップグレード中に問題に遭遇した場合は、GitHub Issueを開くか、Discordでいつでもご連絡ください。

 


 

IchizokuはSentryと提携し、日本でSentry製品の導入支援、テクニカルサポート、ベストプラクティスの共有を行なっています。Ichizokuが提供するSentryの日本語サイトについてはこちらをご覧ください。またご導入についての相談はこちらのフォームからお気軽にお問い合わせください。

シェアする

Recent Posts