Azure Chaos Studio実践編(CPU負荷テスト)
はじめに
さて、ギリギリ1月に間に合わせるために頑張って調べて書いてみました。今回のこの記事ではタイトル通りAzure Chaos Studioについて書いたものになります。
Chaos Studio自体は初めてではなく、以前以下の記事でも触れています。
が、見事なまでにテストを実行するところまでに至らず、「触ってみた」でも「試してみた」でもない、「眺めてみた」という非常に恥ずかしいレベルで終わっていました。
今回はそのリベンジでもあります。
テスト準備 VM作成
では、このChaos Studioを使ってAzure VMに対してCPU負荷をかけてみたいと思います。
先ほどお話しした通り、Azureの各リソースに対して意図的にエラーといいますか、異常な状態を発生させるので、まずはそのリソースを作成する必要があります。
今回はLinuxを載せたVMに対してCPU負荷をかけてみましょう。
ということで、Linuxというか今回はUbuntuになりますが、VMを作成しておきます。
今回はCPU負荷をかけて一旦良しとしますので、VM作成時の注意点は特にありません。
また、今回の記事では特に使うことはないのですが、SSH接続を作成し、NGINX Webサーバーのインストールまで実施しておきます。
![](https://assets.st-note.com/img/1706443082977-A0PNrxjxpS.png?width=800)
パブリックIPアドレスでWebサーバーが起動されていることを確認しておきます(わかりにくいですが、以下がブラウザでパブリックIPを叩いたときの画面です)。
![](https://assets.st-note.com/img/1706443110195-xLOFPNacY1.png?width=800)
テスト準備 ユーザ割り当てマネージドID
次にまたまた繰り返しとなってしまいますが、Chaos StudioはAzureのリソースに対して異常を発生させるものですので、それを実現するための準備が必要になります。
今回はテスト対象となるVMに対して異常を発生させるために「ユーザ割り当てマネージドID」を作成します。
作ったことが無い方もいらっしゃるかもなので、作成についても簡単に触れておきますとAzureポータル上部の検索欄に「マネージドID」と入力します。
![](https://assets.st-note.com/img/1706443263774-mRo2gqnPay.png?width=800)
そうするとマネージドIDが表示されるのでそれをクリックするといつものAzureのリソース作成画面に進みます。
![](https://assets.st-note.com/img/1706443288956-Kt3Bam4lCi.png?width=800)
作成にあたってはあまり入力欄も無く、特に注意点も無かったかと思います。
ロールの割り当て
もう少し準備が続きます。そして次の作業が今回の肝になりまして、VMに対してChaos Studioが操作を行うための権限付与作業となります。
先に目指すべき結果を共有しておきますと、VMで以下のようにユーザー割り当てマネージドIDに対してロールの割り当てを追加します。
![](https://assets.st-note.com/img/1706443343690-jhosWUfgbD.png?width=800)
ロールとしては以下の2つです。
・マネージド アプリケーションのオペレーター ロール
・仮想マシン共同作成者
これも簡単に手順を説明しておきますと、以下の画面のように「追加」ー>「ロールの割り当ての追加」を選択します。
![](https://assets.st-note.com/img/1706443368322-8P4RWI5r3Z.png)
以下のような画面になりますので、検索欄に上記2つのロールいずれかを選択して、「次へ」を押します。
![](https://assets.st-note.com/img/1706443383610-rxfbQtQ9B1.png?width=800)
次に「アクセスの割り当て先」で「マネージドID」を選択し、その下の「メンバーを選択する」を押し、画面右側に「マネージドIDの選択」が出てきますのでそこで「マネージドID」で先ほど作成したマネージドIDを選択し、更に表示されたマネージドID(今回はUAI1という名前で作成しています)を選択ます。
そのあとの操作は割愛しますが、このように2つのロールをユーザー割り当てマネージドIDに割り当てます。
![](https://assets.st-note.com/img/1706443401562-FhW2ACvSGx.png?width=800)
そしていよいよ最後の準備、ユーザー割り当てマネージドIDを開き、「アクセス制御(IAM)」から「追加」ー>「ロールの割り当ての追加」で閲覧者のロールを割り当てます。
以下がその実行結果となります。
![](https://assets.st-note.com/img/1706443420227-uFMvUMrhtr.png?width=800)
実はこの「閲覧者」のロールがどのように影響するのかがちょっとわからないのですが、これを設定しておかないとテスト時にエラーとなりますので忘れずに設定しておきましょう。
テスト作成
では、いよいよテストを作成してみたいと思います。
Chaos Studioの画面に遷移し、「実験の管理」で「対象」を選びます。
そして最初に作成したVMを選択し、「ターゲットを有効にする」で有効にしておきます。
![](https://assets.st-note.com/img/1706588178133-ztalVBpQPq.png?width=800)
次にChaos Studioの左側のメニューから今度は「実験」を選択し、「作成」ー>「新しい実験」を選択します。
![](https://assets.st-note.com/img/1706443451669-P1NMJtDsT3.png?width=800)
以下の画面でサブスクリプションとリソースグループ、テストの名前を入力します。
![](https://assets.st-note.com/img/1706443467661-jyPCAimn6B.png?width=800)
更に「Permissions」では「マネージドID」に今回作成したユーザー割り当てマネージドIDを設定します。
![](https://assets.st-note.com/img/1706443483645-XdO88ZKojZ.png?width=800)
そして以下の「実験デザイナー」の画面、こちらで「アクションの追加」ー>「障害追加」を選択します。
![](https://assets.st-note.com/img/1706443501896-VqPdiQcNof.png?width=800)
以下のような「フォールトの追加」ウィンドウが右側に表示されますので、フォールト、つまり発生させたいエラーを選択します。
![](https://assets.st-note.com/img/1706443524458-PrfLHkvg4K.png?width=800)
以下がプルダウンメニューを選択した状態です。
![](https://assets.st-note.com/img/1706443555036-HaaWfSqwMZ.png?width=800)
ここで「CPU Pressure」を選択します。
画面キャプチャは割愛しますが、負荷をかける期間等も設定可能です。
上記のエラーの種類を見ると他にも「Cloud Service Shutdown」とか、「DiskIO Pressure」とか面白そうなものがありますね。
こういったエラーをChaos Studioで発生させることができるわけです。
そして、作成したテストの画面に遷移して、「開始」ボタンでテスト開始します。
![](https://assets.st-note.com/img/1706443573093-mWsb0Xfry3.png?width=800)
そうすると「履歴」に実行した結果が表示されます。
![](https://assets.st-note.com/img/1706443584650-sfgiYoAXxR.png?width=800)
詳細で実行中のテストの状態が見えるのですが、「詳細」というほど詳細ではないですね。。
![](https://assets.st-note.com/img/1706443597505-DC8y6twiPH.png?width=800)
これだけですと本当にCPU負荷がかかっているかどうかがさっぱりわかりませんので、VMの画面に遷移してメトリックを見てみます。
すると以下の様にちゃんとCPU負荷がかかっていることが確認でき、非常に簡単に負荷テストが実施できることがわかります。
![](https://assets.st-note.com/img/1706443615904-j15UrR8LPy.png?width=800)
最後に
以上が、Chaos Studioによるテスト作成とその実行結果となります。
今までであればJMeterでも負荷テストが行えましたが、Chaos Studioであればより簡単に、そしてリソースのシャットダウンや更には自動スケーリングの無効化といったAzureの機能に対するエラー(正しくは「フォールト」なので以下は「フォールト」でいきます)も発生させることができます。
今回は詳しく触れませんでしたが、途中の「実験デザイナー」で1つだけでなく、複数のフォールトを組み合わせて発生させることができます。
フォールトの現時点での種類・内容は以下のページに記載されていますので参考にしていただければと思います。
さらっと書いてみましたが、実際はMicrosoftのドキュメントでロールの割り当てについての記述が非常に簡単な内容になっておりまして、やや苦労しました。
とりあえず無事に実行できて良かったです。
機会があればまた別のフォールトを発生させてみたいと思いますが、今回はここまでとしておきましょう。
この記事が気に入ったらサポートをしてみませんか?