チュートリアル: Azure Spring Apps でサーキット ブレーカー ダッシュボードを使用する
警告
Hystrix ではアクティブな開発は行われなくなっており、現在メンテナンス モードになっています。
Note
Basic、Standard、および Enterprise プランは、2025 年 3 月中旬から廃止され、3 年間の提供終了期間となります。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の提供終了のお知らせ」を参照してください。
Standard 従量課金プランと専用プランは、2024 年 9 月 30 日以降は非推奨となり、6 か月後に完全にシャットダウンされます。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の Standard 従量課金プランと専用プランを Azure Container Apps に移行する」を参照してください。
この記事の適用対象: ✔️ 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 ダッシュボードを示します。
Turbine ストリームの URL https://<SERVICE-NAME>-hystrix-turbine.azuremicroservices.io/turbine.stream?cluster=default
をテキスト ボックスにコピーし、 [Monitor Stream](ストリームの監視) を選択します。 このアクションによりダッシュボードが表示されます。 ビューアーに何も表示されない場合は、user-service
エンドポイントにアクセスしてストリームを生成してください。
Note
運用環境では、Hystrix ダッシュボードとメトリック ストリームをインターネットに公開しないでください。
プライベート テスト エンドポイントの使用
Hystrix メトリック ストリームには、test-endpoint
からアクセスすることもできます。 バックエンド サービスとして、recommendation-service
に対してパブリック エンドポイントを割り当てませんでしたが、そのメトリックは、https://primary:<KEY>@<SERVICE-NAME>.test.azuremicroservices.io/recommendation-service/default/actuator/hystrix.stream
で test-endpoint を使用して表示できます。
Web アプリとして、Hystrix ダッシュボードが test-endpoint
上で機能している必要があります。 正常に機能していない場合は、次の 2 つの理由が考えられます。1 つは、test-endpoint
を使用したことで、ベース URL が /
から /<APP-NAME>/<DEPLOYMENT-NAME>
に変更されたこと、もう 1 つは Web アプリで静的リソースに絶対パスが使用されていることです。 test-endpoint
で動作させるには、フロントエンド ファイル内の <base>
を手動で編集することが必要になる場合があります。