4年前、私たちは開発者を第一優先したパフォーマンス監視で大きな一歩を踏み出しました。
それ以来、数千ものソフトウェアチームが当社の最新APMソリューションを採用しています。
しかし、パフォーマンスについてチェックすべき項目が多くある一方で、開発チーム内で別々のツールで管理しているところもあり、監視が分断されてしまっているケースもあります。
エラーの根本原因や、パフォーマンスの問題を結びつけるのは、不必要に難しくさせます。SentryのMetricsは現在ベータ版で公開されています。
最初の立ち上げの週に予告したように、Metricsはまだ開発途中でした。
今回、ベータ版がリリースされ、無料で使用できるようになりました(ローンチウィークのアナウンスはこちら)。
これは単なるツールではなく、あなたにとって最も重要なデータポイントを長期にわたって追跡するための新しいパートナーとなるでしょう。
Metricsを使えば、製品・サービス・コードが常に意図したとおりに動作していることを確認しながら、相関するトレースで問題を特定し、解決することができます。
チームは、処理時間・チェックアウトのコンバージョン率・ユーザーのサインアップなどのカスタムメトリクスを監視して視覚化したり、トランザクションの継続時間などの既成のメトリクスを探索したりすることが可能になります。
また、問題を発見した場合、問題の原因を解決するために相関トレースを使用することができます(もちろん、このような機能はありません)。
メトリクスでクリティカルパスを監視
あなたがショッピングカートとチェックアウトの機能を持つ製品やサービスに取り組んでいるとします。
その処理フローは、あなたの会社の収益に直結しています。ですから、巨大なeコマースチェーンや、ユーザーがクレジットカード情報を入力しなければ続行できないSentry’sのようなSaaSビジネスを思い浮かべてください。
ユーザーがハッピーパスを通して成功できるようにすることは、貴社の成功にとって非常に重要です。このパスに遅延が生じると、収益が失われ、おそらく(間違いなく)多くの顧客が離脱することになります。
以下の例では、チェックアウトのレートを注視し、ユーザーがホームページから配送先住所の追加、チェックアウトへとスムーズに移動できるようにします。
仮想のチェックアウトフローのGIFをご覧いただくとわかるように、訪問者は3つのステップを完了する必要があります。
ホームページでスワッグをリクエストし、住所を入力し、注文を送信します。
Sentryの新しいメトリクスを使用すると、カスタムメトリクスを作成して、チェックアウトプロセスを完了したユーザー数をカウントし、視覚化することができます。
チェックアウトフローの3つのステップを追跡するためにカスタムメトリクスを作成し、何人のユーザーがホームページでスワッグをリクエストし、住所を入力、そして注文を送信したかどうかを可視化できるようになりました。
Metricsのおかげで、チェックアウトのコンバージョン率が安定していることが可視化することが出来るようになりました。
メトリクスが合わないとアラートを受け取る
また、アラートを作成して、重大な変更があった場合にSlack、Discord、Teams、Emailで通知を受け取ることもできます。チェックアウトフローですべてがうまくいっていることを確認するために、チェックアウト率が20%下がったら発動する閾値アラートを設定しました。
アラートが表示される場合は、以下の画像のように表示されます。
コンバージョン率が下がったのでしょう。
結果をチェックすると、それを確認することができます。
訪問者が購入者に転換していないようです。
カスタムメトリクスによると、注文を正常に送信するユーザーが明らかに減少している。
一般的な製品の旅はここで終わりです。
しかし、Sentryの場合はまだ始まりに過ぎません。
【メトリクスとトレース】デバッグの強化
問題を特定できたので、当然の次のステップは解決策を見つけ出すことです。
問題がどこにあるのか直感的に分かるかもしれませんし、特定のAPIに問題があるかどうかを確認するために、レスポンスタイムのような他のメトリクスを引き出すかもしれません。
それで十分な場合もありますが、それ以上に厄介な場合もあります。
そんな時こそ、1つのツールでアプリケーションに関する様々な種類のデータにアクセスできるのが本当に便利です。
Metricsは、アプリケーションの幅広いデータを見るのに適しています。
一方、トレースは、フロントエンドからバックエンドまで、アプリケーションの深部を見るのに役立ち、根本原因を見つけるための豊富なトラブルシューティングデータを提供します。
あなたが注目しているメトリクスと相関のあるトレースイベントを表示することで、2つのシグナルを簡単に結びつけることができます。
イベント・サンプル・テーブルから、特定のトレース・ビューにドリルダウンすることができます。
ウォーターフォールを見ると、このトレースに非常に時間がかかっていることがわかります。サードパーティのフルフィルメントAPIが原因です。
これで、問題を解決し、ショップを復旧させるために何をすべきかがはっきりしました。
数えるだけじゃない『分布・ゲージ・セット』
上記の例では、カウント(”インクリメント “できるものをトラッキング)の例を示していますが、以下のようなさまざまなメトリックタイプを作成することができます。
- 分布: 最大値、最小値、平均値のように、時間にわたって集計できる値のリストを追跡します(たとえば、ページのロード時間)。プロセスの開始時間やキューの健全性やターンアラウンドタイムのように、アプリケーションの健全性を明らかにするようなことをレポートするために分布を使用することができます。
例えば、Sentryでは、イベントマネージャがイベントを保存するのにかかる時間の分布を測定するために、Dogfood Metricsを使用しています。そして、通常95パーセンタイルを監視し、イベント・インジェスト・パイプラインに影響を与える可能性のあるリグレッションをチェックします。
以下のように、青い点はこのメトリクスで収集されたサンプルです。
サンプルテーブルを使用して単一のサンプルを選択するか、直接ドットをクリックしてトレースの詳細を表示することができます。
- ゲージ: 増減する値を追跡します(例えば、使用可能なディスク容量や使用メモリなど)。
- セット: count_unique(ユニーク・ユーザー数など)のように、時間の経過とともに集計される値のセットを追跡します。
さあ、始めましょう!
Metricsを追加する以前の場合は、SentryのPerformance機能を使えば、すべての典型的なパフォーマンス・メトリクスを測定することは可能でした。
例えば、トランザクション時間、Web Vitals、エラーカウントなどです。
Metricsでは、アプリケーションとサービスが健全かどうかを示す特定のデータポイントを測定する柔軟性があり、問題を特定したら対策を講じるツールもあります。
これは強力な組み合わせです。
私たちはまだ開発の初期段階にあり、あなたがMetricsをどのように活用されるのか楽しみにしています。
あなたの経験や、昨日に関するフィードバックをぜひDiscordで共有してください。
IchizokuはSentryと提携し、日本でSentry製品の導入支援、テクニカルサポート、ベストプラクティスの共有を行なっています。Ichizokuが提供するSentryの日本語サイトについてはこちらをご覧ください。またご導入についての相談はこちらのフォームからお気軽にお問い合わせください。