自動化を使用したコストの管理

Cost Management の自動化を使用して、コスト データの取得と管理を行う一連のカスタム ソリューションをビルドすることができます。 この記事では、Cost Management の自動化の一般的なシナリオと状況に基づいて使用できるオプションについて説明します。 API を使用して開発する場合に、開発プロセスの時間を短縮するために役立つ一般的な API 要求の例を紹介します。

オフライン分析のためのコスト データの取得を自動化する

ご自分の Azure コスト データをダウンロードし、それを他のデータ セットとマージすることが必要になる場合があります。 また、コスト データを自身のシステムに統合することが必要になる場合もあります。 関連するデータ量に応じて使用できるさまざまなオプションがあります。 どのような場合でも、API とツールを使用するには、適切なスコープでの Cost Management へのアクセス許可が必要です。 詳細については、データへのアクセスの割り当てに関するページを参照してください。

大規模なデータ セットの処理に関する推奨事項

組織において、多くのリソースまたはサブスクリプションで Azure の使用率が高い場合、使用状況の詳細データが大量に生成されます。 多くの場合、Excel では、このような大きなファイルを読み込むことはできません。 このような場合、次のオプションをお勧めします。

Power BI

Power BI は、大量のデータの取り込みと処理に使用されます。 マイクロソフトエンタープライズ契約のお客様の場合、Power BI テンプレート アプリを使用して、ご使用の課金アカウントのコストを分析することができます。 レポートには、お客様が使用される主要なビューが含まれます。 詳細については、Power BI テンプレート アプリを使用して Azure のコストを分析する方法に関するページを参照してください。

Power BI データ コネクタ

データを毎日分析する必要がある場合、Power BI データ コネクタを使用して詳細な分析のためのデータを取得することをお勧めします。 作成するレポートは、より多くのコストが発生すると、コネクタにより最新の状態に維持されます。

Cost Management のエクスポート

データを毎日分析する必要がない場合もあります。 その場合は、Cost Management のエクスポート機能を使用して、Azure Storage アカウントへのデータのエクスポートをスケジュールすることを検討してください。 その後、必要に応じてデータを Power BI に読み込むか、ファイルが十分に小さい場合は Excel でデータを分析できます。 エクスポートは Azure portal でご使用いただけます。また、Exports API を使用してエクスポートを構成することもできます。

Usage Details API

コスト データ セットが小さい場合、Usage Details API の使用を検討してください。 推奨されているベスト プラクティスを次に示します。

  • 最新のコスト データを取得する場合は、多くても 1 日に 1 回クエリを実行することをお勧めします。 レポートは 4 時間ごとに更新されます。 より頻繁に呼び出した場合、同じデータを受信します。
  • 過去の請求書のコスト データをダウンロードした後は、明示的に通知されない限り料金は変わりません。 同じデータを繰り返し呼び出すことを防ぐために、クエリ可能なストアにコスト データをキャッシュすることをお勧めします。
  • 呼び出しを小さな日付範囲のチャンクにして、ダウンロード可能なファイルをより管理しやすくします。 たとえば、月単位で大きな Azure 利用状況ファイルを扱う場合は、日単位または週単位でチャンクにすることをお勧めします。
  • 大量の利用状況データ (課金アカウントなど) を含むスコープがある場合は、子スコープに対して複数の呼び出しを行って、ダウンロードできる管理可能なファイルをより多く取得する方法を検討してください。
  • データセットが月単位で 2 GB を超える場合は、よりスケーラブルなソリューションとしてエクスポートの使用を検討してください。

Usage Details API を使用して取得を自動化する

Usage Details API を使用すると、Azure の請求書に対応する未加工の集計されていないコスト データを簡単に取得できます。 この API は、組織がプログラムによるデータの取得ソリューションを必要とする場合に役立ちます。 小さいコスト データ セットを分析する場合は、この API の使用をご検討ください。 ただし、データ セットが大きい場合は、前述の他のソリューションを使用する必要があります。 Usage Details の詳細データは、1 日あたりの測定ごとに提供されます。 これは、毎月の請求額の計算に使用されます。 この API の一般提供 (GA) バージョンは、2019-10-01 です。 API を使用して、予約および Azure Marketplace での購入のためにプレビュー バージョンにアクセスするには、2019-04-01-preview を使用してください。

