Azure VM BシリーズのCPUクレジットのメトリック確認と監視設定

2020-04-16Azure,Monitor,PowerShell/Azure CLI,Virtual Machines

Bシリーズの仮想マシン(Azure VM)のCPUクレジット使用状況を確認するためのメトリックや、Azure Monitorでの監視設定方法について紹介します。
PowerShellを使ったCPUクレジットの確認方法についても紹介しています。

Bシリーズは、Azureで提供されている仮想マシンシリーズの1つです。
未使用のCPUリソースをクレジットとして蓄積し、負荷が高まった際にその蓄積されたCPUクレジットを使用できます。
同じリソースサイズの仮想マシンと比較すると、コストを抑えて利用できます。

一方で、サーバーのCPU使用負荷が高い状態が長時間続くと、CPUクレジットが使い果たされてしまう可能性があります。
このような状況を防ぐためには、Bシリーズ仮想マシンのメトリックを確認・監視しておくことが重要です。
Bシリーズのメトリックには以下の項目があります:

    • CPU Credits Remaining(使用可能なCPUクレジット)
    • CPU Credits Consumed(使用済みのCPUクレジット)

これらのメトリックを定期的に確認し、適切に監視設定を行うことで、CPUリソースの枯渇を未然に防ぐことができます。
今回は、CPUクレジットの概要から、メトリックの確認方法、Azure Monitorを利用した監視設定までを確認しています。

※本記事では、Azure Virtual Machines(Azure VM)を仮想マシンとして表記しています。

スポンサーリンク

BシリーズのCPUクレジットの概要やメトリックの確認方法

ベースラインを下回ったCPU使用量がクレジット残として蓄積される

Bシリーズの仮想マシンには、サイズに応じたベースラインが設定されています。
このベースラインとは、仮想マシンが恒常的に利用可能なCPU使用量の基準を指します。

Bsv2 シリーズ
Basv2 シリーズ
Bpsv2 シリーズ

仮想マシンのCPU使用率がこのベースラインを下回った場合、余ったCPU容量がクレジットとして蓄積されます。
ベースラインを超えてCPUリソースを使用した際には、蓄積されたクレジットが消費されます。
蓄積できるクレジットには上限が設定されています。

CPUバースト(Bsv2 シリーズ)
CPUバースト(Basv2 シリーズ)
CPUバースト(Bpsv2 シリーズ)

例えばStandard_B2s_v2(2コア)であれば40%、1時間あたりに利用可能なクレジット数は48となっています。
最大クレジット数1152に設定されています。

クレジットの蓄積量と消費量

※仮想マシン単位で蓄積されます。他の仮想マシンとCPUクレジットを共有して使用できません。

仮想マシンを割り当て解除すると蓄積されたCPUクレジットはクリアされる

仮想マシンを停止し、割り当て解除すると、蓄積されたクレジットはクリアされます。
一方、OSのみをシャットダウンして仮想マシンを停止した場合、そのリソースはリリースされないため、クレジットは維持され、引き続き蓄積されます。

※再起動など、短時間での起動と停止を行った場合、仮想マシンが別ホストに移動しないこともあるようです。

仮想マシンの停止と課金状況の関連については、こちらで紹介してます。

Bシリーズとスポットインスタンスの違い

どちらも仮想マシンのコスト削減に活用することができます。
Bシリーズの仮想マシンは強制的に停止されることはありませんが、スポットインスタンスは停止される場合があります。
一方、スポットインスタンスではリソースの使用量自体に制限がかかることはありません。
しかし、BシリーズではCPUクレジットを使い果たした場合、ベースラインのCPU使用量のみが利用可能となります。

CPUクレジットに関するメトリックはCPU Credits ConsumedとCPU Credits Remaining

BシリーズのCPUクレジットの利用状況を確認できるメトリクスは2つあります。

Microsoft.Compute/virtualMachines でサポートされているメトリック

    • CPU Credits Consumed
      • 消費したCPU クレジット
    • CPU Credits Remaining
      • 使用可能なCPU クレジット

仮想マシンのメトリックでCPUクレジットの利用状況を確認

CPUクレジットのメトリックを確認します。
クレジットは数値で表示されます。

CPUクレジットに関するメトリック 

CPU Credits Remainingの表示例です。
使用可能な残りのCPUクレジット容量を確認できます。

