オンプレミスと違い、Azureでは起動したVMや転送したデータ量が秒単位で課金されます。「どのリソースが、いくら使っているか」をリアルタイムに把握しないと、気づかぬうちにコストが膨らみます。特に学習目的でVMを複数台建てたままにした場合、月数万円になることも珍しくありません。
この記事では、Azure Cost ManagementとBudget(予算アラート)を使って、クラウド料金の「想定外」を防ぐ実践的な方法を解説します。Azureポータルとaz CLIの両方をカバーし、RHEL 9.4実機でのコマンド出力を交えて手順を示します。
この記事のポイント
・azure コスト管理はCost Management画面でサービス・リソースグループ別に可視化できる
・az costmanagement queryコマンドでCLIからコスト照会が可能
・予算(Budget)設定で月次コストが閾値を超えるとメールアラートが届く
・タグ(Tag)付けでリソースのコスト配分をプロジェクト別に集計できる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
Azure Cost Managementとは何か——コスト可視化の仕組み
Azure Cost Managementは、Azureサブスクリプションのコストと使用量を分析・管理するための無料サービスです。AWSのCost Explorerに相当する機能で、追加費用なしで利用できます。主な機能は次の4つです。
・コスト分析:日次・月次・累計でコストを可視化します。リソースグループ・サービス・リージョン・タグ別に集計できます
・予算アラート(Budget):設定した金額を超えそうになるとメールで通知します。コスト超過を事前に検知できます
・エクスポート:コストデータをCSVとしてストレージアカウントへ定期出力できます。経理・BIツール連携に使います
・Advisor連携:Azure Advisorが未使用のVMやリソースを検出し、コスト削減の推奨事項を提示します
Azureポータルの「コスト管理 + 請求」メニューからアクセスします。または、ポータル上部の検索窓に「コスト管理」と入力するとすぐに見つかります。
Cost Managementでコストを分析する
1. コスト分析画面の見方
Azureポータルにログインし、左メニューの「コスト管理 + 請求」を開きます。「コスト分析」タブをクリックすると、今月の累計コストがグラフで表示されます。画面上部の「スコープ」で分析対象を切り替えられます。
・サブスクリプション全体:全リソースの合計コスト
・リソースグループ:特定リソースグループのコスト(例: rg-linux-practice)
「グループ化」機能を使うと、コストの内訳をサービス別・リソースグループ別・タグ別に分解できます。「どのサービスが一番高いか」を特定するには「サービス名」でグループ化するのが最速です。
2. Azure CLIでコストを確認する
GUIだけでなく、az CLIからもコストを照会できます。自動化やシェルスクリプトへの組み込みに便利です。この手順は以下の環境で動作確認しています。
・RHEL 9.4(Azure CLI 2.61.0)
・サブスクリプション: Visual Studio Enterprise(japaneast)
まずサブスクリプションIDを確認します。
# サブスクリプションIDを確認 $ az account show --query "{name:name, id:id}" -o table Name Id ------------------------------- ------------------------------------ Visual Studio Enterprise xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
# 今月のコストをリソースグループ別に照会 $ az costmanagement query \ --type ActualCost \ --timeframe MonthToDate \ --scope "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \ --dataset-aggregation '{"totalCost":{"name":"PreTaxCost","function":"Sum"}}' \ --dataset-grouping '[{"type":"Dimension","name":"ResourceGroupName"}]' \ --query "properties.rows" \ -o table Column1 Column2 Column3 ---------- ------------------------ ------------------------- 3218.45 rg-linux-practice JPY 852.10 rg-monitoring JPY 120.00 rg-storage-backup JPY
サービス種別(VMかStorageかNetworkか)で内訳を出すには、グループ化を変更します。
# サービス種別でグループ化してコストを確認 $ az costmanagement query \ --type ActualCost \ --timeframe MonthToDate \ --scope "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \ --dataset-aggregation '{"totalCost":{"name":"PreTaxCost","function":"Sum"}}' \ --dataset-grouping '[{"type":"Dimension","name":"ServiceName"}]' \ --query "properties.rows" \ -o table Column1 Column2 Column3 ---------- ----------------------------------- ------------------------- 2540.30 Virtual Machines JPY 920.15 Storage JPY 480.00 Bandwidth JPY 250.10 Azure App Service JPY
3. az consumption usage listで日次コストを確認する
特定期間の使用量を日単位で確認したい場合は `az consumption usage list` コマンドを使います。# 直近7日間の使用コストを確認 $ az consumption usage list \ --start-date 2026-07-12 \ --end-date 2026-07-18 \ --query "[].{Date:usageStart, Resource:instanceName, Cost:pretaxCost}" \ -o table | head -15 Date Resource Cost -------------------- --------------------------- ------ 2026-07-12T00:00:00Z linuxvm-rhel94 182.40 2026-07-13T00:00:00Z linuxvm-rhel94 182.40 2026-07-14T00:00:00Z linuxvm-rhel94 182.40 2026-07-15T00:00:00Z linuxvm-rhel94 182.40 2026-07-16T00:00:00Z linuxvm-rhel94 182.40 2026-07-17T00:00:00Z linuxvm-rhel94 182.40 2026-07-18T00:00:00Z linuxvm-rhel94 182.40
予算アラートを設定してコスト超過を防ぐ
予算アラート(Budget)は、azure コスト管理で最も重要な機能のひとつです。月次コストが設定した金額の閾値(50%・80%・100%など)を超えると、指定したメールアドレスへ通知が届きます。1. Azureポータルで予算を作成する
「コスト管理 + 請求」→「予算」→「+ 追加」の順に進みます。設定項目は次の通りです。
・スコープ:予算を適用する範囲(サブスクリプション全体 or 特定リソースグループ)
・名前:予算の識別名(例: budget-learning-monthly)
・リセット期間:月次(Monthly)を選択します
・開始日:当月1日から設定するのが基本
・金額:月次の上限金額(円)を入力します(例: 5000)
「次へ」をクリックしてアラート条件を設定します。閾値を複数設定できるので「80%でメール通知 → 100%でメール通知」の2段構えを推奨します。
2. Azure CLIで予算を作成する
ポータル操作が不要な場合、az CLIで予算を作成できます。Infrastructure as Codeとして管理する際に便利です。# 月次予算5,000円 + 80%・100%アラートを作成 $ az consumption budget create \ --budget-name "budget-learning-monthly" \ --amount 5000 \ --category Cost \ --time-grain Monthly \ --start-date 2026-07-01 \ --end-date 2026-12-31 \ --resource-group rg-linux-practice \ --notifications '[ { "enabled": true, "operator": "GreaterThan", "threshold": 80, "contactEmails": ["tomohiro@example.com"], "thresholdType": "Actual" }, { "enabled": true, "operator": "GreaterThan", "threshold": 100, "contactEmails": ["tomohiro@example.com"], "thresholdType": "Actual" } ]' { "amount": 5000.0, "category": "Cost", "currentSpend": { "amount": 4190.55, "unit": "JPY" }, "name": "budget-learning-monthly", "timeGrain": "Monthly", "timePeriod": { "endDate": "2026-12-31T00:00:00+00:00", "startDate": "2026-07-01T00:00:00+00:00" } }
# 作成した予算の一覧を確認 $ az consumption budget list \ --resource-group rg-linux-practice \ --query "[].{Name:name, Amount:amount, CurrentSpend:currentSpend.amount}" \ -o table Name Amount CurrentSpend ------------------------ -------- -------------- budget-learning-monthly 5000.0 4190.55
3. 予算アラートが届く仕組みと確認方法
アラートは設定した閾値を超えた翌日に届きます(リアルタイムではない点に注意)。現在のアラート発火状況は次のコマンドで確認できます。# アラート履歴を確認(Cost Managementアラート) $ az costmanagement alert list \ --scope "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/rg-linux-practice" \ --query "[].{Name:name, Type:properties.definition.type, Threshold:properties.definition.details.threshold}" \ -o table Name Type Threshold --------------------- -------- ----------- alert-80pct-triggered Budget 80
Azure対応セミナーの詳細を見る >>
コスト削減の実践Tips
1. 不要なVMを特定して停止・削除する
「動いているVMの一覧」を確認し、不要なものがないかチェックします。VMを「停止(割り当て解除)」すると、コンピューティング料金はかかりません(ディスク料金は残ります)。# 実行中のVM一覧を確認 $ az vm list \ --resource-group rg-linux-practice \ --show-details \ --query "[?powerState=='VM running'].{Name:name, Size:hardwareProfile.vmSize, State:powerState}" \ -o table Name Size State ---------------- ------------- ---------- linuxvm-rhel94 Standard_B2s VM running test-vm-dev Standard_B4ms VM running # 使っていないVMを停止(割り当て解除) $ az vm deallocate \ --resource-group rg-linux-practice \ --name test-vm-dev
2. タグ(Tag)でコストを部署・プロジェクト別に分類する
複数のプロジェクトや担当者がAzureを共用している場合、タグによるコスト配分管理が効果的です。リソース作成時に `Project: web-app` のようなタグを付けておくと、Cost Managementでプロジェクト別に集計できます。# VMにタグを付ける $ az vm update \ --resource-group rg-linux-practice \ --name linuxvm-rhel94 \ --set tags.Project=linux-training tags.Owner=tomohiro # タグが設定されているか確認 $ az vm show \ --resource-group rg-linux-practice \ --name linuxvm-rhel94 \ --query tags \ -o json { "Owner": "tomohiro", "Project": "linux-training" }
3. Azure Advisorのコスト推奨事項を確認する
Azure Advisorは未使用リソースやコスト削減の推奨事項を自動で提案します。# Azure Advisorのコスト推奨事項を確認 $ az advisor recommendation list \ --category Cost \ --query "[].{Problem:shortDescription.problem, Impact:impact, Savings:extendedProperties.annualSavingsAmount}" \ -o table Problem Impact Savings ----------------------------------------------- ------- ------- Shutdown or resize underutilized VMs High 18200 Use reserved instances to save on VMs Medium 12000 Delete unused managed disks Medium 3600
トラブルシュート——予算アラートが来ない・コストが急増した時の対処
「予算アラートが来ない」場合の確認手順
予算を設定したのにメールが届かない場合、次の順序で確認します。・メールアドレスの確認:az consumption budget show コマンドで `notifications.contactEmails` が正しいか確認する
・閾値の確認:現在の使用率が閾値に到達しているかを `currentSpend / amount` で計算する
・スパムフィルター:Microsoft Azure Billing (billing@microsoft.com) からのメールがスパムに入っていないか確認する
・アラートのタイムラグ:閾値超過から通知まで最大24時間かかる場合があります
# 予算の詳細と現在の使用状況を確認 $ az consumption budget show \ --budget-name "budget-learning-monthly" \ --resource-group rg-linux-practice \ --query "{Amount:amount, CurrentSpend:currentSpend.amount, Notifications:notifications}" \ -o json { "Amount": 5000.0, "CurrentSpend": 4190.55, "Notifications": { "Actual_GreaterThan_80_Percent": { "contactEmails": ["tomohiro@example.com"], "enabled": true, "operator": "GreaterThan", "threshold": 80.0 } } }
「コストが急増した」場合の原因特定
コストが急増した場合は、サービス別・日次でコストを絞り込んで原因を特定します。・Bandwidth(帯域)の急増:大量のデータ転送が発生した可能性。Storage AccountやVM間のアウトバウンド通信を確認する
・Virtual Machinesの急増:新規VMが増えていないか確認。自動スケールが意図せず動作した場合もある
・Azure Storageの急増:大容量データが新規書き込みされていないか確認
Azureポータルのコスト分析で「前の期間と比較」機能を使うと、先月比でどのサービスのコストが増えたかを一目で確認できます。
本記事のまとめ
Azure Cost Managementと予算アラートの主要な操作をまとめます。| やりたいこと | コマンド / 操作 |
|---|---|
| 今月のコストをリソースグループ別に確認 | az costmanagement query --type ActualCost --timeframe MonthToDate --dataset-grouping '[{"type":"Dimension","name":"ResourceGroupName"}]' |
| 日次コストをリソース別に確認 | az consumption usage list --start-date YYYY-MM-DD --end-date YYYY-MM-DD |
| 月次予算とアラートを作成 | az consumption budget create --budget-name NAME --amount AMOUNT --time-grain Monthly |
| 予算一覧と現在の使用額を確認 | az consumption budget list --resource-group RG |
| Advisorのコスト推奨事項を確認 | az advisor recommendation list --category Cost |
| VMにタグを付けてコスト配分管理 | az vm update --set tags.Project=NAME tags.Owner=NAME |
| 不要VMを停止(コンピューティング料金をゼロに) | az vm deallocate --resource-group RG --name VM_NAME |
次に読む記事
・Azure CLIのインストールとログイン設定|az loginとサービスプリンシパルで自動化に備える方法
・Azure入門|仮想ネットワークとLinux仮想マシンを構築する基礎ハンズオン
Azure対応セミナーの詳細を見る >>
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:AzureのRBACとAzure Policyで権限を設計する方法|ロール割り当てとガバナンスの実践
- 前のページへ:Azure Container Instances入門|VMを作らずにアプリを数分で動かすACIデプロイ手順
- この記事の属するカテゴリ:Azureへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます