実験内容
今回の実験ではインスタンスのCPU使用率が90%以上となっても、利用者が継続してシステムを利用し続けることができることを確認してみます。
Application Insightsの可用性テストの結果から、下記の状態を異常状態として定義し、Azure Monitorのアラートとして検知できるようにします。
- 30分間のHTTP Statusが200だった場合のリクエスト数/30分の総リクエスト数(30回)< 90%
- 30分間のリクエストのレスポンスタイムの90パーセンタイル値 > 3000ms
逆説的には、このような異常状態でない状態を定常状態として定義しています。(「定常状態の定義」観点のポイント)
![Azure Monitorのアラート設定](http://cz-cdn.shoeisha.jp/static/images/article/16633/16633_004.png)
なお、「30分間のリクエストのレスポンスタイムの90パーセンタイル値」はApplication Insightsで取得するログ(requests)に対し、以下のKustoクエリを適用して取得しています。
let dataset = requests | where timestamp > ago(30m) ; dataset | summarize percentile(duration, 90)
それでは、Chaos Studioの具体的な実験の設定方法を見ていきましょう。設定の流れは、Microsoftの公式ドキュメントも参照ください。
ターゲットの有効化
Chaos Studioでは、まず実験対象のリソースをターゲットとして有効化する必要があります。ここでは、「サービス直接ターゲット」と「エージェントベースのターゲット」の2種類が用意されています。
「サービス直接ターゲット」は、Azureの各サービスにおけるリソース停止といった、サービスに直接障害を発生させるものであり、エージェントレスで動作可能です。一方、「エージェントベースのターゲット」は、メモリへの負荷やプロセスの強制停止などのVMやVMSSのインスタンス内に障害を発生させるものであり、エージェントの導入が必要となります。
今回はVMSSリソースに対して「エージェントベースのターゲット」を選択します。
エージェントベースのターゲットに対して実験を実行する場合、ユーザー割り当てマネージドIDを使用してインスタンスに対し障害を発生させるため、事前にユーザー割り当てマネージドIDを作成しておく必要があります。「エージェントベースのターゲット」を有効化する際、作成したユーザー割り当てマネージドIDを指定します。ユーザー割り当てマネージドIDの作成方法は、こちらの手順を参考に作成します。
![ターゲットの有効化](http://cz-cdn.shoeisha.jp/static/images/article/16633/16633_005.png)