1.7.6. サンプルトレースの生成とトレースデータの分析
Jaeger はオープンソースの分散トレースシステムです。Jaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用します。Jaeger を使用すると、トレースを実行できます。これは、アプリケーションを設定するさまざまなマイクロサービスで要求のパスを追跡します。Jaeger はデフォルトでサービスメッシュの一部としてインストールされます。
このチュートリアルでは、サービスメッシュと bookinfo のチュートリアルを使用して、Jaeger で分散トレースを実行する方法を示します。
Bookinfo のサンプルアプリケーションでは、OpenShift Container Platform での Red Hat OpenShift Service Mesh 1.1.9 のインストールをテストすることができます。
Red Hat では、Bookinfo アプリケーションをサポートしていません。
このチュートリアルでは、サービスメッシュおよび Bookinfo チュートリアルを使用して、Red Hat OpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します。
前提条件:
- OpenShift Container Platform 4.1 以降がインストールされている。
- Red Hat OpenShift Service Mesh 1.1.9 がインストールされている。
- インストール時に Jaeger が有効にされている。
- Bookinfo のサンプルアプリケーションがインストールされている。
手順
-
Bookinfo アプリケーションをデプロイした後、いくつかのトレースデータを分析できるように、Bookinfo アプリケーションへの呼び出しを生成する必要があります。
http://<GATEWAY_URL>/productpage
にアクセスし、ページを数回更新すると、トレースデータを生成することができます。 インストールプロセスにより、Jaeger コンソールにアクセスするためのルートが作成されます。
-
OpenShift Container Platform コンソールで、Networking
Routes に移動し、Jaeger ルートを検索します。これは Location に一覧される URL です。 CLI を使用してルートの詳細のクエリーを実行します。
$ export JAEGER_URL=$(oc get route -n bookinfo jaeger-query -o jsonpath='{.spec.host}')
-
OpenShift Container Platform コンソールで、Networking
-
ブラウザーを起動して、
https://<JAEGER_URL>
に移動します。 - 必要に応じて、OpenShift Container Platform コンソールへアクセスするときに使用するものと同じユーザー名とパスワードを使用してログインします。
Jaeger ダッシュボードの左側のペインで、サービスメニューから productpage を選択し、ペイン下部の Find Traces ボタンをクリックします。以下のイメージに示されているように、トレースの一覧が表示されます。
一覧のトレースのいずれかをクリックし、そのトレースの詳細ビューを開きます。最上部 (最新の) トレースをクリックすると、
'/productpage
の最終更新に対応する詳細が表示されます。先の図のトレースは、一部のネストされたスパンで設定されており、各スパンは 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 による承認チェックが反映されます。