エクスポートされたデータを大量かつ定期的に取得する場合には、「エクスポートを使用してサイズの大きなコスト データセットを繰り返し取得する」を参照してください。

Usage Details API に関する推奨事項

要求のスケジュール

Usage Details API に対する要求は、1 日あたり "1 回のみ" 行うことをお勧めします。 コスト データの更新の頻度および丸め処理の方法の詳細については、「Cost Management のデータを理解する」を参照してください。

フィルター処理を行わずに最上位レベルのスコープを対象とする

この API を使用して、使用可能な最も高いレベルのスコープで、必要なすべてのデータを取得します。 必要なすべてのデータが取り込まれるまで待ってから、フィルター処理、グループ化、または集計分析を行います。 この API は、特に大量の集計されていない未加工のコスト データを提供するために最適化されています。 Cost Management の使用可能なスコープの詳細については、「スコープを理解して使用する」を参照してください。 スコープの必要なデータをダウンロードした後、Excel で、フィルターやピボット テーブルを使用してデータを詳細に分析します。

価格に関する注意事項

価格シートまたは請求書で使用量と料金を調整したい場合は、「コストの詳細での価格の動作」を参照してください。

1 つのリソースに 1 日のレコードが複数存在する場合がある

Azure リソース プロバイダーは、使用量と料金を課金システムに出力し、使用量レコードの Additional Info フィールドに反映します。 まれに、リソース プロバイダーが特定の日の使用量を出力し、使用量レコードの Additional Info フィールドに、複数の異なるデータセンターでレコードを記録する場合があります。 その場合、1 日の使用量ファイルに、メーターまたはリソースのレコードが複数存在する結果となります。 そのような状況では、超過料金は発生しません。 複数のレコードは、その日にリソースのメーターの完全なコストを表します。

Usage Details API に対する要求の例

次の要求例は、Microsoft のお客様が、直面する可能性のある一般的なシナリオに対処するために使用されています。

特定の日付範囲内のスコープの使用状況の詳細を取得する

要求によって返されるデータは、使用状況が課金システムによって受信された日付に対応します。 これには、複数の請求書のコストが含まれている場合があります。 使用する呼び出しは、お使いのサブスクリプションの種類によって異なります。

マイクロソフト エンタープライズ契約 (EA) または従量課金制のサブスクリプションをお持ちの従来のお客様の場合は、次の呼び出しを使用します。

GET https://management.azure.com/{scope}/providers/Microsoft.Consumption/usageDetails?$filter=properties%2FusageStart%20ge%20'2020-02-01'%20and%20properties%2FusageEnd%20le%20'2020-02-29'&$top=1000&api-version=2019-10-01

Microsoft 顧客契約をご利用の新しいお客様の場合は、次の呼び出しを使用します。

GET https://management.azure.com/{scope}/providers/Microsoft.Consumption/usageDetails?startDate=2020-08-01&endDate=2020-08-05&$top=1000&api-version=2019-10-01

Note

$filter パラメーターは、Microsoft 顧客契約ではサポートされていません。

償却コストの詳細を取得する

未払いの購入を表示するために実際のコストが必要な場合、次の要求の metricActualCost に変更します。 償却コストと実際のコストを使用する場合、2019-04-01-preview バージョンを使用する必要があります。 この API の現在のバージョンは、2019-10-01 と同様に動作します。ただし、新しい型およびメトリック属性が追加され、プロパティ名が変更されています。 Microsoft 顧客契約をお持ちの場合は、次の例の startDateendDate がフィルターになります。

GET https://management.azure.com/{scope}/providers/Microsoft.Consumption/usageDetails?metric=AmortizedCost&$filter=properties/usageStart+ge+'2019-04-01'+AND+properties/usageEnd+le+'2019-04-30'&api-version=2019-04-01-preview

予算を使用してアラートとアクションを自動化する

クラウドへの投資の価値を最大化するための重要な要素が 2 つあります。 1 つは予算の自動作成です。 もう 1 つは、予算アラートに対応するコストベースのオーケストレーションの構成です。 予算作成を自動化するには、さまざまな方法があります。 構成済みのアラートのしきい値を超えると、さまざまなアラート応答が発生します。

以下のセクションでは、使用可能なオプションについて説明し、予算の自動化を開始するためのサンプル API 要求を示します。

予算しきい値に対してコストが評価されるしくみ

