分散トレースへの移行ガイド

この移行ガイドでは、既存の New Relic APM ユーザーが分散トレースを有効にしたい場合に考慮すべき事項を説明します。

APM Pro 契約ユーザーのみ利用可能です。

分散トレースは New Relic の新しく強力な機能です。分散アーキテクチャの活動を詳細に把握できます。

分散トレースをスムーズに利用できるようにするには、この機能を有効にする前に以下の点を注意してください。

  • 互換性とサポート: 分散トレースは APM Pro 以上のプランで利用できます。現在は一部の APM エージェントでのみ利用可能です。今後それ以外のエージェントでも利用可能になる予定です。
  • システム特性: 複数の分散サービスを持つアーキテクチャーでは効果が高いですが、モノリシックなシステムではそれほど利益を得ることはありません。
  • APM 機能の変更点: 分散トレースを有効にすると、多くの新機能が利用可能になりますが、一部の APM 機能に大幅な変更が加わります。
  • 展開戦略: 大規模システム向けにこの機能を展開する際に考慮すべき事項があります。

考慮事項 #1: あなたのシステムはどのように分散していますか?

あなたのシステムが多数の相互接続されたサービスから成り立っている場合だったり、そのようなアーキテクチャに移行する過程にある場合、分散トレースを有効にすることで多くの利点が得られるでしょう。現状モノリシックなシステムであり、しばらくその状態から変更されない場合は、分散トレースを導入することで得られる利益は少ないでしょう。

たとえば、他のサービスからデータを取得する呼び出しを行う API サービスをブラウザで呼び出すアプリを運用している場合、分散トレースはエラーと遅延がどこで発生しているかを識別するのに役立ちます。バックエンドサービスが非同期呼び出しを使ってエンドツーエンドのオペレーションを完了したなら、その非同期のアクティビティを表示したり、分析することができます。

一方、アプリが単一のモノリシックなバックエンドサービスを呼び出すだけのブラウザクライアントで構成されている場合、分散トレースは、問題の理解やトラブルシューティングに役立ちません。

考慮事項 #2: APM 機能の変更点

分散トレースは、従来のクロス・アプリケーション・トレース機能に比べて以下の利点があります。

  • より多くのクロス・サービスのアクティビティに関する完全なエンドツーエンドのトレース。
  • スパン属性でトレースをフィルタリングし、New Relic Insight でそのデータをクエリし、カスタムダッシュボードを作成できます。
  • クロスアカウントの文脈で、呼び出しがアカウントの境界を越えていても(同じマスターアカウントを持つアカウントまたは同じ顧客パートナーシップのアカウントの場合)、完全なトレースを見ることができます。

その他の機能については分散トレースの導入をご覧ください。

分散トレースを有効にすると、現在使用している APM の一部の機能に影響する場合があります。この変更は、分散トレースが有効になっている New Relic 監視対象のアプリにのみ影響します。アカウント単位では適用されません。

New Relic は、将来のリリースで影響を受ける機能の一部や全部と下位互換性を提供する可能性があります。今のところ、分散トレースを有効にする前に、次の変更があることを理解しておいてください。

External services (外部サービス)ページいは情報が少ない
分散トレースを有効にしたアプリでは、External services ページの外部呼び出しには内部トランザクションの詳細情報は含まれません(下記のスクリーンショットを参照)。その情報を見つけるには、Distributed tracing ページにアクセスし、外部呼び出しの URL を見つけ、そのスパンを確認してください

Distributed tracing - external services with less detail

rpm.newrelic.com/apm > (選択したアプリ) > External services > (選択した外部サービス): 分散トレースを有効にした場合、ここに表示する外部サービスのトランザクションの詳細は External services ページに表示されません。

トランザクショントレースには、トランザクションのリンクではなくサービス URL が表示されます。
分散トレースを有効にしたアプリでは、トランザクショントレースには、呼び出されたサービスのトランザクション名とリンクは表示されません(下記のスクリーンショットを参照)。呼び出されたサービスの URL に置き換えられます。

