使用 Pub/Sub 通知和 BigQuery 監控工作狀態

本文說明如何設定 Pub/Sub 通知,監控工作和工作狀態的變化。您可以將通知用於各種用途,例如本文件說明如何將通知串流至 BigQuery 資料表,以分析資料。如要進一步瞭解 Pub/Sub 通知的用途,請參閱 Pub/Sub 說明文件中的「選擇訂閱類型」。

如要將工作的所有資訊匯出至 BigQuery,請參閱匯出工作資訊

事前準備

  1. 如果您從未使用過 Batch,請參閱「開始使用 Batch」,並完成專案和使用者的必要條件,啟用 Batch。
  2. 如要為 Batch 工作設定 Pub/Sub 通知,請按照下列步驟操作:
    1. Enable the Pub/Sub API.

      Enable the API

    2. 如要取得設定 Pub/Sub 主題和訂閱項目所需的權限,請要求管理員授予您專案的 Pub/Sub 編輯者 (roles/pubsub.editor) 身分與存取權管理角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

      您或許還可透過自訂角色或其他預先定義的角色取得必要權限。

  3. 其他規定會因您決定設定的訂閱類型而異。舉例來說,如要將通知串流至 BigQuery 資料表並進行分析,請務必執行下列操作:
    1. Enable the BigQuery API.

      Enable the API

    2. 為確保 Pub/Sub 服務帳戶具備將 Pub/Sub 通知串流至 BigQuery 的必要權限,請管理員在 Pub/Sub 主題的專案中,授予 Pub/Sub 服務帳戶「BigQuery 資料編輯者」( roles/bigquery.dataEditor) IAM 角色。

      如要進一步瞭解如何指派這個角色,請參閱將 BigQuery 角色指派給 Pub/Sub 服務帳戶

    3. 請確認要透過 BigQuery 分析通知的使用者具備必要權限。

      如要在 BigQuery 中查詢 Pub/Sub 通知,請要求管理員授予下列 IAM 角色:

      • BigQuery 資料表專案的 BigQuery 工作使用者 (roles/bigquery.jobUser)
      • BigQuery 資料檢視者 (roles/bigquery.dataViewer) BigQuery 資料表

設定 Batch 的 Pub/Sub 通知

Batch 支援工作和工作狀態變更的 Pub/Sub 通知,可用於警報、可觀測性或分析。

如要為一或多個 Batch 作業設定 Pub/Sub 通知,請完成下列各節所述步驟:

  1. 為 Batch 作業建立或找出 Pub/Sub 主題
  2. 為主題建立至少一個訂閱項目,以便接收及使用通知
  3. 設定工作,將通知傳送至主題

為 Batch 設定 Pub/Sub 通知後,您可以視需要設定每項工作,以便傳送特定通知。您可以隨時在工作或工作狀態變更時收到通知,也可以篩選特定工作或工作狀態的通知。請注意,Pub/Sub 不會針對工作或工作進入的第一個狀態傳送通知,只會在工作從一個狀態移至另一個狀態時傳送通知。如要進一步瞭解可為 Pub/Sub 通知設定的屬性,請參閱「建立及執行傳送 Pub/Sub 狀態通知的工作」。

為 Batch 建立或找出 Pub/Sub 主題

建立新的 Pub/Sub 主題,或找出要用於 Batch 通知的現有 Pub/Sub 主題

如本文後續章節所述,管理員必須授予額外權限,作業才能將通知傳送至這個 Pub/Sub 主題。

建立訂閱項目,接收及使用通知

如要接收及使用發布至 Pub/Sub 主題的訊息,您必須為該主題建立至少一個訂閱項目。

舉例來說,您可以將主題設為將通知串流至 BigQuery。接著,當您執行會發布通知的工作時,即可在 BigQuery 表格中接收及分析通知。詳情請參閱本文中的範例:在 BigQuery 中接收及使用 Pub/Sub 通知

如要進一步瞭解訂閱項目和其他訂閱選項,請參閱 Pub/Sub 說明文件中的「訂閱項目總覽」。

設定工作,將通知傳送至主題

如要設定工作,將 Pub/Sub 通知傳送至主題,請按照「建立及執行工作,傳送 Pub/Sub 狀態通知」頁面的操作說明進行。具體來說,請按照下列步驟操作:

  1. 如果尚未取得權限,請要求管理員授予作業將通知傳送至 Pub/Sub 主題所需的所有權限。這類權限列於該頁面的「必要角色」部分。
  2. 建立並執行工作,方法是定義工作的 notifications 欄位,啟用 Pub/Sub 通知。

範例:在 BigQuery 中接收及使用 Pub/Sub 通知

以下各節說明在 BigQuery 中接收及使用 Pub/Sub 通知的範例用途。設定訂閱項目,將主題的 Pub/Sub 通知串流至 BigQuery 表格,即可保留工作和工作狀態變更的記錄,並查詢這些變更。

設定將通知串流至 BigQuery 的訂閱項目

設定 Pub/Sub 訂閱項目,將主題中的通知串流至 BigQuery 資料表,方法如下:

  1. 如果您還沒有,請建立或找出 Batch 適用的 Pub/Sub 主題

  2. 如果沒有,請建立 BigQuery 資料集

  3. 建立 BigQuery 資料表,並採用下列結構定義:

    [
      {
        "name": "data",
        "type": "STRING"
      },
      {
        "name": "subscription_name",
        "type": "STRING"
      },
      {
        "name": "message_id",
        "type": "STRING"
      },
      {
        "name": "attributes",
        "type": "JSON"
      },
      {
        "name": "publish_time",
        "type": "TIMESTAMP",
        "mode": "NULLABLE"
      }
    ]
    
  4. 建立串流至 BigQuery 的 Pub/Sub 訂閱項目,並指定下列選項:

    • 主題:選取 Batch 的 Pub/Sub 主題。
    • 專案:選取包含 BigQuery 資料表的專案。
    • 資料集:選取包含 BigQuery 資料表的資料集。
    • 資料表:選取您在上一個步驟中建立的資料表。
    • 選取「使用主題結構定義」
    • 選取「寫入中繼資料」

現在,每當 Pub/Sub 通知傳送至該主題時,Pub/Sub 就會將通知串流至 BigQuery 資料表。設定工作以傳送 Pub/Sub 通知後,您就可以在 BigQuery 中分析通知

在 BigQuery 中分析通知

為主題設定 BigQuery 資料表訂閱項目,並執行將通知傳送至主題的工作後,您就能在 BigQuery 中分析通知。如要在 BigQuery 中分析通知,請對 BigQuery 資料表的 attributes執行查詢。可查詢的屬性取決於您是否為工作或職缺設定通知。

您可以查詢工作通知的下列屬性:

  • JobUID
  • NewTaskState
  • Region
  • TaskName
  • TaskUID
  • Type

您可以查詢工作通知的下列屬性:

  • JobUID
  • JobName
  • NewJobState
  • Region
  • Type

舉例來說,下列查詢會顯示與每則通知相關聯的 JobUID

select attributes.JobUID from `example-table`

後續步驟