分散トレーシングとは

分散トレースの定義

分散トレーシングは、分散システムまたはマイクロサービス環境を通過するアプリケーション要求を追跡・監視するために使用される手法です。

分散トレーシングは、トランザクション・プロセス全体を通じてユーザーの操作に関するデータを収集および集約することにより、これらのアプリケーション要求を追跡します。この手法により、アプリケーションの正常性と全体的なユーザー・エクスペリエンスに関する洞察が得られます。開発者は、この一連のトレースを使用して、バグ、エラー、または高レイテンシーが発生する領域のトラブルシューティングを行うことができます。

The DX Leaders

AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。

ご登録いただきありがとうございます。

ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。

分散トレーシングの仕組み

ここまでで分散トレーシングとはどのようなものであるかを理解できたので、ここからはその仕組みについて詳しく説明します。モノリシック・アプリケーションとは異なり、マイクロサービス環境は分散バックエンド上で実行されるため、要求の全プロセスを追跡することはさらに困難になります。ありがたいことに、分散トレーシングは、ユーザーのアクションをステップごとに追跡し、フロントエンドからバックエンドまでアプリケーションにどのような影響があるかを監視できます。

分散トレースは、マイクロサービス・アーキテクチャーをインストルメント化することから始まります。OpenTelemetryなどのオープンソース・ツールを使用して、計測およびテレメトリ収集プロセスを開始できます。

次に、開発者は、トレース・データを追跡して各トランザクションに固有の識別子をタグ付けするコードをサービスに実装する必要があります。エンコードされたトレース・コンテキストは、アプリケーション環境全体にわたって、あるサーバーから別のサーバーに渡されます。トランザクションの行程中、トランザクションに付けられた識別子により、顧客体験を可視化できます。

分散トレーシング・ツールは、イベントがサーバーを通過するときに、イベントによってトリガーされた後の各アクティビティーまたはセグメントを追跡します。1つのスパンが収集されると、次のスパンに移動し、これを繰り返します。これらのスパンは通常、親スパンから始まり、子スパンへと移動します。

ツールはこれらのアクションを整理し、カスタム属性、タイムスタンプ、メタデータなどの関連するメトリクスを収集します。通常、分散トレーシング・ツールを使用すると、このデータはフレーム・グラフまたはウォーターフォール・ビュー形式で視覚化できます。これらのグラフは、エンジニアが分散システムのどの部分にボトルネック、速度低下、またはパフォーマンスの問題が発生しているかを判断するのに役立ちます。

最後に、分散トレーシング・ツールと可観測性プラットフォームを組み合わせて、アプリケーションをエンドツーエンドで監視できるようにする必要があります。Instanaのようなプラットフォームを導入すると、データの抽出と処理が容易になり、アプリケーションのエラーを解決するための適切な次のステップに進むことができます。

オフィスでミーティングをするビジネスチーム

IBMお客様事例

お客様のビジネス課題(顧客満足度の向上、営業力強化、コスト削減、業務改善、セキュリティー強化、システム運用管理の改善、グローバル展開、社会貢献など)を解決した多岐にわたる事例のご紹介です。

分散トレーシングのメリットと課題

最新のアーキテクチャーが複雑になっていることで、モノリシックなレガシー・アプリケーションがそれをホストするツールにサービスを提供することが困難になっています。この課題を念頭に置いて、クラウドネイティブ環境での可観測性を実現するには、分散トレーシングが不可欠になっています。

分散トレーシングの主な利点は以下のとおりです。

  • 問題の迅速なトラブルシューティング:平均解決時間(MTTR)と平均検出時間(MTTD)を大幅に短縮します。エンジニアは、分散トレースをレビューして、アプリケーション・エラーの根本原因と場所を特定できます。

  • チーム・コラボレーションの強化:典型的なマイクロサービス環境では、専門チームがさまざまなテクノロジーを扱い、開発します。このような状況では、エラーが発生した場所とそれを解決すべき担当者がわからない場合、チーム間で混乱が生じる可能性があります。トレース・リンクは、エンジニアリング・チームがデータを視覚化し、問題の解決を担当する適切な開発者にアラートを出すのに役立ちます。

  • 柔軟な統合と実装:開発者は、ほとんどのクラウドネイティブ環境に分散トレーシングを実装できます。このツールは、幅広いプログラミング言語とアプリケーションに準拠しています。

これらの各メリットによって、単一の要求がサーバーによってどのように処理されるかの洞察が得られ、アプリケーションのパフォーマンスの向上につながります。分散トレーシングには多くのメリットがありますが、認識すべきいくつかの課題もあります。

  • 手動による計測:いくつかの分散トレーシング・プラットフォームでは、開発者はユーザー要求のトレースを開始するためにコードを修正することが必要です。手動の計測プロセスは、かなりの延べ時間数がかかり、アプリケーションはバグに対してより脆弱性なままとなり、トレースが欠落する可能性があります。

  • フロントエンド分析の不足:分散トレーシング・ツールを購入する際には、エンドツーエンドのカバレッジを確保することが重要です。この機能がなければ、エンド・ユーザーのフロントエンド・エクスペリエンスなしで、バックエンドについての洞察しか得ることができません。この制限により、アプリケーションのデバッグがはるかに困難になる可能性があります。

  • サンプリング:いくつかの分散トレーシング・ツールは、サンプリングして分析するトレースをランダムに選択する任意サンプリングを使用しています。トレースはランダムに選択され、どのトレースに問題があるかを知る方法がないため、チームは存在する重大なエラーを見落とす可能性があります。