コストは、1 日に 1 回、予算しきい値に対して評価されます。 新しい予算を作成したとき、または予算のリセット日には、評価が行われていない可能性があるため、しきい値と比較したコストはゼロまたは null になります。

コストがしきい値を超えたことが Azure によって検出されると、検出後 1 時間以内に通知がトリガーされます。

現在のコストを表示する

現在のコストを表示するには、Query API を使用して GET 呼び出しを行う必要があります。

Budgets API への GET 呼び出しでは、コスト分析で示される現在のコストは返されません。 代わりに、この呼び出しでは最後に評価されたコストが返されます。

予算の作成を自動化する

Budgets API を使用して、予算の作成を自動化できます。 予算テンプレートを使用して予算を作成することもできます。 テンプレートを使用すると、コスト管理を適切に構成し、確実に適用して、Azure デプロイを簡単に標準化できます。

予算のアラート メールでサポートされているロケール

予算については、コストが設定されたしきい値を超えた場合にアラートを受け取ります。 1 つの予算につき最大 5 つの電子メール受信者を設定できます。 受信者は、予算しきい値を超過してから 24 時間以内に電子メール アラートを受信します。 ただし、受信者は別の言語で電子メールを受信する必要がある場合があります。 次の言語カルチャ コードを、Budgets API で使用できます。 次の例のような locale パラメーターを使用して、カルチャ コードを設定します。

{
  "eTag": "\"1d681a8fc67f77a\"",
  "properties": {
    "timePeriod": {
      "startDate": "2020-07-24T00:00:00Z",
      "endDate": "2022-07-23T00:00:00Z"
    },
    "timeGrain": "BillingMonth",
    "amount": 1,
    "currentSpend": {
      "amount": 0,
      "unit": "USD"
    },
    "category": "Cost",
    "notifications": {
      "actual_GreaterThan_10_Percent": {
        "enabled": true,
        "operator": "GreaterThan",
        "threshold": 20,
        "locale": "en-us",
        "contactEmails": [
          "user@contoso.com"
        ],
        "contactRoles": [],
        "contactGroups": [],
        "thresholdType": "Actual"
      }
    }
  }
}

カルチャ コードによってサポートされる言語:

カルチャ コード 言語
ja-JP 英語 (米国)
ja-jp 日本語 (日本)
zh-cn 中国語 (簡体字、中国)
de-de ドイツ語 (ドイツ)
es-es スペイン語 (スペイン、インターナショナル)
fr-fr フランス語 (フランス)
it-it イタリア語 (イタリア)
ko-kr 韓国語 (韓国)
pt-br ポルトガル語 (ブラジル)
ru-ru ロシア語 (ロシア)
zh-tw 中国語 (繁体字、台湾)
cs-cz チェコ語 (チェコ共和国)
pl-pl ポーランド語 (ポーランド)
tr-tr トルコ語 (Türkiye)
da-dk デンマーク語 (デンマーク)
en-gb 英語 (イギリス)
hu-hu ハンガリー語 (ハンガリー)
nb-no ノルウェー語ブークモール (ノルウェー)
nl-nl オランダ語 (オランダ)
pt-pt ポルトガル語 (ポルトガル)
sv-se スウェーデン語 (スウェーデン)

Budgets API の一般的な構成

Azure 環境で予算を構成する方法は多数あります。 まず、実際のシナリオを検討してから、それを実現する構成オプションを特定します。 次のオプションを確認します。

  • 時間グレイン - 予算でコストの計上と評価に使用する定期的な期間を表します。 最も一般的なオプションは、Monthly、Quarterly、Annual です。
  • 期間 - 予算の有効期間を表します。 予算は、有効な間だけアクティブに監視され、アラートが通知されます。
  • 通知
    • 連絡先のメール - 予算でコストが計上され、予算が定義済みのしきい値を超えると、このメール アドレスにアラートが送信されます。
    • 連絡先のロール - このオプションでは、特定のスコープで一致する Azure ロールが割り当てられているすべてのユーザーに、メール アラートが送信されます。 たとえば、サブスクリプション所有者は、サブスクリプション スコープで作成された予算のアラートを受け取ることができます。
    • 連絡先グループ - アラートのしきい値を超えると、構成済みのアクション グループが予算によって呼び出されます。
  • コスト ディメンション フィルター - コスト分析または Query API で実行できるのと同じフィルター処理を予算に対しても実行できます。 このフィルターを使用して、予算で監視しているコストの範囲を縮小します。

