1.7.6. サンプルトレースの生成とトレースデータの分析

Jaeger はオープンソースの分散トレースシステムです。Jaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用します。Jaeger を使用すると、トレースを実行できます。これは、アプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡します。Jaeger はデフォルトでサービスメッシュの一部としてインストールされます。

このチュートリアルでは、サービスメッシュと bookinfo のチュートリアルを使用して、Jaeger で分散トレースを実行する方法を示します。

注記

Bookinfo のサンプルアプリケーションでは、OpenShift Container Platform での Red Hat OpenShift Service Mesh 2.0.6 のインストールをテストすることができます。

Red Hat では、Bookinfo アプリケーションをサポートしていません。

このチュートリアルでは、サービスメッシュおよび Bookinfo チュートリアルを使用して、Red Hat OpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します。

前提条件:

  • OpenShift Container Platform 4.1 以降がインストールされている。
  • Red Hat OpenShift Service Mesh 2.0.6 がインストールされている。
  • インストール時に Jaeger が有効にされている。
  • Bookinfo のサンプルアプリケーションがインストールされている。

手順

  1. Bookinfo アプリケーションをデプロイした後、いくつかのトレースデータを分析できるように、Bookinfo アプリケーションへの呼び出しを生成する必要があります。http://<GATEWAY_URL>/productpage にアクセスし、ページを数回更新すると、トレースデータを生成することができます。
  2. インストールプロセスにより、Jaeger コンソールにアクセスするためのルートが作成されます。

    1. OpenShift Container Platform コンソールで、NetworkingRoutes に移動し、Jaeger ルートを検索します。これは Location に一覧される URL です。
    2. CLI を使用してルートの詳細のクエリーを実行します。

      注記

      <control_plane_project> をコントロールプレーンプロジェクトの名前に置き換えます。この例では、コントロールプレーンプロジェクトは istio-system です。

      $ export JAEGER_URL=$(oc get route -n <control_plane_project> jaeger -o jsonpath='{.spec.host}')
  3. ブラウザーを起動して、https://<JAEGER_URL>; に移動します。
  4. 必要に応じて、OpenShift Container Platform コンソールへアクセスするときに使用するものと同じユーザー名とパスワードを使用してログインします。
  5. Jaeger ダッシュボードの左側のペインで、サービスメニューから「productpage」を選択し、ペイン下部の Find Traces ボタンをクリックします。以下のイメージに示されているように、トレースの一覧が表示されます。

    ossm jaeger main screen
  6. 一覧のトレースのいずれかをクリックし、そのトレースの詳細ビューを開きます。最上部 (最新の) トレースをクリックすると、'/productpage の最終更新に対応する詳細が表示されます。

    ossm jaeger spans

    先の図のトレースは、一部のネストされたスパンで構成されており、各スパンは Bookinfo サービス呼び出しに対応し、すべてが '/productpage 要求の応答で実行されます。全体的な処理時間は 2.62s で、details サービスは 3.56ms、reviews サービスは 2.6s、ratings サービスは 5.32ms かかりました。リモートサービスへの各呼び出しは、それぞれクライアント側とサーバー側のスパンで表されます。たとえば、details クライアント側スパンには productpage details.myproject.svc.cluster.local:9080 というラベルが付けられます。その下にネスト化されるスパンには、details details.myproject.svc.cluster.local:9080 というラベルが付けられ、要求のサーバー側の処理に対応します。トレースは istio-policy への呼び出しも表示し、これには Istio による承認チェックが反映されます。