CPU Credits Remainingのメトリック表示例(Azure VMのメトリック)
CPU Credits Consumedの表示例です。
消費されたCPUクレジットの使用量を確認できます。
CPU Credits Consumedのメトリック表示例(Azure VMのメトリック)

PowerShellのGet-AzMetricでCPU Credits Remainingのメトリック値を確認

CPU Credits RemainingやCPU Credits Consumedのメトリック値確認には、Get-AzMetricを使用します。

Get-AzMetric

サンプルでは、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
——— ——-
2025/03/20 3:22:00 125.07
2025/03/20 3:23:00 125.44
2025/03/20 3:24:00 125.78

—広告—

CPU Credits Remaining(使用可能なCPUクレジット容量)をAzure Monitorで監視

CPU Credits Remainingを監視するアラートルールを作成

Azure Monitorを使用してCPU Credits Remainingを監視することで、CPUクレジットの枯渇に事前に気づくことができます。
CPU Credits Remainingが一定値を下回った場合のアラートルールを作成します。
蓄積可能な最大クレジット数は、サイズごとに異なります。

CPUバースト(Bsv2 シリーズ)
CPUバースト(Basv2 シリーズ)
CPUバースト(Bpsv2 シリーズ)

今回は、CPU Credits Remainingが100を下回った場合に、アラート検知するようにしています。

CPU Credits Remainingのアラートルールを作成
作成でアラートルールを選択します。 アラートルールの作成を開始(CPU Credits Remainingのアラートルール作成)
アラートルールのシグナル選択です。
CPU Credits Remainingを選択します。
シグナルの選択(CPU Credits Remainingのアラートルール作成)
アラートロジックです。
しきい値を100、値は次の値より小さいを選択しています。
アラートロジックの設定(CPU Credits Remainingのアラートルール作成)
アクショングループの選択です。
事前に作成しておいた、メール通知用のアクショングループを選択しています。
アクショングループの選択(CPU Credits Remainingのアラートルール作成)
アラートルールの詳細設定です。
重大度やアラートルール名を設定します。
詳細で重大度やアラートルール名を設定(CPU Credits Remainingのアラートルール作成)

確認画面です。
内容を確認し、問題がなければ作成を実行します。

作成前の確認画面(CPU Credits Remainingのアラートルール作成)

作成したアラートルールが確認できます。

作成したアラートルール(CPU Credits Remainingのアラートルール作成)

仮想マシンのCPU負荷を上げてCPU Credits Remainingの変化を確認

仮想マシンの負荷を上げて、CPU Credits RemainingやCPU Credits Consumedの変化を確認します。
CPU Credits Consumedの値が、ベースラインの40%を上回っているため、CPU Credits Remainingの値が減少しています。

※Standard_B2s_v2場合は、2コア×40%となるため、CPU Creditsベースラインは0.8となります。

仮想マシンのメトリックを確認
仮想マシンの負荷上昇と共に、CPU Credits Consumedの値が上昇していることを確認できます。 仮想マシンの負荷を上げた時のCPU Credits Consumedのメトリック
CPU Credits Consumedの上昇と共に、CPU Credits Remainingが減少していることが確認できます。 仮想マシンの負荷を上げた時のCPU Credits Remainingのメトリック

※CPU使用率と共に、CPU Credits Consumedの値も上下します。

CPU Credits Remainingのアラートメール

CPU Credits Remainingのアラートメール例です。

アラートメール例
CPU Credits Remainingのメトリック値が、アラートルールで設定した100を下回ったため、アラート通知が送信されています。 アラート通知メール(CPU Credits Remainingのアラートルール)
アラート通知メール(CPU Credits Remainingのアラートルール)
アラート通知メール(CPU Credits Remainingのアラートルール)

—広告—

最後に

Bシリーズの仮想マシンにおけるCPUクレジットのメトリックや監視方法について確認してみました。
Bシリーズの仮想マシンを利用する場合は、CPUクレジットの残容量を適切に管理することが重要になります。
クレジットの残容量に関するアラートが頻繁に発生したり、継続する場合は、CPU使用率が高いと思われます。
その場合は、Bシリーズではなく、Dシリーズを選択したほうが良いと考えられます。

引き続き、いろいろ試してみたいと思います。

スポンサーリンク