Sentryに対する印象として、よく聞かれるのは「アプリケーションのエラートラッキング」です。もちろん、Webアプリケーションやモバイルアプリケーションに対してSDKをインストールするだけで使えるエラートラッキングはSentryの大きな強みです。
しかし、ここ数年でSentryに対して期待される役割が膨らんでいます。アプリケーションはエラー(例外処理)だけが問題ではなく、パフォーマンスの劣化や、複雑な操作の結果としてのエラー発生が日常的に発生します。また、エラーはアプリケーション層だけでなく、バックエンドやデータベースなども組み合わさって発生します。
そうした現実的な課題に合わせて、Sentryでは機能拡張が行われています。我々の目指すのは、アプリケーションも含めたフルスタックのオブザーバビリティサービスです。
オブザーバビリティの基本
オブザーバビリティはObserve(観察する)とAbility(能力)を組み合わせた造語で、日本語では可観測性と呼ばれます。システム内部の複雑な状態を分析、可視化します。それによって、問題が発生した際に素早く解決したり、未然に防ぐことが可能です。
オブザーバビリティは以下の3要素が基本になります。
- メトリクス
- ログ
- トレース
この記事では、この中の一つ「トレース」について、Sentryがどう機能を提供しているかについて解説します。
トレースとは
トレースとは、アプリケーション内で発生するリクエストや操作のタイミングと流れを捕捉することです。トレースを使うことで、パフォーマンス低下といった問題につながっているイベントを特定するのに役立ちます。
Sentryの分散トレーシング
ユーザーにとってはスマートフォンアプリひとつであっても、提供側にとっては異なります。フロントエンドとバックエンドがあり、さらにデータベースなど一つのイベントから多層に展開され、レスポンスが構築されます。Sentryをフロントエンド、バックエンドの両方に導入することで、この分散トレーシングが実現できます。
Sentryでは、トレースIDと呼ぶユニークなIDを利用し、フロントエンドとバックエンドで共通したイベントをトレースできます。Sentryのトレースは、例えば以下のようなインサイトを提供します。
- 特定のエラーイベントまたは問題について発生した事象
- ボトルネックや遅延の問題を引き起こす条件
- 最も時間を消費しているエンドポイントまたは操作
スパンとは
Sentryのトレースは、複数のスパンで構成されています。スパンとは、アプリケーションワークフローの一部を表現する、名前とタイムスタンプの付いた操作のことです。各スパンでは、APIリクエストやデータベースクエリーなど、特定のタスクに関する詳細なデータが含まれています。
このスパンには、属性とメトリクスというメタデータが付与されています。属性は、キーと値のペアで操作名やユーザーIDなどスパンに紐づく追加のコンテキストです。メトリクスは数値データで、操作にかかった時間やデータベースクエリー数など、スパンのパフォーマンス解析に利用されます。
トランザクションとは
トランザクションは、アプリケーションがSentryに送信するイベントを表す特定の単位です。1つのトランザクションは、複数のスパンで構築されます。1トランザクションの中で、フロントエンドの操作開始からバックエンドの処理、そしてフロントエンドのUI反映までを管理します。
トレース機能の使い方
Sentryの管理画面で、Tracesメニューを開いてください。トレースのグラフと、一覧が表示されます。
トレースIDをクリックすると、スパンの詳細なデータが確認できます。
検索を使って、特定のトレースだけ表示することもできます。先ほどの属性も絞り込み条件として利用できます。
トレースの使いどころ
Sentryのトレース機能を使うことで、以下のような課題に対応できます。
サービス全体におけるパフォーマンス改善
現在のインターネットサービスはさまざまな技術要素によって構成されており、パフォーマンスの課題特定が困難な場合は多々あります。たとえばSentryでは、Slackなどの外部サービスと連携する際に、必ずスパン情報を追加するようにしています。こうして、ユーザーがSlackでSentryアラートを受信するのに4秒以上の遅延があれば、トレースビューで遅延の原因になっているタスクを特定できるようにしています。
こちらでその事例についてご覧いただけます。
Debugging a Slack Integration with Sentry’s Trace View | Sentry
Core Web Vitalsの改善
Core Web Vitalsの数値はLighthouseなどで確認できますが、本当のパフォーマンスはユーザーの環境でしか実現できません。Sentryは実環境におけるアプリケーションのパフォーマンスとインサイトを提供します。
新しくデプロイしたコードのデバッグ
トレースは、見慣れないコードのデバッグにも役立ちます。Sentryはアプリケーション全体を通じたユーザージャーニーを追跡し、スタック全体で何が起こっているのかを確認できます。そのため問題をローカルで再現することなく、問題の背景を把握できます。
まとめ
今回はSentryのトレース機能について解説しました。Sentryの強みはフロントエンドとバックエンドを一元的に管理できること、そして問題の特定を素早く行えることです。アプリケーションエラー、パフォーマンス低下などサービスを運用する上での課題をSentryで解決してください。
ぜひ、Sentryのオブザーバビリティをお試しください!

