4.5. 分散トレースのチュートリアル
Jaeger はオープンソースの分散トレースシステムです。Jaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用します。Jaeger を使用すると、トレースを実行できます。これは、アプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡します。Jaeger はデフォルトでサービスメッシュの一部としてインストールされます。
このチュートリアルでは、サービスメッシュと bookinfo のチュートリアルを使用して、Jeager で分散トレースを実行する方法を示します。
Bookinfo のサンプルアプリケーションでは、OpenShift Container Platform での Red Hat OpenShift Service Mesh 1.1.2 のインストールをテストすることができます。
Red Hat では、Bookinfo アプリケーションをサポートしていません。
4.5.1. トレースの生成とトレースデータの分析
このチュートリアルでは、サービスメッシュおよび Bookinfo チュートリアルを使用して、Red Hat OpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します。
前提条件:
- OpenShift Container Platform 4.1 以降がインストールされている。
- Red Hat OpenShift Service Mesh 1.1.2 がインストールされている。
- インストール時に 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 による認可チェックが反映されます。