Azure およびオンプレミス環境からのテレメトリ データを収集、分析、処理するために使用する Azure サービス。
Hello 西谷貴彦 / NISHITANI,TAKAHIKO
ご確認ありがとうございます。ご認識のとおり、NULL(エクスポート時の「--」)は「値が 0」ではなく「その時間枠に対して想定されるメトリック データが届かなかった」状態を示します。以下、ご質問ごとに回答いたします。
質問1:Percentage CPU が NULL になる条件
Azure Monitor では、システムがリソースからのメトリック データを期待しているにもかかわらず受信できなかった場合に NULL が記録されます。NULL は有効な測定値としてカウントされないため、平均(Avg)の計算からは除外されます。
ポイントは粒度の考え方です。
Percentage CPU の格納粒度(Time Grain)は PT1M(1 分) です。基盤側ではさらに短い間隔(Azure VM の CPU 使用率は 15 秒間隔)でサンプリングされ、1 分単位に事前集計されます。
ポータルで 5 分粒度を選択した場合、その 5 分枠は 配下の 1 分データポイントを再集計した結果 です。したがって「5 分枠が NULL」になるのは、その枠に含まれる 1 分ポイントが 1 つも存在しなかった場合のみです。1 つでも値があれば、その値だけで平均が計算され、NULL にはなりません。
代表的な発生条件は次のとおりです。
条件 説明VM が停止(割り当て解除)中 停止中の VM に対して Azure はメトリックを収集しません
直近時刻の取り込み遅延 取り込み・処理には数分程度の遅延があり得るため、直近数分は欠損・部分値に見えることがあります
ホスト側の一時的な要因でその 1 分のサンプルが送信されなかった プラットフォーム側の収集経路上でデータポイントが欠落した場合、その時間枠は NULL として記録されます
なお、メトリックス エクスプローラー上でこの欠損は破線として表現され、Excel へのエクスポートでは「--」として出力されます。これは仕様であり、欠損ポイントを識別しやすくするための表示です。
質問2:VM 稼働中・前後は取得済み・1 枠のみ NULL というケースは発生し得るか
はい、発生し得ます。
Percentage CPU はホスト OS(VM をホストしている Hyper-V セッション)側で収集されるメトリックであり、ゲスト OS の状態とは独立しています。そのため、ゲスト OS が正常稼働していても、ホスト側からの当該 1 分サンプルが Azure Monitor のメトリック ストアに届かなければ、その枠は NULL となります。
また、以下の点もご認識のとおりで問題ありません。
アクティビティ ログは VM に対して実行された操作(起動・停止・構成変更・削除など)を記録するものです。メトリック収集経路上の単発のデータポイント欠落は「VM に対する操作」ではないため、アクティビティ ログには記録されません。
Resource Health は VM の可用性状態を示すものであり、可用性に影響しない単発のメトリック欠損は異常として表示されません。
つまり「VM 稼働中/Activity Log・Resource Health ともに異常なし/単発の 5 分枠のみ NULL」という組み合わせは、Azure Monitor の仕様上ありえる挙動です。単発かつ前後の値が正常に記録されている場合、VM 自体の障害ではなくメトリック データポイントの欠損としてご判断いただいて問題ありません。
質問3:原因を特定したい場合の確認方法
Percentage CPU はホスト メトリックであるため、エージェント側(AMA / Heartbeat)の確認は原因特定には寄与しません。以下の順序でのご確認を推奨します。
粒度 1 分で再確認する(最優先) ポータルの Metrics または REST API / Azure CLI で、該当時刻の前後を PT1M 粒度で取得してください。5 分枠全体が欠損しているのか、含まれる 1 分ポイントの一部のみが欠損しているのかを切り分けられます。
az monitor metrics list \
--resource <VM の リソース ID> \
--metric "Percentage CPU" \
--aggregation Average \
--interval PT1M \
--start-time 2026-07-31T18:30:00Z \
--end-time 2026-07-31T19:10:00Z
※ 時刻は UTC でご指定ください。メトリック データの保持期間は 93 日です。
取り込み遅延の影響を除外する 取得対象を現在時刻から十分に離れた時間帯(過去分)に限定して再取得し、後から値が補完されていないかをご確認ください。直近時間帯の欠損は遅延で説明できるケースが多いです。
アクティビティ ログ:該当時刻前後の VM に対する操作(Deallocate / Redeploy / Restart 等)の有無を確認します。
Resource Health:該当時刻の可用性イベントの有無を確認します。
(補足的な裏取り)ゲスト側データ:Azure Monitor エージェントを導入済みであれば、Log Analytics の Perf(% Processor Time)を同時刻で確認し、ゲスト OS 側では処理が継続していたことを確認できます。ただしこれは 原因の特定ではなく、VM 自体は正常稼働していたことの傍証としての位置付けです。
上記 1〜4 で説明が付かず、過去の時間帯でも恒常的に欠損が再現する場合は、対象のリソース ID・欠損した時刻(UTC)・メトリック名・集計方法・粒度を添えて Azure サポートへお問い合わせいただければ、バックエンド側のメトリック格納状況を確認いたします。
「Heartbeat は正常なのに Percentage CPU のみ NULL」は設計上あり得るか
はい、設計上あり得ます。
両者は収集元・収集経路・保存先がまったく異なるためです。
Percentage CPU Heartbeat収集元 VM をホストするホスト OS(Hyper-V セッション) ゲスト OS 上の Azure Monitor エージェント
```設定 既定で有効(追加設定不要) エージェント導入と DCR 構成が必要
保存先 Azure Monitor メトリック ストア Log Analytics ワークスペース
ホスト メトリックは追加設定なしで既定収集される一方、ゲスト側のデータはエージェント経由で収集されます。経路が独立しているため、片方が正常でもう一方に欠損が生じることは十分にあり得ます。逆に言えば、Heartbeat が正常であることは Percentage CPU の欠損の原因を否定する材料にはなりません。
参考ドキュメント
Azure Monitor でのメトリックの集計と表示 – NULL 値と 0 値
メトリック グラフのトラブルシューティング – 破線が表示される/データが表示されない
Azure Virtual Machines の監視データ リファレンス(ホスト OS / ゲスト OS メトリック)
Azure Virtual Machines の監視(ホストとゲストの監視データ)
ご不明点がございましたらお知らせください。