プログラムによる通知を設定する

このドキュメントでは、Pub/Sub を使用して、プログラムによる予算と費用の異常(プレビュー)通知を設定する方法について説明します。

通常、予算費用の異常は、メール通知を送信するように構成されます。予算または費用の異常検出を費用管理ツールとして使用している場合、メール通知は、費用をタイムリーに管理する最適な方法でない場合があります。プログラムによる通知を設定して使用すると、費用管理レスポンスを自動化できます。自動化された費用管理レスポンスの例には、次のようなものがあります。

制限事項

このタスクに必要な権限

予算通知

プログラムによる予算通知を設定するには、予算と Pub/Sub トピックを作成または変更する権限が必要です。必要な権限は、アクセスのレベルに応じて異なります。

Cloud 請求先アカウントの権限を持つユーザー プロジェクト レベルの権限のみを持つユーザー(プレビュー

組織で認証にカスタムロールを使用する場合は、カスタムロールに次の権限が必要です。

既存の Cloud Billing 予算を変更して既存の Pub/Sub トピックに関連付けるカスタムロールには、次の権限が必要です。

事前定義ロールを使用して必要な権限を付与するには、Cloud 請求先アカウントに次のいずれかの Cloud Billing IAM 事前定義ロールを付与するように管理者へ依頼してください。

Pub/Sub トピックを含む対象プロジェクトに対して、次のロールを付与するように管理者へ依頼してください。

組織で認証にカスタムロールを使用する場合は、カスタムロールに次の権限が必要です。

事前定義ロールを使用して必要な権限を付与するには、プロジェクトに対する次のいずれかの Cloud Billing IAM 事前定義ロールを付与するように管理者へ依頼してください。

Pub/Sub トピックを含む対象プロジェクトに対して、次のロールを付与するように管理者へ依頼してください。

異常通知

プログラムによる異常通知を設定するには、異常と Pub/Sub トピックを作成または変更する権限が必要です。Cloud 請求先アカウントの権限が必要です。

Cloud 請求先アカウントの権限を持つユーザー(プレビュー

事前定義ロールを使用して必要な権限を付与するには、Cloud 請求先アカウントに次のいずれかの Cloud Billing IAM 事前定義ロールを付与するように管理者へ依頼してください。

Pub/Sub トピックを含む対象プロジェクトに対して、次のロールを付与するように管理者へ依頼してください。

Pub/Sub トピックを作成する

プログラムによる予算通知または異常通知を設定するには、まず Pub/Sub トピックを作成する必要があります。予算または費用の異常な値の Pub/Sub トピックをすでに構成している場合、この手順はスキップできます。

  1. Google Cloud コンソールの [Pub/Sub] ページに移動します。

    Google Cloud コンソールの Pub/Sub にログイン

  2. Pub/Sub トピックを含むプロジェクトを選択します。

    課金通知用の Pub/Sub トピックを構成する場合は、FinOps 管理プロジェクトを使用して、課金関連の Pub/Sub トピックを含めることをおすすめします。

  3. [トピックを作成] をクリックします。

  4. [トピック ID] フィールドに、トピック名を入力します。

  5. デフォルトのサブスクリプションと暗号化の設定を保持し、[作成] をクリックします。

Pub/Sub トピックを接続する

予算または異常の現在のステータスを含む Pub/Sub メッセージを受け取るようにプログラムによる通知を有効にするには、予算または異常を Pub/Sub トピックに接続する必要があります。

予算通知

Pub/Sub トピックを Cloud Billing 予算に関連付けるには、次の手順を行います。

Cloud 請求先アカウントの権限を持つユーザー プロジェクト レベルの権限のみを持つユーザー(プレビュー
  1. Google Cloud コンソールの [予算とアラート] ページにログインします。

    [予算とアラート] を開く
  2. プロンプトで、予算を管理する Cloud 請求先アカウントを選択します。

    選択した請求先アカウントの [予算とアラート] ページが開きます。

  3. 接続する予算を選択するか、新しい予算を作成します。
  4. [アクション] セクションの [通知の管理] で、[Pub/Sub トピックをこの予算に接続する] を選択します。
  5. [プロジェクト] フィールドで [プロジェクトを選択する] をクリックして、設定した Pub/Sub トピックを含むプロジェクトを選択します。
  6. [Cloud Pub/Sub トピックを選択してください] で、既存のトピックを選択するか、[トピックを作成する] をクリックして新しいトピックを作成します。
    • 新しいトピックを作成する場合は、[トピック ID] フィールドにトピック名を入力し、[作成] をクリックします。
    • トピックを作成すると、トピックが自動的に選択されます。
  7. [保存] をクリックします。
  1. Google Cloud コンソールのダッシュボードにログインし、プロジェクトを選択します。

    Google Cloud コンソールを開く
  2. 予算を管理するプロジェクトを選択します。
  3. [お支払い] セクションに移動します。Google Cloud コンソールのナビゲーション メニュー を開き、[お支払い] を選択します。

    表示および管理する請求先アカウントを選択するように求められたら、[リンクされた請求先アカウントに移動] をクリックして、選択したプロジェクトにリンクされている請求先アカウントを表示します。

    選択した請求先アカウントの請求の [概要] ページが表示されます。

  4. [お支払い] ナビゲーション メニューの [費用管理] セクションで、[予算とアラート] を選択します。
  5. 接続する予算を選択するか、新しい予算を作成します。
  6. [アクション] セクションの [通知の管理] で、[Pub/Sub トピックをこの予算に接続する] を選択します。
  7. [プロジェクト] フィールドで [プロジェクトを選択する] をクリックして、設定した Pub/Sub トピックを含むプロジェクトを選択します。
  8. [Cloud Pub/Sub トピックを選択してください] で、既存のトピックを選択するか、[トピックを作成する] をクリックして新しいトピックを作成します。
    • 新しいトピックを作成する場合は、[トピック ID] フィールドにトピック名を入力し、[作成] をクリックします。
    • 作成後、トピックが選択されます。
  9. [保存] をクリックします。

異常通知

Pub/Sub トピックを費用の異常と接続するには、次の手順を行います。

Cloud 請求先アカウントの権限を持つユーザー(プレビュー
  1. Google Cloud コンソールの [異常] ページにログインします。

    [異常] を開く
  2. プロンプトで、異常を管理する Cloud 請求先アカウントを選択します。

    選択した請求先アカウントの [異常] ページが表示されます。

  3. [ 異常の管理] をクリックします。
  4. [費用への影響] に関する [異常しきい値] の値を入力します。この金額は、通知をトリガーするしきい値です。値を指定しない場合、しきい値は 0 に設定され、すべての異常に対して通知が送信されます。
  5. [Pub/Sub 通知] セクションで、[Pub/Sub トピックを接続して、異常についてプログラムによる最新情報を受け取る] を選択します。
  6. 表示されたプルダウン メニューから、通知を受け取るために接続する Pub/Sub トピックを選択します。
    • トピックはプロジェクトごとに一覧表示されます。選択するトピックを見つけるには、表示しているプロジェクトを切り替える必要があるかもしれません。
    • 新しいトピックを作成する場合は、目的のプロジェクトに切り替えた後、[トピックを作成する] をクリックします。
  7. [保存] をクリックします。

通知形式

Pub/Sub トピックに送信される通知は、次の 2 つの部分で構成されます。

  • 属性: イベントを記述する Key-Value ペア。
  • データ: 予算アラートの詳細を記述する JSON オブジェクトを含む文字列。

予算通知

属性

属性は、Cloud Billing から Pub/Sub トピックに送信されるすべての通知に含まれる Key-Value ペアです。通知ペイロードに関係なく、通知には次の Key-Value ペアのセットが含まれます。

属性名 説明
billingAccountId 01D4EE-079462-DFD6EC 予算を所有する Cloud 請求先アカウントの ID。
budgetId de72f49d-779b-4945-a127-4d6ce8def0bb Cloud 請求先アカウント内の予算アラートの ID。
schemaVersion 1.0 通知のスキーマ バージョン。

データ

予算アラートの詳細は、base64 でエンコードされた UTF-8 文字列で返されます。これには、次のプロパティを持つ JSON オブジェクトが含まれています。

データ 説明
budgetDisplayName "My Personal Budget" 予算に割り当てられた、人が読める形式の名前。
costAmount 140.321 発生した費用。追跡されるコストのタイプは、予算のフィルタと設定によって異なります。
costIntervalStart "2021-02-01T08:00:00Z" 予算アラート期間の開始。costAmount には、この時点から使用が開始されたコストが含まれます。これは、予算の使用が発生した予算期間(月、四半期、年、指定の期間)の最初の日です。
budgetAmount 152.557 予算に割り当てられた金額。
budgetAmountType "SPECIFIED_AMOUNT" 予算の金額タイプ。次のいずれかの値です。
  • SPECIFIED_AMOUNT: 固定額。
  • LAST_MONTH_COST: 先月に発生した費用の合計額。
  • LAST_PERIODS_COST: 月以外のカレンダーの期間(四半期または年など)に発生した費用。
alertThresholdExceeded 0.9 最大の費用の実値のしきい値。これを超えるとアラートが通知されます。値は 10 進数形式のパーセントです(たとえば、0.9 は 90% です)。費用の実値がしきい値を超えない場合、このキーは存在しません。
forecastThresholdExceeded 0.2 最大の予測費用アラートのしきい値。これを超えるとアラートが通知されます。値は 10 進数形式のパーセントです(たとえば、0.2 は 20% です)。予測費用がしきい値を超えない場合、このキーは存在しません。
currencyCode "USD" 予算アラートの通貨。すべての費用と予算アラートの金額はこの通貨で表示されます。

異常通知

属性

属性は、Cloud Billing から Pub/Sub トピックに送信されるすべての通知に含まれる Key-Value ペアです。通知ペイロードに関係なく、通知には次の Key-Value ペアのセットが含まれます。

属性名 説明
scope scope_project 異常の範囲。
billingAccountName billingAccounts/01D4EE-079462-DFD6EC 異常が発生した Cloud 請求先アカウントの ID。
resourceDisplayName My project 異常が発生したリソースの表示名。
resourceName projects/123456 異常が発生したリソースの ID。
SchemaVersion 1.0 Pub/Sub スキーマのバージョン。

データ

異常アラートの詳細は、base64 でエンコードされた UTF-8 文字列で返されます。これには、次のプロパティを持つ JSON オブジェクトが含まれています。

データ 説明
anomalyName billingAccounts/01D4EE-079462-DFD6EC/anomalies/aaa 異常のリソース名。
billingAccountName billingAccounts/01D4EE-079462-DFD6EC 請求先アカウントの ID。
resourceName "projects/12345" 異常が発生したリソースの ID。
resourceDisplayName "My project" 異常が発生したリソースの表示名。
detectionDate "2024-02-01T08:00:00Z" 費用の異常が検出された日付。
Scope SCOPE_PROJECT 異常の範囲を示します。
expectedSpendAmount {
"currencyCode": "USD",
"units": "8",
"nanos": 988106832
}
リソースの予測費用。
actualSpendAmount 196.22 リソースの実際の費用。
deviationAmount 31.01 実際の費用と予測費用の乖離額。
deviationPercentage 18.77 予測費用に対する乖離額の割合。
Root cause
root_causes {
resource: "services/XXX-XXXX-XXX"
display_name: "BigQuery"
cause_type: CAUSE_TYPE_SERVICE
deviation {
  expected_spend {
    currency_code: "USD"
    units: "5000"
  }
  actual_spend {
    currency_code: "USD"
    units: "5000"
  }
  deviation_amount {
    currency_code: "USD"
    units: "5000"
  }
  deviation_percentage: "Infinity"
}
sub_causes {
  resource: "locations/us-west1",
  display_name: "us-west1",
  cause_type: CAUSE_TYPE_LOCATION,
  deviation {
    expected_spend {
      currency_code: "USD",
    }
    actual_spend {
      currency_code: "USD",
      units:"5000"
    }
    deviation_amount {
      currency_code: "USD",
      units: "5000"
    }
    deviation_percentage: "Infinity"
  }
  sub_causes {
    resource: "services/XXXX-XXXX-XXXX/skus/XXXX-XXXX-XXXX"
    display_name: "Some display name"
    cause_type: CAUSE_TYPE_SKU
    deviation {
      expected_spend {
        currency_code: "USD"
      }
      actual_spend {
        currency_code: "USD"
        units: 5000
      }
      deviation_amount {
        currency_code: "USD"
        units: 5000
      }
      deviation_percentage: "Infinity"
    }
  }
  sub_causes {
    resource: "services/XXXX-XXXX-XXXX/skus/XXXX-XXXX-XXXX"
    display_name: "Some display name"
    cause_type: CAUSE_TYPE_SKU
    deviation {
      expected_spend {
        currency_code: "USD"
        units: "1"
        nanos: 5413077
      }
      actual_spend {
        currency_code: "USD"
        units: "1",
        nanos: 122606000
      }
      deviation_amount {
        currency_code: "USD"
        nanos: 117192923
      }
      deviation_percentage:11.656196419841217
    }
  }
}
}
異常の根本原因に関する情報を含む繰り返しフィールド。

Pub/Sub への通知の配信保証

予算または異常を Pub/Sub トピックに接続すると、プログラムによる通知が次のように届きます。

予算通知

  • 予算通知は、予算の現在のステータスとともに 1 日に数回、Pub/Sub トピックに送信されます。この頻度は、予算アラートメールの頻度とは異なります。予算アラートメールは、予算しきい値に達したときにのみ送信されます。
  • Pub/Sub 通知は、Cloud 請求先アカウントで使用量がない場合にも送信されます。
  • 最初の Pub/Sub 通知を受け取るまで数時間かかる場合があります。
  • Pub/Sub は at-least-once(最低 1 回)配信のみを保証します。メッセージが複数回送信されたり、メッセージが順不同で到着したりする場合があります。
  • Pub/Sub トピックの構成ミスにより配信に失敗した場合、通知は表示されません。

次のいずれか 1 つの理由により、配信が失敗することがあります。

異常通知

  • 異常通知は、しきい値に達した場合にのみ Pub/Sub トピックに送信されます。
  • Pub/Sub は at-least-once(最低 1 回)配信のみを保証します。メッセージが複数回送信されたり、メッセージが順不同で到着したりする場合があります。
  • Pub/Sub トピックの構成ミスにより配信に失敗した場合、通知は表示されません。

次のいずれか 1 つの理由により、配信が失敗することがあります。

詳細については、Pub/Sub にメッセージをパブリッシュし、受信するをご覧ください。

次のステップ

プログラムによる通知の使用方法についての詳細は、プログラムによる費用管理レスポンスの例をご覧ください。