Azure VM BシリーズのCPUクレジットのメトリック確認と監視設定
Bシリーズの仮想マシン(Azure VM)のCPUクレジット使用状況を確認するためのメトリックや、Azure Monitorでの監視設定についての紹介です。
PowerShellを使ったCPUクレジットの確認についても紹介しています。
Azureで提供されている仮想マシンのシリーズの1つにBシリーズがあります。
Bシリーズは使っていないCPU使用量をクレジットとして貯めておき、負荷が高くなった時に貯めておいたCPUクレジットを使う事ができます。
同じリソースのDシリーズと比較してコストを抑えて仮想マシンを使う事ができます。
サーバのCPU使用負荷が高い状態が継続すると、CPU クレジットが使い果たされてしまう事があります。
Bシリーズの仮想マシンのメトリックにはCPU Credits Remaining(使用済みの CPU クレジット)、CPU Credits Consumed(使用可能なCPUクレジット)と言った項目がありCPUクレジットの使用状況を確認できます。
これらのメトリックを確認、監視しておくことでCPUリソースの枯渇を防ぐことができます。
※本記事内ではAzure VM(Azure Virtual Machines)を仮想マシンとして表記しています。
※2024年3月に記事をBシリーズのモデル名などを修正しています。
CPUクレジットに関するメトリックを確認
ベースラインを下回ったCPU使用量がクレジット残として蓄積される
Bシリーズの仮想マシンにはサイズに応じたベースラインが設定されています。
このベースラインはCPUを恒常的に使用できる水準を指します。
Bsv2 シリーズ
Basv2 シリーズ
Bpsv2 シリーズ
仮想マシンがこのベースラインを下回る使用率だった場合に、余ったCPU容量をクレジットとして蓄積します。
ベースラインを超えてCPUリソースを使用すると、蓄積されたクレジットを消費します。
また貯める事ができるクレジットには上限があります。
例えばStandard_B2s_v2であれば40%に設定されています。
Standard_B2s_v2の場合は2コアなので、1コアあたり20%のCPU使用率がベースラインとなります。
※仮想マシン単位で蓄積されます。他の仮想マシンとCPUクレジットを共有して使用できません。
仮想マシンを停止(割り当て解除)するとクレジットはクリアされる
仮想マシンを停止した際に割り当て解除まで実施するとクレジットはクリアされます。
OSのみシャットダウンをして停止した場合では、仮想マシンのリソースはリリースされてないためクレジットは維持、蓄積されます。
※再起動など短時間での起動停止の場合では別ホストに移動しない事もあるようです。
仮想マシンの停止と課金状況の関連についてはこちらに纏めています。
Bシリーズとスポットインスタンスの違い
どちらも仮想マシンのコスト削減に利用する事ができます。
Bシリーズは停止する事はありませんが、スポットインスタンスは停止する事があります。
一方でスポットインスタンスはリソースの使用量自体が制限される事はありませんが、BシリーズはCPUクレジットを使い果たした場合はベースラインのCPU使用量しか利用できません。
CPUクレジットに関するメトリックはCPU Credits ConsumedとCPU Credits Remainingの2つ
BシリーズのCPUクレジットの利用状況を確認出来るメトリックは2つあります。
Microsoft.Compute/virtualMachines でサポートされているメトリック
-
- CPU Credits Consumed
- 消費したCPU クレジット
- ベースラインを上回って消費されたCPU容量(クレジット)
- CPU Credits Remaining
- 使用可能なCPU クレジット
- 蓄積されているCPU容量(クレジット)
- CPU Credits Consumed
仮想マシンのメトリックでCPUクレジットの利用状況を確認
CPUクレジットは仮想マシンのメトリックで確認できます。
クレジットは数値で表示されます。
PowerShellでCPUクレジットを確認
Get-AzMetricを使うとCPU Credits Remaining(使用可能なCPU クレジット容量)やCPU Credits Consumed(消費したCPUクレジット)のメトリック値を確認できます。
PowerShellを使って過去3分間のCPUクレジットに関するメトリック値(CPU Credits Remaining)を取得します。
PowerShell実行時に取得対象の仮想マシン名を指定します。
※Get-Dateで取得した日付フォーマットを使用した際にエラーになった為にフォーマットを変更しています。
※※MetricNameの値をCPU Credits Consumedにすると1分間にどれだけクレジットがたまっているか確認出来ます。
#CPU Credits Remaining param (
[String] [Parameter(Mandatory=$true)] $VMname
)
$SubscriptionID =“サブスクリプションID"
$RGName = “リソースグループ名"
$startTime = (Get-Date).AddMinutes(-3) | Get-Date -Format 'yyyy-MM-dd THH:mm’
$endTime = Get-Date -Format “yyyy-MM-dd THH:mm"
(Get-AzMetric `
-ResourceId “/subscriptions/$SubscriptionID/resourceGroups/$RGName/providers/Microsoft.Compute/virtualMachines/$VMname" `
-TimeGrain 00:01:00 `
-AggregationType “Average" `
-StartTime $startTime `
-EndTime $endTime `
-MetricName “CPU Credits Remaining" `
-DetailedOutput).Data `
| Select-Object TimeStamp,Average
|
実行すると以下のように結果が得られます。
TimeStamp Average ——— ——- 2020/04/16 10:20:00 316.12
2020/04/16 10:21:00 316.12 2020/04/16 10:22:00 316.12 |
使用可能なCPUクレジット残容量をAzure Monitorで監視
Azure MonitorでCPU Credits Remaining(使用可能なCPUクレジット容量)を監視する事でCPUクレジットの枯渇を事前に気づけます。
CPU Credits Remaining(使用可能なCPUクレジット容量)が一定値を下回った場合にアラート通知してみます。
蓄積可能な最大クレジット(数)はサイズごとに異なります。
Bsv2 シリーズ
Basv2 シリーズ
Bpsv2 シリーズ
※Azure MonitorのスコープはVirtual Machinesを選択します。
※画面はStandard_B1msの例です。最大CPUクレジット量が288となっています。
最後に
Bシリーズの仮想マシンのCPUクレジットのメトリックや監視ついて確認してみました。
CPUクレジット残容量を適切に管理する事でBシリーズかDシリーズかどちらを利用するのか判別条件の1つに使う事も出来ます。
クレジット残容量のアラートが発生したり継続するようだと、Dシリーズを選択した方が良いと思われます。
引き続き色々試してみたいと思います。