分散システムを使用する場合、発生する可能性のある問題がいくつかありますが、たいていメリットはデメリットを上回ります。分散トレーシング・ツールとInstanaを組み合わせると、これらの課題をリアルタイムでトラブルシューティングできます。

分散トレーシングとロギングの比較

分散トレーシングとロギングの違いを理解するために、まずログとは何であるかを取り上げる必要があります。ログは、アプリケーション・システム内で発生するイベントのタイムスタンプです。ロギングとは、ログによって特定されたこれらの重要なイベントを監視し、アプリケーション内の予測不能な動作を明らかにすることです。エラーが発生すると、自動応答がトリガーされ、DevOpsチームにアラートが出されます。

ログ記録のみを使用することの大きな欠点の1つは、トレースなしではアプリケーションのパフォーマンスを十分包括的に調査できないことです。

分散トレーシングは、トレースIDを使用して、コンテキストとともにシステム全体のトランザクションを追跡します。このコンテキストにより、システム内でエラーが発生した正確な場所を見つけることができます。マイクロサービス・ベースのシステムに対するこの可視性により、トランザクションの状況全体で検知までの応答時間が短縮されます。したがって、多くのチームは、分散トレーシングとログを相互に連携させて、最新のアプリケーションの正常性の全体像を把握しています。

分散トレーシング・ツール

分散型トレーシング・ツールは通常、計測、データ収集、およびフレーム・グラフへのデータの視覚化をサポートします。分散トレーシング・ソリューションをセットアップする最も一般的な方法は、オープンソース・ツールを使用することです。

これらは、市場で入手可能な最も人気のあるオープンソース・オプションの一部です。

  • OpenTelemetry:OpenTelemetryは、一式のソフトウェア開発キット(SDK)、データ収集ソフトウェア、ベンダー・ニュートラルなAPI、およびインストルメンテーション用ツールを提供します。これはOpenCensusとOpenTracingを組み合わせたものです。クラウド環境向けのこのパフォーマンス監視フレームワークは、最も人気のある分散トレーシング・ツールの1つです。OpenTelemetryには、データの分析や視覚化のためのツールは含まれていませんが、そのような調査はテレメトリー・データをサード・パーティー製アプリケーションに送信することで実施できます。

  • OpenCensus:OpenCensusは、Googleの内部トレース・システムに基づいてGoogleによって作成されました。最終的にはオープンソースになり、多言語ライブラリーから入手できるようになりました。データを収集してバックエンド・プラットフォームに転送し、デバッグを支援することができますが、残念ながら、ソフトウェアをコードに組み込むためのAPIがありません。この制限は、Cloud Native Computing Foundation(CNCF)によってOpenCensusとOpenTracingが統合され、OpenTelemetryが作成された主な理由の1つです。

  • OpenTracing:OpenTracingは、ベンダー中立のAPIで、開発者が分散トレーシングのためにコードを計装することを支援します。このオープンソース・プロジェクトは、Java、Python、Rubyを含む9つの異なる言語で利用できます。

  • Zipkin:Zipkinは、X社(旧Twitter)が作成したもう1つのオープンソース・プロジェクトです。この分散トレーシング・システムは、DevOpsの専門家が重要なアプリケーション・データを収集し、さまざまなサービス・アーキテクチャーにおける遅延の問題をトラブルシューティングするのに役立ちます。データをZipkinに報告するには、Apache、Kafka、またはHTTPを使用できます。
  • Jaeger:Jaegerはこのリストの中の最も新しいオープンソース・プロジェクトで、Uberによって作成され、OpenTracingと簡単に統合できます。このツールは弾力性が高く、マイクロサービス環境を介した要求のトレーシングに最適なオプションです。ZipkinとJaegerはどちらも統計の視覚化を支援しますが、データのサンプリングに関しては制限があります。

OpenCensusとOpenTracingは過去に人気がありましたが、OpenTelemetry、Zipkin、またはJaegerを使用することをお勧めします。これらのツールをAPMやInstanaなどの可観測性ツールと組み合わせて使用すると、アプリケーション内で起きている事柄を完全に把握できます。

Instanaですべてのサーバー上のすべての要求を追跡する

アプリケーションとそのコンポーネント間で受け渡されるメッセージ間の相互作用を理解するには、トレースが必要です。Instana AutoTraceを使用すると、すべての要求とオープンソースAPIからの相関トレースをキャプチャーする機能により、コンテキストや呼び出しを見落とすことはありません。Instanaは、動的グラフによってこれを簡単に行えるようにします。

アプリケーション、サービス、システム・アーキテクチャー間の各トレースを最適化し、システム全体のカバレッジを備えます。分散トレーシング機能のあるInstanaを試すには、当社の2週間の無料トライアルに登録して、その機能をご利用になってください。

関連ソリューション
フルスタック・オブザーバビリティーの自動化

問題の原因を迅速に特定し、修正します。 リアルタイムの高精度データにより、動的なアプリケーションおよびインフラストラクチャーの環境を完全に可視化できます。

フルスタック・オブザーバビリティーの詳細はこちら
クラウド・リソースの自動最適化

オブザーバビリティーを活用して、クラウドのリソースをプロアクティブに最適化し、パフォーマンスを確保し、コストを節約します。

クラウド・コスト最適化の詳細はこちら
アプリケーション管理の合理化

異種の環境、アプリケーション、ツールセットからのデータを利用して依存関係と関連性を分析し、アプリケーション環境の全体にわたる可視性を提供します。

アプリケーション管理の合理化の詳細はこちら
次のステップ

AIを活用したオブザーバビリティー・ツールが、クラウドネイティブなアプリケーションの健全性を支援、運用のレジリエンスを最大化します。

 

オブザーバビリティー・ソリューションを見る 無料相談・デモ体験はこちら