チュートリアル: Azure Spring Apps でサーキット ブレーカー ダッシュボードを使用する

警告

Hystrix ではアクティブな開発は行われなくなっており、現在メンテナンス モードになっています。

注意

Azure Spring Apps は、Azure Spring Cloud サービスの新しい名前です。 サービスの名前は新しくなりましたが、スクリーンショット、ビデオ、図などの資産の更新に取り組んでいる間、場所によってはしばらく古い名前が表示されます。

この記事の適用対象: ✔️ Java ❌ C#

この記事の適用対象: ✔️ Basic または Standard ✔️ Enterprise

この記事では、Azure Spring Apps で Netflix Turbine と Netflix Hystrix を使用する方法について説明します。 Spring Cloud Netflix Turbine とは、Hystrix ダッシュボードを使用して単一のビューでストリームを監視できるように複数の Netflix Hystrix メトリック ストリームを集約するためのものであり、広く使用されています。

注意

Netflix Hystrix は、既存の多くの Spring アプリで広く使用されていますが、現在活発な開発は行われていません。 プロジェクトを新規に開発する場合は、resilience4j のような Spring Cloud Circuit Breaker の実装を代わりに使用してください。 このチュートリアルで示した Turbine とは異なり、新しい Spring Cloud Circuit Breaker フレームワークでは、そのメトリック データ パイプラインのすべての実装が Micrometer に統合されます。これも、Azure Spring Apps によってサポートされています。 詳細については、「Micrometer を使用して、Spring Cloud Resilience4J サーキット ブレーカーのメトリックを収集する (プレビュー)」を参照してください。

サンプル アプリケーションを準備する

サンプルは、このリポジトリからフォークされます。

ご利用の開発環境にサンプル リポジトリを複製します。

git clone https://github.com/Azure-Samples/azure-spring-apps-samples.git
cd azure-spring-apps-samples/hystrix-turbine-sample

このチュートリアルに含まれる 3 つのアプリケーションをビルドします。

  • user-service: /personalized/{id} という単一のエンドポイントを備えたシンプルな REST サービス
  • recommendation-service: /recommendations という単一のエンドポイントを備えたシンプルな REST サービスです。これは、user-service によって呼び出されます。
  • hystrix-turbine: Hystrix ストリームを表示する Hystrix ダッシュボード サービスと、他のサービスから Hystrix メトリック ストリームを集約する Turbine サービス。
mvn clean package -D skipTests -f user-service/pom.xml
mvn clean package -D skipTests -f recommendation-service/pom.xml
mvn clean package -D skipTests -f hystrix-turbine/pom.xml

Azure Spring Apps インスタンスをプロビジョニングする

クイック スタート: 初めてのアプリケーションを Azure Spring Apps にデプロイする」の「Azure Spring Apps のインスタンスをプロビジョニングする」セクションの手順を実行してください。

Azure Spring Apps にアプリケーションをデプロイする

これらのアプリでは Config Server は使用されません。そのため、Azure Spring Apps 用に Config Server を設定する必要はありません。 次のように作成してデプロイします。

az configure --defaults \
    group=<resource-group-name> \
    spring=<Azure-Spring-Apps-instance-name>

az spring app create --name user-service --assign-endpoint
az spring app create --name recommendation-service
az spring app create --name hystrix-turbine --assign-endpoint

az spring app deploy \
    --name user-service \
    --artifact-path user-service/target/user-service.jar
az spring app deploy \
    --name recommendation-service \
    --artifact-path recommendation-service/target/recommendation-service.jar
az spring app deploy \
    --name hystrix-turbine \
    --artifact-path hystrix-turbine/target/hystrix-turbine.jar

アプリを確認する

すべてのアプリが実行中で検出可能になったら、ブラウザーから https://<Azure-Spring-Apps-instance-name>-user-service.azuremicroservices.io/personalized/1 パスを使用して user-service にアクセスします。 user-service から recommendation-service にアクセスできる場合は、次の出力が表示されます。 Web ページが動作しない場合は、何度か更新してください。

[{"name":"Product1","description":"Description1","detailsLink":"link1"},{"name":"Product2","description":"Description2","detailsLink":"link3"},{"name":"Product3","description":"Description3","detailsLink":"link3"}]

Hystrix ダッシュボードとメトリックストリームにアクセスする

パブリック エンドポイントまたはプライベート テスト エンドポイントを使用して確認します。

パブリック エンドポイントの使用

ご利用のブラウザーからパス https://<SERVICE-NAME>-hystrix-turbine.azuremicroservices.io/hystrix を使用して hystrix-turbine にアクセスします。 次の図に、このアプリで実行されている Hystrix ダッシュボードを示します。

[Delay] と [Title] の詳細を示す Hystrix ダッシュボードのスクリーンショット。

Turbine ストリームの URL https://<SERVICE-NAME>-hystrix-turbine.azuremicroservices.io/turbine.stream?cluster=default をテキスト ボックスにコピーし、 [Monitor Stream](ストリームの監視) を選択します。 このアクションによりダッシュボードが表示されます。 ビューアーに何も表示されない場合は、user-service エンドポイントにアクセスしてストリームを生成してください。

[Circuit] と [Thread Pools] の詳細を示す [Hystrix Stream] ページのスクリーンショット。

Note

運用環境では、Hystrix ダッシュボードとメトリック ストリームをインターネットに公開しないでください。

プライベート テスト エンドポイントの使用

Hystrix メトリック ストリームには、test-endpoint からアクセスすることもできます。 バックエンド サービスとして、recommendation-service に対してパブリック エンドポイントを割り当てませんでしたが、そのメトリックは、https://primary:<KEY>@<SERVICE-NAME>.test.azuremicroservices.io/recommendation-service/default/actuator/hystrix.stream で test-endpoint を使用して表示できます。

[Hystrix test-endpoint ストリーム] ページのスクリーンショット。

Web アプリとして、Hystrix ダッシュボードが test-endpoint 上で機能している必要があります。 正常に機能していない場合は、次の 2 つの理由が考えられます。1 つは、test-endpoint を使用したことで、ベース URL が / から /<APP-NAME>/<DEPLOYMENT-NAME> に変更されたこと、もう 1 つは Web アプリで静的リソースに絶対パスが使用されていることです。 test-endpoint で動作させるには、フロントエンド ファイル内の <base> を手動で編集することが必要になる場合があります。

次のステップ