New Relicの分散トレーシングはバックエンド(サーバーサイド)だけでなく、エンドユーザーの体験も可視化できるように進化しています。New Relic Browserでの分散トレーシングのサポートを紹介した、2019年12月2日に投稿された「End-User Traces in New Relic Browser: Adding Customer Experience to Distributed Tracing」の抄訳になります。
今日、デジタルビジネスは顧客体験によって決まります。アナリスト企業である Gartner 社の推定によると、1分停止することによりかかる平均コストは5,600 ドルです。つまり、サイトが10分利用できないたびに50,000ドル以上のコストになります。
分散トレースは、このようなタイプの障害を解決し、防止するために不可欠な要素です。チームは分散トレースを使用してトランザクションリクエストを追跡し、リクエストが相互に接続されたバックエンドサービスを通過する際にトランザクションリクエストを追跡します。このような複数のバックエンドサービスは異なるチームが所有・管理していることが多いです。また、New Relic Oneプラットフォーム上での分散トレースにより、Dealer.comのようなお客様がダウンタイムを回避するのに役立ち、DevOpsチームがアプリケーションのパフォーマンス問題をより明確に把握できるようになります。
「New Relicの分散トレースのおかげでWebブラウザやネットワークからバックエンドサービスに至るまで、分散したシステムを通じたトランザクションを接続して見られるため、問題がどこで発生しても問題を迅速に切り分けることができるという点で、私たちにとって価値のあるものです。」— a Cox Automotiveブランド Dealer.comのリードサイト信頼性エンジニア Dan Boisvert氏
お客様にとって最高のデジタル体験を創造し、維持することがこれまで以上に重要であることを私たちは理解しています。そのためNew Relicでは、New Relic Browserのエンドユーザートレースをサポートし、分散トレース機能を強化しています。これにより、トレースの全ライフサイクルをこれまで以上に簡単に監視できるようになりました。
New Relic APM ProサブスクリプションとSingle Page Application(SPA)モニタリングを設定しているBrowser Proエージェントをお持ちのお客様は、追加料金なしでこの新機能をご利用いただけます。
分散トレースをブラウザーに取り込む
もしまだNew Relicの分散トレースに慣れていないのであれば、こちらのブログ記事をチェックしてみてください。基本的には、分散トレースとは、複雑な分散システムを通るリクエストを計測し、コンテキストを伝播し、記録し、可視化する方法であると説明しています。
分散トレースに加えて、New Relic Trace APIを使用すると、チームはZipkin、Istio、OpenTelemetry、OpenCensusなどのオープンソースの計測ツールからトレースデータを挿入することができます。これらのツールから収集したトレースデータを使用することで、New Relicはトランザクションのライフサイクルを完全に把握することができ、Webブラウザやネットワークでの利用時間からバックエンドサービスからのレスポンスまで、エンドツーエンドの可視性と接続性を提供することができます。
これまでのNew Relicの分散型トレースツールセットでは、バックエンドの問題が顧客の体験にどのような影響を与えているのかを顧客が完全に把握できるとは限りませんでした。この例を考えてみましょう。ポートランドのあるバックエンド開発者は、自分が所有するサービスに障害が発生しているというアラートを受け取りました。彼女は New Relic の分散トレースを使って問題を切り分け、必要な解決策を講じましたが、問題が顧客にどのような影響を与えたのか、どのチームに通知して対応を調整すべきなのかについては何もわかりませんでした。
一方、その瞬間、バルセロナのフロントエンドチームの開発者の同僚は、開発者には見えなかった顧客への影響を目の当たりにしました:特定のAJAXリクエストに対する応答時間の遅さ、ページ全体のロード時間の急激な増加、そして最終的には不満を抱いた顧客からのサポートコールの急増です。停止による影響はあまりにも明らかでしたが、このチームは、何が原因で障害が発生したのか、そしてそれを解決するために何が行われたのかを知ることができました。アプリケーションのライフサイクル全体に対するエンドツーエンドの可視性がなければ、グローバルなチームによって開発されたシステムの複雑さもある状況では、プロセスに関与したどのチームもこれほどまでに迅速かつ効率的な解決を行うことはできませんでした。
New Relicに分散トレース機能が追加されたことで、サイトのパフォーマンスを担当するフロントエンドエンジニアは、どのバックエンドサービスが顧客体験に影響を与えているかを簡単に発見することができます。同様に、バックエンドサービスで問題が発生した場合、バックエンドエンジニアはその問題が顧客にどのような影響を与えているかを明確に理解できるようになります。また分散トレースの異常検出を適用すると、New Relic Applied Intelligenceがトレース内の異常に遅いスパンを自動的に強調表示するため、すべてのチームがこれらの異常な遅延の原因を簡単に見つけ出し、それに焦点を当てることができます。
New Relic Browserにエンドユーザーのトレースを組み込む方法
New Relic Browserで分散トレースを使用するには、以下の要件を満たす必要があります。
- APM Proサブスクリプション
- 分散トレースが有効
- Single Page Application(SPA)の監視が有効になっているブラウザーエージェントを含むBrowser Proサブスクリプション
- 全体のトレースで表示されることを期待するアプリケーション(ブラウザ)およびサービス(APM)のデータを表示するためのアカウントレベルのアクセス
- 分散トレースの起点となるリクエストがNew RelicがサポートするAJAX通信であり、そのAJAX通信がBrowserInteractionイベントの中で行われていること
これらの要件を満たしていれば次の手順で見ることができます。
- rpm.newrelic.com/browser>(アプリを選択)>Application settingsに移動します。
- Distributed tracingをオンに切り替えます。
- ブラウザエージェントを再展開します。APMエージェントを使用してブラウザコードを挿入する場合は、APMエージェントを再起動します。
エンドユーザーが作成したトレースにアクセスするには、New Relic Oneの分散トレースを使用するか、New Relic BrowserのAJAXページを使用します。新しいBrowser spanイベントでは、リクエストURLなどのトレースのブラウザ部分に関する情報が提供され、サービスの問題がフロントエンドのリクエストにどのように影響しているかをチームが判断するのに役立ちます。フロントエンドの開発者は、特定のAJAXリクエスト(クロスオリジンドメインであっても)のトレースを見ることができ、ウェブアプリケーションのパフォーマンスを向上させることができます。
ブラウザ固有の属性を使用して、ブラウザベースのトレーススパンをスパンデータとして問い合わせることができます(例えば、entity.name をブラウザのアプリ名に設定するなど)。
New Relic Browserでの分散トレースのトラブルシューティング
例えば、応答時間が異常に遅い特定のトランザクションをトラブルシューティングする場合、New Relic Browserを起動します。AJAXリクエストを選択し、New Relic Oneの分散トレースへのリンクをたどってください。
分散トレーシングUIから、トレースを調べて、バックエンドサービスがトランザクションの遅延の原因であるかどうかを判断します。
次に、トレースに関与するすべてのエンティティを調査するためにディープダイブし、遅延の原因となる可能性を持っている異常なスパンに直接ジャンプします。
最後に、バックエンドサービスのエラーのうち、フロントエンドのリクエスト応答時間に影響を与えなかったエラーと、応答時間に直接影響を与えたエラーを区別します。
エンドツーエンドの分散トレースでプロアクティブに
DevOpsチームは、エンドツーエンドの分散トレーシングを利用してプロアクティブに行動することで、より迅速に問題を発見し、解決することができます。問題の発生場所(障害、遅延、顧客からのクレームなど)に関わらず、New Relicを利用するチームはエンドツーエンドの分散トレーシングを活用して問題を切り分け、その原因がWebブラウザやネットワーク、バックエンドサービスのどこから来ているのかを判断し、修正を担当するチームとコミュニケーションを取ることができます。
オープンプラットフォームであるNew Relic Oneは、Zipkin、Istio、OpenTelemetryといったオープンソースのトレース計測ツールからトレースをインジェストするために必要なツールを提供します。New Relic Oneは”Connected”なプラットフォームです。サーバー、ソフトウェア、エンドユーザーエクスペリエンスを接続し、インシデントの発見と修正を迅速に行うことができるので、お客様は重要な作業に戻ることができます。
New Relic OneでBrowserからの分散トレーシングを試してみたい方はこちらまで。
The views expressed on this blog are those of the author and do not necessarily reflect the views of New Relic. Any solutions offered by the author are environment-specific and not part of the commercial solutions or support offered by New Relic. Please join us exclusively at the Explorers Hub (discuss.newrelic.com) for questions and support related to this blog post. This blog may contain links to content on third-party sites. By providing such links, New Relic does not adopt, guarantee, approve or endorse the information, views or products available on such sites.