設定程式輔助通知

本文說明如何使用 Pub/Sub,設定程式輔助預算和費用異常 (預覽版) 通知。

預算費用異常通常會設定為傳送電子郵件通知。如果您使用預算或費用異常偵測功能做為費用控管工具,電子郵件通知可能不是確保及時採取行動控管費用的最佳方法。您可以設定及使用程式輔助通知,自動化費用控制回應。自動成本控制回應範例包括:

限制

  • 系統依據推估的 Cloud Billing 資料來判斷預算支出狀態。在應付憑據結算之前,金額可能會有所變化。

  • 如果您設定機構政策限制依網域共用資源 (例如在 Pub/Sub 主題上啟用 enforceInTransit),嘗試設定或連結 Pub/Sub 主題時可能會發生錯誤。在這種情況下,您可能需要強制存取帳戶,才能順利將 Pub/Sub 主題連結至預算。如要強制存取帳戶,請完成下列步驟:

    1. 使用下列其中一種方法,移除包含網域限制的機構政策:
    2. 按照步驟連結 Pub/Sub 主題
    3. 為機構或專案恢復機構政策 (選用)。

這項工作需要的權限

預算通知

如要設定程式輔助預算通知,您必須擁有建立或修改預算和 Pub/Sub 主題的權限。視存取層級而定,您需要不同的權限組合。

擁有 Cloud Billing 帳戶權限的使用者 僅具備專案層級權限的使用者 (預覽版)

如果貴機構使用自訂角色進行驗證,自訂角色必須具備下列權限:

如要透過自訂角色修改現有的 Cloud Billing 預算,並將其連結至現有的 Pub/Sub 主題,您需要下列權限:

如要透過預先定義的角色取得必要權限,請要求管理員在 Cloud Billing 帳戶中,授予您下列其中一個預先定義的 Cloud Billing IAM 角色:

請管理員在包含 Pub/Sub 主題的目標專案中,授予您下列角色:

如果貴機構使用自訂角色進行驗證,自訂角色必須具備下列權限:

如要使用預先定義的角色取得必要權限,請要求管理員授予您專案的下列其中一個預先定義 Cloud Billing IAM 角色:

請管理員在包含 Pub/Sub 主題的目標專案中,授予您下列角色:

異常狀況通知

如要設定程式輔助異常通知,您必須具備建立或修改異常和 Pub/Sub 主題的權限。您必須具備 Cloud Billing 帳戶權限。

具備 Cloud Billing 帳戶權限的使用者 (搶先版)

如要透過預先定義的角色取得必要權限,請要求管理員在 Cloud Billing 帳戶中,授予您下列其中一個預先定義的 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 Billing 帳戶權限的使用者 僅具備專案層級權限的使用者 (預覽版)
  1. 登入 Google Cloud 控制台中的「預算與快訊」頁面。

    開啟「預算與快訊」
  2. 在系統提示時,選擇要管理預算的 Cloud Billing 帳戶。

    系統會開啟所選帳單帳戶的「預算與快訊」頁面。

  3. 選取要連結的預算,或建立新預算
  4. 在「動作」部分的「管理通知」下方,選取「將 Pub/Sub 主題連結到這筆預算」
  5. 在「Project」(專案) 欄位中,按一下「Select a project」(選取專案),然後選擇您設定 Pub/Sub 主題的專案。
  6. 在「Select a Pub/Sub topic」(選取 Pub/Sub 主題) 下,選取現有主題,或點選「Create a topic」(建立主題) 來建立新主題。
    • 如要建立新主題,請在「Topic ID」(主題 ID) 欄位中提供主題名稱,然後按一下「Create topic」(建立主題)
    • 建立主題後,系統會自動選取該主題。
  7. 按一下 [儲存]
  1. 登入 Google Cloud 控制台資訊主頁,然後選取專案。

    開啟 Google Cloud 控制台
  2. 選取要管理預算的專案。
  3. 前往「帳單」部分:開啟 Google Cloud 控制台 「導覽選單」 然後選取「帳單」

    如果系統提示您選擇要查看及管理的帳單帳戶,請按一下「前往連結的帳單帳戶」,查看與所選專案連結的帳單帳戶。

    系統會開啟所選帳單帳戶的「帳單總覽」頁面。

  4. 在「帳單」導覽選單的「費用管理」部分,選取「預算與快訊」
  5. 選取要連結的預算,或建立新預算
  6. 在「動作」部分的「管理通知」下方,選取「將 Pub/Sub 主題連結到這筆預算」
  7. 在「Project」(專案) 欄位中,按一下「Select a project」(選取專案),然後選擇您設定 Pub/Sub 主題的專案。
  8. 在「Select a Pub/Sub topic」(選取 Pub/Sub 主題) 下,選取現有主題,或點選「Create a topic」(建立主題) 來建立新主題。
    • 如要建立新主題,請在「Topic ID」(主題 ID) 欄位中提供主題名稱,然後按一下「Create topic」(建立主題)
    • 系統在建立主題後,即會選取該主題。
  9. 按一下 [儲存]

