本文档介绍了如何通过以下方式监控作业和任务状态变化: 设置 Pub/Sub 通知。您可以将通知用于 例如,本文档介绍了如何流式传输 发送到 BigQuery 表,您可以用它来分析 数据。如需详细了解 Pub/Sub 通知的使用场景,请参阅 选择订阅类型 。
准备工作
- 如果您以前没有使用过 Batch,请参阅 Batch 使用入门 并通过填写 针对项目和用户的前提条件。
- 如果要为您的 Pod 设置 Pub/Sub 通知
批量作业,请执行以下操作:
-
Enable the Pub/Sub API.
-
如需获取配置 Pub/Sub 主题和订阅所需的权限, 请让管理员授予您 项目的 Pub/Sub Editor (
roles/pubsub.editor
) IAM 角色。 如需详细了解如何授予角色,请参阅管理访问权限。
-
- 其他要求因您的订阅类型而异
决定进行配置例如,如果您想流式传输和分析
BigQuery 表的通知,您必须执行以下操作:
-
Enable the BigQuery API.
-
为了确保 Pub/Sub 服务账号具备必要的权限 将 Pub/Sub 通知流式传输到 BigQuery 的权限; 请让管理员向 Pub/Sub 服务账号授予 针对 Pub/Sub 主题的项目拥有 BigQuery Data Editor (
roles/bigquery.dataEditor
) IAM 角色。如需详细了解如何分配此角色,请参阅 为 Pub/Sub 服务账号分配 BigQuery 角色。
- 确保您想分析其中通知的所有用户
BigQuery 拥有所需的权限。
如需获取在 BigQuery 中查询 Pub/Sub 通知所需的权限, 请让管理员授予您 以下 IAM 角色:
-
BigQuery Job User (
roles/bigquery.jobUser
) 针对 BigQuery 表的项目 -
BigQuery Data Viewer (
roles/bigquery.dataViewer
) 针对 BigQuery 表
-
BigQuery Job User (
-
为 Batch 设置 Pub/Sub 通知
Batch 支持 Pub/Sub 通知作业和 任务状态,可用于提醒、可观测性或分析。
为一个或多个 Batch 设置 Pub/Sub 通知 作业,请完成以下各部分中介绍的步骤:
为 Batch 设置 Pub/Sub 通知后,您可以 (可选)将每项作业配置为发送特定通知。您可以接收 并在作业或任务状态发生变化时发送通知,也可以过滤 特定作业或任务状态的通知。值得注意的是,Pub/Sub 针对作业或任务进入的第一个状态发送通知;Pub/Sub 仅在作业从一种状态变为另一种状态时发送通知。有关 有关您可以为 Pub/Sub 配置的属性的信息 通知, 请参阅 创建并运行用于发送 Pub/Sub 状态通知的作业。
为 Batch 创建或识别 Pub/Sub 主题
创建新的 Pub/Sub 主题或 确定现有 Pub/Sub 主题 批量通知的模板。
如本文档后面部分所述,作业无法将通知发送到 此 Pub/Sub 主题,直到您的管理员向您授予 授予这项权限。
创建订阅以接收和使用通知
要接收和使用发布到 Pub/Sub 主题的消息, 必须至少创建一个对该主题的订阅。
例如,您可以将主题配置为 发送通知到 BigQuery然后,当您运行 发布通知后,您便可以在 Google Cloud 控制台中接收和分析通知 BigQuery 表。如需了解详情,请参阅 示例:在 BigQuery 中接收和使用 Pub/Sub 通知 。
另外,如需详细了解订阅和其他订阅选项,请参阅 订阅概览 Pub/Sub 文档。
配置作业以向您的主题发送通知
要配置将 Pub/Sub 通知发送到您的 请按照 创建并运行用于发送 Pub/Sub 状态通知的作业 页面。具体而言,请执行以下操作:
- 如果您尚未授予所有权限,请让管理员授予 是作业向您的 Pub/Sub 主题发送通知所必需的。 这些权限列于 所需角色部分 该页面的另一个部分。
- 创建并运行启用 Pub/Sub 通知的作业
方法是定义作业的
notifications
字段。
示例:在 BigQuery 中接收和使用 Pub/Sub 通知
以下部分介绍了接收和使用 BigQuery 中的 Pub/Sub 通知。通过配置 订阅,可将主题的 Pub/Sub 通知流式传输到 BigQuery 表,您可以保留作业和任务状态的历史记录 并查询这些更改
配置将通知流式传输到 BigQuery 的订阅
配置 Pub/Sub 订阅,以流式传输来自 导出到 BigQuery 表,请执行以下操作:
如果您还没有这样做 创建或标识 Batch 的 Pub/Sub 主题。
如果您还没有账号, 创建 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 订阅 并指定以下选项:
- 主题:为 Batch 选择 Pub/Sub 主题。
- 项目:选择 BigQuery 表所属的项目。
- 数据集:选择 BigQuery 表所属的数据集。
- 表格:选择您在上一步中创建的表格。
- 选择使用主题架构。
- 选择写入元数据。
现在,每当 Pub/Sub 通知发送到该主题时, Pub/Sub 将该通知流式传输到 BigQuery 表。 将作业配置为发送 Pub/Sub 通知后,您可以 在 BigQuery 中分析通知。
在 BigQuery 中分析通知
配置好
为您的主题订阅 BigQuery 表,并运行
向您的主题发送通知。分析通知
在 BigQuery 中,运行查询
针对 BigQuery 表的 attributes
列。需要指定
进行查询,具体取决于您是为任务还是为作业配置了通知。
您可以查询任务通知的以下属性:
JobUID
NewTaskState
Region
TaskName
TaskUID
Type
您可以查询作业通知的以下属性:
JobUID
JobName
NewJobState
Region
Type
例如,以下查询显示了与每个属性相关联的 JobUID
通知:
select attributes.JobUID from `example-table`
后续步骤
- 了解如何创建和运行发送 Pub/Sub 状态通知的作业。
- 详细了解 Pub/Sub 订阅。
- 详细了解 BigQuery 分析。