Azure Chaos Studio はカオス エンジニアリングを実行するためのサービスです
Azure VM に関しては VM の停止や CPU 使用率の増加などの障害テスト (実験) が可能です
Chaos Studio には2種類の障害が利用可能です
- サービス直接: これらの障害は、インストールやインストルメンテーションなしで、Azure リソースに対して直接実行されます。 たとえば、Azure Cache for Redis クラスターの再起動や、Azure Kubernetes Service ポッドへのネットワーク待機時間の追加などがあります。
- エージェント ベース: これらの障害は、VM または仮想マシン スケール セットで実行され、ゲスト内で障害が発生します。 たとえば、仮想メモリへの負荷や、プロセスの強制終了などがあります。
Azure Chaos Studio とは | Microsoft Learn
今回は VM へ負荷をかけるエージェント ベースの障害を試してみます
利用できる障害テストの種類は Azure Chaos Studio の障害およびアクション ライブラリ | Microsoft Learn に書かれています
ざっくり手順
- マネージド ID の作成
- VM に Chaos Studio を有効化
- 実験の作成
- 実験の実行
1. マネージド ID の作成
Chaos Studio エージェントでは、VM でユーザー割り当てマネージド ID を使用して、Chaos Studio サービスに対して認証を行います
そのためのマネージド ID を作成しておきます
2. VM に Chaos Studio を有効化
Azure Portal で Chaos Studio の画面に移動します
[対象] メニューで有効化する VM を選択し、[ターゲットを有効にする] をクリックし、[エージェント ベースのターゲット (VM、VMSS) を有効にする]を選択します
利用するマネージド ID を選択します
Application Insights による分析を有効化することもできますが、今回は割愛します
デプロイが完了するとエージェント ベースが有効になります
3. 実験の作成
次に実行する障害テスト (実験) を作成します
[実験] メニューから [新しい実験] をクリックします
アクセス許可の確認画面が表示されるので [カスタム役割のアクセス許可] にチェックを入れておきます
Chaos Studio では実行する障害テストをいくつかの手順に分けて実行します
[アクションの追加] から実行する障害テストを選択します
障害テストの内容によって設定するパラーメータは異なります
対象にするリソースを選択します
静的に選択することもできますし、KQL クエリを使って動的に選択することもできます
この場合 Azure Resource Graph が利用されます
perf
という名前を含む VM を選択するクエリは以下のようになります
resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| where name contains "perf"

今回は最終的に以下のような実験を作成しました
4. 実験の実行
早速実験を開始したいと思います
順調に進んでるようなので VM のメトリックを見てみたいと思います
Azure Monitor Agent を入れていなかったのでゲスト OS から見た正確な値はみれませんでしたが、Azure Portal からのホストのメトリックは確認できました
確かに CPU が高騰しています
まとめ
Azure Chaos Studio を試しました
気軽に VM に負荷をかけることができるので、監視のテストやパフォーマンス診断のシミュレーションで使えそうです