Distributed tracing - Transaction trace effects

rpm.newrelic.com/apm > (選択したアプリ) > Transactions > (選択したトランザクショントレース): 上記は、分散トレースを有効にする前のトランザクショントレースの画面です。関連するトランザクションへのリンクが含まれます。分散トレースを有効にすると、サービスの URL が表示されます。

トレースのアクティビティについて詳しく知りたい場合は、Distributed tracing ページにアクセスして、該当トレースを調べてください。

サービスマップはクロスサービス接続を表示しません。
APM が監視するエンティティに対して分散トレースが有効になっている場合、サービスマップはビジュアルマップにサービス間接続を表示しません。サービスで分散トレースが有効になっている場合、サービスはノードとして表示されません。呼び出されたサービスを確認するには、ノードを選択し、そのExternalsを確認してください。

また、Discover your environment [環境を検出する]機能は、接続されているサービスを自動的に表示しません。

これらのサービスマップの変更は、New Relic の分散トレースを(あなたのサービス全体に)展開していく初期の段階で検討する価値があります。なぜなら、分散トレースは、New Relic が提供する APM 言語エージェントで利用できないものがあるからです。

Service maps - services show up as externals

rpm.newrelic.com/apm > (選択したアプリ) > Service maps: 分散トレースが有効になっている場合、サービスマップは接続済みのサービスをマップに表示しなくなります。

サービスマップに New Relic Mobile が監視するエンティティは表示されません
現在(2018年8月)この時点で、APM が監視するエンティティに対して分散トレースが有効になっている場合、サービスマップには New Relic Mobile が監視するアプリは表示されません。
Java エージェントでは自動アプリ名は機能しません
現時点では、分散トレースは Java エージェントの自動アプリ命名機能と互換性がありません。

考慮事項 #3: 展開プラン

分散トレースを利用するには、まず、分散トレースの一部として表示するサービスが利用している APM エージェントを更新する必要があります。分散トレース用に更新や設定が行われていないエージェントでは、完全な情報を持ったトレースを表示できません。

多くの APM 監視エンティティを持つ大規模なシステムを運用している場合は、システムにおける分散トレースの展方法を検討すべきです。以下の点を考慮してください。

  • あなたのビジネスにとって最も重要なリクエスト、そして分析とトラブルシューティングの価値の高いリクエストを考えてください。そのリクエストに関連する最も重要なアプリケーションとサービスを決定し、そのサービスの APM エージェントを更新して有効にします。
  • 同時に、サービスのトレースを有効にすることで、エンドツーエンドトレースをより簡単に正確に評価できるようになります。
  • そのリクエストのトレースが UI で表示されるようになると、トレースに他のサービスへの呼び出しのスパンが表示されます。次の展開として、分散トレースにこれらのサービスの詳細を追加するめに、そのサービスに APM エージェントをインストールしたり、アップグレードしてください。
  • アプリがモノリシックであり、他のサービスとのあまり連携していない場合、分散トレースを有効にしないようにしましょう。

New Relic distributed tracing rollout strategy

多くの New Relic エージェントを利用している大規模なシステムで分散トレースを有効にするための戦略の例。

心に留めておくべきその他の注意点:

  • New Relic の分散トレースは初期段階にあります。この機能はすべての APM 言語エージェントに対応していません。また、New Relic Browser や New Relic Mobile ではまだ利用できません。
  • 1つのトレースにつき多くのサブプロセススパンを持つ、より大きなモノリシックアプリケーションの場合、トレースのレポーティングの限界は、あなたが予想していたよりもトレース数が少ないことを意味します。これは、エージェント計測を利用して、重要ではないデータのレポートを無効にすることで修正できます。

分散トレースを有効にする

この移行ガイドを確認し、先に進む準備ができたなら、分散トレースの有効化をご覧ください。