Pub/Sub 通知と BigQuery を使用してジョブ ステータスをモニタリングする

このドキュメントでは、Pub/Sub 通知を使用してジョブ状態の変更をモニタリングする方法と、必要に応じて通知を BigQuery にストリーミングする方法について説明します。

準備

必要なロール

Batch で Pub/Sub 通知を使用する

Batch では、アラート、オブザーバビリティ、BigQuery での使用について、ジョブとタスクの状態に関する Pub/Sub 通知をサポートしています。

ジョブまたはタスクの状態が変更されるたびに通知を受け取ることができます。また、指定されたジョブまたはタスクの状態に基づいてフィルタすることもできます。タスク状態通知属性は、ジョブ内のすべてのタスクに適用されます。ジョブ内の特定のタスクには適用されません。ジョブとタスクの状態の詳細については、ジョブのライフサイクルをご覧ください。

ジョブの通知を有効にする

ジョブの Pub/Sub 通知を有効にするには、次のようにします。

  1. Batch ジョブを実行するプロジェクトと同じプロジェクトに Pub/Sub トピックを作成します。
  2. 必要に応じて、通知を BigQuery にストリーミングするように Pub/Sub を構成します。
  3. Pub/Sub 通知を送信するジョブを作成します。

BigQuery に通知をストリーミングするように Pub/Sub を構成する

ジョブとタスクの状態の変化履歴を保持し、それらの変更に対してクエリを実行する場合は、次の手順で Pub/Sub 通知を BigQuery にストリーミングできます。

  1. まだ行っていない場合は、ジョブの通知を有効にします。

  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 サブスクリプションを作成し、以下を指定します。

    • トピック: 以前に作成した Pub/Sub トピックを選択します。
    • プロジェクト: BigQuery テーブルを含むプロジェクトを選択します。
    • データセット: BigQuery テーブルを含むデータセットを選択します。
    • テーブル: 前の手順で作成したテーブルを選択します。
    • [トピック スキーマを使用する] を選択します。
    • [メタデータを書き込む] を選択します。

Batch ジョブが実行されると、Pub/Sub は BigQuery に通知をストリーミングします。

BigQuery で通知を分析する

BigQuery テーブルの attributes 列でクエリを実行して、BigQuery の Pub/Sub 通知を分析します。クエリできる属性は、タスクまたはジョブの通知を構成したかどうかによって異なります。

タスクの通知の次の属性をクエリできます。

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

ジョブの通知の次の属性をクエリできます。

  • JobUID
  • JobName
  • NewJobState
  • Region
  • Type

たとえば、次のクエリは、各通知に関連付けられた JobUID を示しています。

select attributes.JobUID from `example-table`

次のステップ