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

Azure,Monitor,Virtual Machine

仮想マシン(Azure VM)のシリーズの1つにBシリーズがあります。
普段使わないCPUのクレジット(使用量)を貯めておいて、負荷が高くなった時にその貯めたCPUクレジットを使うシリーズです。
Dシリーズと比較してお安い使用料金で使える為、普段からCPUを使わないようなサーバに向いているシリーズになります。

Bシリーズの詳細についてはマイクロソフト公式サイトも併せて確認下さい。

Virtual Machineシリーズ(公式サイト)
Bシリーズ詳細(公式サイト)

一方でBシリーズの負荷が高い状態が継続するとCPUのクレジットが使い果たされている為性能が発揮されないという可能性もあります。

今回はBシリーズのCPUクレジットのメトリック確認、Azure Monitorを使ったアラート設定までやってみました。

※2023年1月に記事を修正更新しています。

スポンサーリンク

CPUクレジットのメトリック(CPU Credits Remaining、CPU Credits Consumed)を確認

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

BシリーズのVMサイズ別にベースライン パフォーマンス設定されています。

負荷の急増に対応できる B シリーズ仮想マシンのサイズ

例えばStandard_B2msであれば60%に設定されています。
B2msの場合は2コアなので、1コアあたり30%のCPU使用率がベースラインになります。

設定されたベースラインを下回る場合にCPUクレジットが蓄積されます。
ベースラインを上回るCPU パフォーマンスが必要となった場合に、vCPU のパフォーマンスの 100%(最大)まで利用する事が出来ます。

※仮想マシン(Azure VM)単位で蓄積されます。他の仮想マシン(Azure VM) のCPUクレジットを共有して使用する事は出来ません。

確認出来るメトリックは2種類

BシリーズのCPUクレジットについて確認出来るメトリックは2種類あります。

    • CPU Credits Consumed
      • 使用済みの CPU クレジット(ベースラインを上回って消費されたCPU使用率(クレジット))
    • CPU Credits Remaining
      • 未使用の CPU クレジット(蓄積されているCPU使用率(クレジット))

仮想マシン(Azure VM)のメトリックで確認出来る

CPUクレジット仮想マシンのメトリックで確認出来ます。

CPU Creditsメトリック 

CPU Credits Remainingの表示例です。
CPUクレジット残容量が確認出来ます。
CPU Credits Consumedが発生したタイミングでCPU Credits Remainingが減少しているのが確認出来ます。

CPU Credits Consumedの表示例です。
ベースラインを上回ったCPU使用率が確認出来ます。

※画面サンプルはStandard B1msの仮想マシン(Azure VM)のものです。(2023年1月に画面サンプルを更新しています。)

CPU Credits RemainingをPowerShellで確認

Get-AzMetricを使ってCPU Credits Remainingを確認出来ます。
今回は直近の値を確認しています。

サブスクリプションIDやリソースグループ名は環境に合わせて設定します。
PowerShell実行時に取得対象の仮想マシン名を指定します。

Get-Dateで取得した日付フォーマットそのままだとエラーになる為フォーマットを変更しています。
StartTime等を変更することにより、過去の値も取得可能です。

#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"
 
# 注意-ResourceIdの行は折り返していますが、実際には1行です。GitHubの方を参考にして下さい
# https://github.com/Tama-negi/Li-akb-branch-office/tree/PowerShell_Azure/Azure_PowerShell

(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
 

※MetricNameの値をCPU Credits Consumedにすると1分間にどれだけクレジットがたまっているか確認出来ます。

Azure MonitorでCPUクレジット残(CPU Credits Remaining)を監視

Azure Monitorを使ってCPUクレジットの監視が出来ます。 
仮想マシン(Azure VM)のCPU Credits Remainingのメトリック監視を使う事で、CPUクレジット残容量が減った時にアラート通知する事が出来ます。
Azure MonitorのスコープでVirtual Machinesを選択します。

Azure Monitorのメトリック監視設定
CPU Credits Consumed、CPU Credits Remaining共にシグナルとして指定可能です。
CPU Credits Remainingを選択します。

条件でしきい値設定します。
CPU Credits Remainingが半分以下になった際にアラートを発生させます。
144以下になった場合にアラート発生させるようにします。

※B1ms(最大CPUクレジット量288)の場合の例です。

※2023年1月に画面を更新しています。

最後に

Bシリーズの仮想マシン(Azure VM)のCPUクレジットについて整理してみました。
Azure Monitorを使ってCPUクレジット残容量の監視設定も出来る事が確認出来ました。
クレジット残容量を適切に管理する事でBシリーズかDシリーズかどちらを利用するのか判別条件の1つに使う事も出来ます。
クレジット残容量のアラートが発生したり継続するようだと、Dシリーズを選択した方が良いと思われます。