EBS のスループットパフォーマンスなどに関する調査方法を教えてください
困っていること
EC2 インスタンスにアタッチされている EBS のパフォーマスが不足しているように見受けられます。
パフォーマンスに懸念があるため、一定期間チェックを行い必要であれば改善したいと考えています。
EC2 インスタンス側のスループットや EBS ボリュームのスループットなどを簡単に調査する方法があれば教えてください。
はじめに
EBS のパフォーマンスは 3 つの要素で律速されます。
- EC2 インスタンス側のスループット
- EBS ボリュームが処理できる I/O 命令の回数 (IOPS)
- 各 EBS ボリュームのスループット
※参考情報(P33)
本ブログにおいては、CloudWatch メトリクスを利用した各種計算方法などは紹介致しません。
気になる方は、以下を参考にご確認ください。
- Amazon EBS–optimized instances
- CloudWatch メトリクスを使用して、EBS ボリュームが提供する平均スループットと IOPS の平均数を計算するにはどうすればよいですか?
- Amazon EBS volume types
どう対応すればいいの?
AWS Systems Manager Automation Runbook リファレンスより、"AWSSupport-CalculateEBSPerformanceMetrics"
ドキュメントの利用をお勧めします。
AWS 側で EBS のパフォーマンスに関する各種計算を行います。計算された値は Calculated メトリクスとして新たに作成される CloudWatch ダッシュボード内でわかりやすく表示されます。
詳細については下記ドキュメントをご確認ください。
やってみた
前途のドキュメントを参考に確認してみました。
下記を参考に、Systems Manager のコンソール画面へ、左ペインのオートメーションを選択して、検索窓に "AWSSupport-CalculateEBSPerformanceMetrics"
を記述してクリック
対象のオートメーションドキュメントが表示されたら選択を行い下へスクロール
右下にある「次へ」をクリック
「オートメーションの実行する」のボタンをクリック
今回は「シンプルな実行」選択を行い下へスクロール
入力パラメータのセクションで対象リソース、パフォーマンス計測する期間などを記述
- ResourceId には対象 EC2 インスタンス iD 又は EBS ボリューム ID を記述
(今回は EC2 インスタンス ID を記述、こちらには検証用に"gp2"
"gp3"
"io2"
の 3 タイプの EBS ボリュームがアタッチされています) - Amazon CloudWatch メトリクスの期間 (秒単位)で指定
- StartTime と EndTime は
"yyyy-mm-ddThh:mm:ss UTC"
の書式で記述 例: 2023-05-22T04:45:00 - ドキュメント を参考に必要なロールをアタッチ
再度下へスクロールを行い、右下の「実行」ボタンをクリックすれば完了
実行が成功すると、下記のような CloudWatch ダッシュボードが作成されます。
CloudWatch のコンソール画面からも確認可能ですが、
対象のオートメーション ID を選択してクリック、次のページで「出力」をクリックすると以下の表示が確認できます。
こちらの、"getInstanceStats.CloudWatchDashboardLink"
下に記述されている URL からも作成された CloudWatch ダッシュボードへ行くことが可能です。
getInstanceStats.CloudWatchDashboardLink https://ap-northeast-1.console.aws.amazon.com/cloudwatch/home?region=ap-northeast-1#dashboards:name=i-0523aac0ec5844b12-EBS-Statistics
作成された CloudWatch ダッシュボードについて
対象の EC2 インスタンスで "Throughput" と "IOPS" において上限に抵触していないかを確認可能です。
EBS でも同様に、"Throughput","IOPS","IO size" について確認可能です。
こちらの各メトリクスを参考に、どの要素(EC2 インスタンス側のスループット、EBS ボリュームが処理できる I/O 命令の回数 (IOPS)、各 EBS ボリュームのスループット )での対応が必要か判断され、各種ご対応を行ってください。