The Monitor

APMとRUMのデータを統合し、フルスタックの可視性を実現

9 min read

Share article

APMとRUMのデータを統合し、フルスタックの可視性を実現
Mary Jac Heuman

Mary Jac Heuman

スタック全体を統一的に可視化できないと、フロントエンドの問題をトラブルシューティングする際にバックエンドの依存関係を調査したり、不正なブラウザリクエストに起因するデータベース障害の原因を追跡したりすることが困難になります。フルスタックの可視性は、インシデントをピンポイントで迅速に解決するために必要なインサイトを提供します。

Datadog Real User Monitoring (RUM)で、ユーザーがアプリケーションをどのように体験しているかをリアルタイムに把握できます。バックエンドでは、 分散型トレースにより、個々のリクエストの寿命や、リクエストのスループット、レイテンシー、エラーレートなどの主要なパフォーマンス指標を可視化。RUMデータを対応するトレースに接続することで、リクエストがスタックの各レイヤーを移動する際に、統一されたエンドツーエンドの可視性を得られます。これにより、リクエストがスタックの各レイヤーを移動する際に、統一されたエンドツーエンドの可視性が得られます。これにより、問題に関する豊富なコンテキストが提供され、ユーザーの目に触れるエラーの原因となったバックエンドの問題をより簡単に特定し、アプリケーションの特定のエンドポイントや地理的な地域など、スタック内の問題によって影響を受けるユーザーの範囲を特定するのに役立ちます。

このポストでは、Datadog APMとRUMを使って、アプリケーションのエラーをより簡単に調査し、その影響を追跡する方法を見ていきます。順を追って説明します。

フロントエンドのデータを使ってバックエンドの根本原因を突き止める

Datadog RUMは、エンドユーザー・エクスペリエンスに影響を与えているアプリケーションの問題を警告するのに役立ちます。例えば、Error Tracking は、類似したフロントエンドのエラーを自動的に問題に集約し、トリアージして最も緊急性の高いものを調査できます。

Datadog Error Tracking aggregates frontend errors into issues.
Datadog Error Tracking aggregates frontend errors into issues.

スコープDatadogは、エラーに関する主な詳細に加えて、問題が発生したユーザーセッション(ユーザーの場所、デバイスタイプ、ブラウザなど)やページビュー(ビューパスグループやURLなど)に関する情報を取得します。これにより、アプリケーションのどこで問題が発生しているか、誰に影響を与えているかなど、問題の範囲を特定できます。

しかし、問題の根本的な原因がバックエンドのサービスや依存関係のどこかにある場合、フロントエンドのデータだけでそれを見つけ出すのは難しいでしょう。その場合は、APMに軸足を置くことになります。

バックエンド トレースの詳細

Datadog Real User MonitoringとAPMは完全に統合されているため、トレース には、リクエストを開始したユーザーのセッションID、ビューID、ビューパスグループなどのフロントエンドデータがタグ付けされています。例えば、フロントエンドのエラーに関するアラートを受け取った場合、ビューIDを使ってRUMエクスプローラにピボットし、そのエラーを引き起こした特定のビューイベントを調べることができます。そこから、Tracesタブに移動して、そのビューに関連する完全なトレースを視覚化するフレームグラフを見ることができます。

フロントエンドの問題の原因となっているバックエンドのサービスを特定できるだけでなく、トレースを可視化することで、メトリクス、ログ、ネットワークパフォーマンスデータ、コードのホットスポットなどをすべて一枚のガラス越しに見ることができ、問題のデバッグが可能になりました。

バックエンドの問題によるエンドユーザーへの影響を測定

これまでに、DatadogのRUMとAPMデータのインテグレーションにより、フロントエンドのデータからバックエンドのトレースをピボットして表示し、問題の根本原因を突き止めてトラブルシューティングする方法を見てきました。次は、問題が誰に影響を与えたかを分析することで、RUMがインシデントに関する深いコンテキストを提供する方法を見ていきます。

Datadog unifies APM and RUM data.
Datadog unifies traces with relevant frontend data for cross-stack visibility.
Datadog unifies APM and RUM data.
Datadog unifies traces with relevant frontend data for cross-stack visibility.

例えば、product-recommendationサービスへのリクエストのエラー率が上昇していることを示すアラートを受け取ったとします。調査するには、まず関連するトレースを見て、エラーを特定し、サービスのどこで問題が発生しているかを判断します。トレースを掘り下げると、product-recommendationサービスでタイムアウトが発生していることがわかります。トレースに関連するログを見ると、コードがゼロで除算しようとする試みが複数回行われており、これが問題の原因となっているようです。

View logs associated with a distributed trace.
View logs associated with a distributed trace.

APMを使ってエラーの原因を特定したので、修正プログラムを導入するために適切なチームに通知することができます。次に、RUMを使用して、どのユーザーが実際に影響を受けたか、インシデントがどの程度広がっているかを調べます。

トレースには、トップレベルの browser.request という名前のスパンが含まれており、リクエストの全ライフサイクルを追跡しています。このスパンを選択すると、セッションIDやビューパスグループなど、フロントエンドのメタデータを見ることができます。これは、このスパンが、エラーを発生させたバックエンドのリクエストを開始した、アプリケーションと実際のユーザーのやり取りを表していることを示しています。

Datadog はトレースを関連する RUM データに接続するため、トレースの結果として /department/sofas/product/? パス グループのビューが表示されていることがわかります。このパスグループを選択し、ピボットしてRUMエクスプローラで表示することができます。これにより、例えば、そのパスグループへの着信リクエストがどこから来ているのか、そのロード時間などを確認することができます。また、ビューIDを使用してレンダリングされた正確なページを確認し、エラーがユーザーセッションにどのような影響を与えたかについてさらに詳しい情報を得ることができます。

Datadogはトレースを関連するRUMデータと結びつけるので、ここからはバックエンドのエラーが発生した正確なページロード中に呼び出されたすべてのリソースのウォーターフォールの内訳を見ることができ、どこでスローダウンが発生したかがわかります。

Datadog RUM shows the duration of loading each frontend resource.
Datadog RUM shows the duration of loading each frontend resource.

Datadog APMとRUMによるエンドツーエンドの可視性

Datadogは、リアルなユーザーの分析と100パーセントのリアルタイム バックエンド トレースを一緒にすることで、フルスタックのトラブルシューティングをシームレスにします。フロントエンドのデータとバックエンドのアクティビティの完全な内訳を、単一のビューで簡単に可視化し、相関させることができます。つまり、ブラウザのタイムアウトからデータベースの操作を追跡したり、APIの障害からWebコンポーネントのタイプミスを特定したりすることが可能になります。

Datadog APMとRUMを使用して、今すぐスタックの完全な可視化を始めることができます。また、初めてDatadogをご利用になる方は をご利用ください。

Related Articles

End-to-end application monitoring with Datadog

End-to-end application monitoring with Datadog

Debug application issues with APM and Cloud Network Monitoring

Debug application issues with APM and Cloud Network Monitoring

Monitor the performance of queues and topics with Azure Service Bus

Monitor the performance of queues and topics with Azure Service Bus

Java on containers: a guide to efficient deployment

Java on containers: a guide to efficient deployment

Start monitoring your metrics in minutes