自分のニーズに合った予算作成オプションを特定したら、API を使用して予算を作成します。 次の例は、一般的な予算構成を開始する際に役立ちます。

複数のリソースとタグにフィルター処理された予算を作成する

要求 URL: PUT https://management.azure.com/subscriptions/{SubscriptionId} /providers/Microsoft.Consumption/budgets/{BudgetName}/?api-version=2019-10-01

{
  "eTag": "\"1d34d016a593709\"",
  "properties": {
    "category": "Cost",
    "amount": 100.65,
    "timeGrain": "Monthly",
    "timePeriod": {
      "startDate": "2017-10-01T00:00:00Z",
      "endDate": "2018-10-31T00:00:00Z"
    },
    "filter": {
      "and": [
        {
          "dimensions": {
            "name": "ResourceId",
            "operator": "In",
            "values": [
              "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{meterName}",
              "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{meterName}"
            ]
          }
        },
        {
          "tags": {
            "name": "category",
            "operator": "In",
            "values": [
              "Dev",
              "Prod"
            ]
          }
        },
        {
          "tags": {
            "name": "department",
            "operator": "In",
            "values": [
              "engineering",
              "sales"
            ]
          }
        }
      ]
    },
    "notifications": {
      "Actual_GreaterThan_80_Percent": {
        "enabled": true,
        "operator": "GreaterThan",
        "threshold": 80,
        "contactEmails": [
          "user1@contoso.com",
          "user2@contoso.com"
        ],
        "contactRoles": [
          "Contributor",
          "Reader"
        ],
        "contactGroups": [
          "/subscriptions/{subscriptionID}/resourceGroups/{resourceGroupName}/providers/microsoft.insights/actionGroups/{actionGroupName}
        ],
        "thresholdType": "Actual"
      }
    }
  }
}

予算アラートに対応するコストベースのオーケストレーションを構成する

Azure アクション グループを使用して自動化されたアクションを開始するように予算を構成できます。 予算を使用したアクションの自動化の詳細については、予算による自動化をご覧ください。

データ待機時間とレート制限

この API は、1 日に 1 回だけ呼び出すことをお勧めします。 Cost Management データは、4 時間ごとに Azure リソース プロバイダーから新しい使用状況データを受け取って更新されます。 呼び出す回数を増やしても、提供されるデータが増えるわけではありません。 代わりに、負荷が大きくなります。

クエリ API のクエリ処理ユニット

Query API では、既存のレート制限プロセスに加え、API 呼び出しのコストに基づいて処理を制限します。 API 呼び出しのコストは、クエリ処理ユニット (QPU) として表されます。 QPU は、Cosmos DB RU などのパフォーマンス通貨です。 CPU やメモリなどのシステム リソースを抽象化します。

QPU の計算

現在、クエリされたデータ 1 か月分に対して 1 QPU が割り当て済みクォータから差し引かれます。 このロジックは、予告なしに変更される可能性があります。

QPU の考慮すべき要素

次の要素は、API 要求によって消費される QPU の数に影響します。

  • 日付範囲。要求内の日付範囲が拡大すると、消費される QPU の数が増加します。

QPU のその他の考慮すべき要素が予告なく追加される場合があります。

QPU クォータ

テナントごとに次のクォータが構成されます。 次のいずれかのクォータを使い果たすと、要求が抑制されます。

  • 10 秒あたり 12 QPU
  • 1 分あたり 60 QPU
  • 1 時間あたり 600 QPU

クォータは必要に応じて変更される可能性があり、より多くのクォータが追加される場合もあります。

応答ヘッダー

応答ヘッダーを調べて、API 要求によって消費された QPU の数と残りの QPU の数を追跡できます。

x-ms-ratelimit-microsoft.costmanagement-qpu-retry-after

バックオフ時間を秒単位で示します。 要求が 429 で抑制されている場合、要求を再試行する前に、このヘッダーで指定した時間バックオフします。

x-ms-ratelimit-microsoft.costmanagement-qpu-consumed

API 呼び出しによって使用される QPU。

x-ms-ratelimit-microsoft.costmanagement-qpu-remaining

残りのクォータのリスト。