異常狀況通知

如要將 Pub/Sub 主題連結至費用異常狀況,請完成下列步驟:

具備 Cloud Billing 帳戶權限的使用者 (搶先版)
  1. 登入 Google Cloud 控制台的「異常狀況」頁面。

    開啟異常狀況
  2. 在系統提示時,選擇要管理異常狀況的 Cloud Billing 帳戶。

    系統會開啟所選帳單帳戶的「異常」頁面。

  3. 按一下 「管理異常狀況」
  4. 輸入「費用落差」的「異常狀況門檻」值。這個金額就是觸發通知的門檻值。如未提供值,系統會將門檻設為零,並針對所有異常狀況傳送通知。
  5. 在「Pub/Sub notifications」(Pub/Sub 通知) 部分,選取「連結 Pub/Sub 主題,透過程式接收異常狀況的最新消息」
  6. 在隨即顯示的下拉式選單中,選取要連結的 Pub/Sub 主題,以便接收通知。
    • 主題會依專案列出。您可能需要切換專案,才能找到要選取的主題。
    • 如要建立新主題,請先切換至偏好的專案,然後按一下「建立主題」
  7. 按一下 [儲存]

通知格式

傳送至 Pub/Sub 主題的通知分為以下兩部分:

  • 屬性:用於說明事件的鍵/值組合。
  • 資料:包含 JSON 物件 (用於說明預算快訊詳細資料) 的字串。

預算通知

屬性

屬性是 Cloud Billing 傳送至 Pub/Sub 主題的所有通知中包含的鍵/值組合。無論通知的酬載資料為何,都會包含以下鍵值組合。

屬性名稱 範例 說明
billingAccountId 01D4EE-079462-DFD6EC 擁有預算的 Cloud Billing 帳戶 ID。
budgetId de72f49d-779b-4945-a127-4d6ce8def0bb Cloud Billing 帳戶內的預算快訊 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 這個值代表您指定的最高實際費用在快訊門檻中所佔的比例,值為十進位格式的百分比 (例如 0.9 即為 90%)。如果實際費用未超過任何門檻,系統就不會顯示這個鍵。
forecastThresholdExceeded 0.2 這個值代表您指定的最高預測費用在快訊門檻中所佔的比例,值為百分比,採 10 進位格式 (例如:0.2 即為 20%)。如果預測費用未超過任何門檻,系統就不會顯示這個鍵。
currencyCode "USD" 預算快訊的貨幣。所有費用和預算金額都會以這個貨幣計算。

異常狀況通知

屬性

屬性是 Cloud Billing 傳送至 Pub/Sub 主題的所有通知中包含的鍵/值組合。無論通知酬載為何,通知都會包含以下鍵值組合。

屬性名稱 範例 說明
範圍 scope_project 異常狀況的範圍。
billingAccountName billingAccounts/01D4EE-079462-DFD6EC 發生異常的 Cloud Billing 帳戶 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 主題後,您會收到以下程式輔助通知:

預算通知

  • 系統每天都會傳送數則預算通知到 Pub/Sub 主題,其中包含目前的預算狀態。這與預算快訊電子郵件的頻率不同,預算快訊電子郵件只會在達到預算門檻時傳送。
  • 即使 Cloud Billing 帳戶沒有用量,系統仍會傳送 Pub/Sub 通知。
  • 您可能需要等待幾個小時才會收到第一則 Pub/Sub 通知。
  • Pub/Sub 只保證發送至少一次通知。您可能會收到多次同一則通知,而且訊息送達的先後順序可能會與時間不符。
  • 如果因 Pub/Sub 主題設定有誤而導致發送失敗,系統不會另行通知。

傳送失敗的可能原因如下:

異常狀況通知

  • 只有在達到門檻時,系統才會將異常狀況通知傳送至 Pub/Sub 主題。
  • Pub/Sub 只保證發送至少一次通知。您可能會收到多次同一則通知,而且訊息送達的先後順序可能會與時間不符。
  • 如果因 Pub/Sub 主題設定有誤而導致發送失敗,系統不會通知您。

傳送失敗的可能原因如下:

詳情請參閱「在 Pub/Sub 中發布及接收訊息」。

後續步驟

如要進一步瞭解如何使用程式輔助通知,請參閱下列程式輔助費用控制回應範例: