このドキュメントでは、Pub/Sub 通知を使用してジョブ状態の変更をモニタリングする方法と、必要に応じて通知を BigQuery にストリーミングする方法について説明します。
準備
- Batch を以前に使用したことがなかった場合は、Batch を使ってみるを確認し、プロジェクトとユーザーの前提条件を完了して Batch を有効にします。
必要なロール
-
Pub/Sub トピックを作成するために必要な権限を取得するには、管理者に Pub/Sub トピックまたはプロジェクトに対する Pub/Sub 編集者 (
roles/pubsub.editor
)IAM ロールを付与するよう依頼してください。ロールの付与の詳細については、アクセスの管理をご覧ください。 -
このジョブのサービス アカウントが Pub/Sub 通知を公開するために必要な権限を持っていることを確認するために、ジョブのサービス アカウントに Pub/Sub トピックに対する Pub/Sub パブリッシャー (
roles/pubsub.publisher
)IAM ロールを付与するように管理者に依頼します。デフォルトでは、ジョブのサービス アカウントはデフォルトの Compute Engine サービス アカウントです。
-
Pub/Sub 通知を BigQuery にストリーミングするために必要な権限をPub/Sub サービス アカウントが持っていることを確認するために、Pub/Sub サービス アカウントにプロジェクトに対する BigQuery データ編集者 (
roles/bigquery.dataEditor
)の IAM ロールを付与するように管理者に依頼します。このロールの割り当ての詳細については、Pub/Sub サービス アカウントに BigQuery のロールを割り当てるをご覧ください。
-
BigQuery で Pub/Sub 通知に対してクエリを実行するために必要な権限を取得するには、管理者に次の IAM ロールを付与するよう依頼してください。
-
プロジェクトに対する BigQuery ジョブユーザー(
roles/bigquery.jobUser
) -
BigQuery テーブルに対する BigQuery データ閲覧者 (
roles/bigquery.dataViewer
)
-
プロジェクトに対する BigQuery ジョブユーザー(
Batch で Pub/Sub 通知を使用する
Batch では、アラート、オブザーバビリティ、BigQuery での使用について、ジョブとタスクの状態に関する Pub/Sub 通知をサポートしています。
ジョブまたはタスクの状態が変更されるたびに通知を受け取ることができます。また、指定されたジョブまたはタスクの状態に基づいてフィルタすることもできます。タスク状態通知属性は、ジョブ内のすべてのタスクに適用されます。ジョブ内の特定のタスクには適用されません。ジョブとタスクの状態の詳細については、ジョブのライフサイクルをご覧ください。
ジョブの通知を有効にする
ジョブの Pub/Sub 通知を有効にするには、次のようにします。
- Batch ジョブを実行するプロジェクトと同じプロジェクトに Pub/Sub トピックを作成します。
- 必要に応じて、通知を BigQuery にストリーミングするように Pub/Sub を構成します。
- Pub/Sub 通知を送信するジョブを作成します。
BigQuery に通知をストリーミングするように Pub/Sub を構成する
ジョブとタスクの状態の変化履歴を保持し、それらの変更に対してクエリを実行する場合は、次の手順で Pub/Sub 通知を BigQuery にストリーミングできます。
まだ行っていない場合は、ジョブの通知を有効にします。
まだ作成していない場合は、BigQuery データセットを作成します。
次のスキーマ定義を使用して 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" } ]
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`
次のステップ
- ログを使用してジョブを分析する方法を確認する。