本页面介绍如何完成以下任务:
准备工作
如需监控执行日志,请确保执行以下操作:
所需的角色
如需获得查看执行日志所需的权限,请让您的管理员为您授予以下 IAM 角色:
- 针对正在跟踪工作流执行的 Dataform 代码库的 Dataform Editor (
roles/dataform.editor) -
验证执行设置:自定义服务账号的 Service Account User (
roles/iam.serviceAccountUser)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
日志查看器 (roles/logging.viewer) IAM 角色为您提供对 Cloud Logging 所有功能的只读权限。如需详细了解适用于 Logging 数据的 Identity and Access Management 权限和角色,请参阅使用 IAM 进行访问权限控制。
如需创建和管理基于日志的提醒,请确保您的 IAM 角色包含创建和使用基于日志的提醒政策所需的角色中所述的权限。
监控执行日志
本部分介绍了如何在 Dataform 中查看执行日志。
您可以查看代码库中触发的所有执行作业的日志,以及过去 24 小时内在工作区中触发的执行作业的日志。
检查代码库执行日志
如需查看在代码库中触发的所有执行的日志,请按照以下步骤操作:
在 Google Cloud 控制台中,前往 Dataform 页面。
前往您的代码库。
点击工作流执行日志。
如需查看执行的详细信息,请点击相应执行。
如需查看执行中某项操作的详细信息,请点击查看详情。
检查工作区执行日志
如需查看过去 24 小时内在工作区中触发的 1,000 个最新执行作业的日志,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Dataform 页面。
前往您的代码库,然后选择您的工作区。
在工作区中,点击执行。
如需查看执行详情,请点击相应执行。
如需查看执行中某项操作的详细信息,请点击查看详细信息。
查看 Dataform 的 Logging 日志
本部分介绍了如何查看 Dataform 工作流调用的 Cloud Logging 日志。
每次 Dataform 工作流调用都会通过 Logging 进行记录。系统会自动为 Dataform 工作流调用启用日志记录功能,这可能会产生 Logging 结算费用。如需了解详情,请参阅 Dataform 价格。
查看日志
如需查看日志,请前往日志浏览器页面。
如需了解如何在 Logs Explorer 中过滤 Logging 日志,请参阅使用 Logs Explorer 查看日志。
Dataform 日志按 Dataform 代码库编入索引。
日志格式
Dataform 会按以下格式发送工作流调用日志消息:
{
"insertId": "14ip1tza5",
"jsonPayload": {
"terminalState": "SUCCEEDED",
"workflowInvocationId": "1678383230-ac4ed48c-eb70-4555-b2b0-cda54d13edfa",
"@type": "type.googleapis.com/google.cloud.dataform.logging.v1.WorkflowInvocationCompletionLogEntry"
},
"resource": {
"type": "dataform.googleapis.com/Repository",
"labels": {
"repository_id": "repository-name-example",
"resource_container": "PROJECT_ID",
"location": "us-central1"
}
},
"timestamp": "2023-03-09T17:34:06.965981805Z",
"severity": "INFO",
"logName": "projects/project-name-example/logs/dataform.googleapis.com%2Fworkflow_invocation_completion",
"receiveTimestamp": "2023-03-09T17:34:07.362371980Z"
}
记录的内容
Dataform 日志条目包含对监控和调试工作流调用有用的信息。
日志条目包含以下类型的信息:
receiveTimestamprelease_config_idrepository_idresource_containerworkflow_invocation_idworkflow_config_idseverity:可以是INFO、WARNING或ERRORterminalState:可以是SUCCEEDED、CANCELED或FAILEDtimestamp@type
Dataform 服务日志提供高级调用事件,例如工作流调用完成日志。不过,这些服务日志不包含单个 BigQuery 任务 ID 或精细的表级操作执行。如需检索工作流调用的精细操作级执行详情和相应的 BigQuery 任务 ID,请参阅将 BigQuery 作业与工作流调用相关联。
使用 Cloud Monitoring 配置指标和提醒
您可以使用 Monitoring 观察日志中的趋势,并在出现您描述的条件时通知您。
为了向 Monitoring 提供日志中的数据,Logging 为您提供以下功能:
- 您可以按以下方式使用基于日志的指标:
- 创建提醒政策以通知您一段时间的变化。
- 创建随时间显示变化的图表。
- 基于日志的提醒,可在日志中出现特定事件时通知您。
如需详细了解基于日志的指标和基于日志的提醒,请参阅监控日志。
如需了解如何为 Dataform 工作流调用配置基于日志的提醒,请参阅针对失败的工作流调用配置提醒。
将 BigQuery 作业与工作流调用相关联
dataform.googleapis.com/Repository 资源类型下的 Dataform 服务日志提供高级工作流调用事件,例如工作流调用完成日志。不过,这些服务日志不包含精细的表级操作执行或特定 BigQuery 作业 ID。
当 Dataform 运行创建或更新表、视图或断言等操作时,它会在 BigQuery 中提交作业,并自动为每个作业附加标签。您还可以通过调用 workflowInvocations.query 方法并检查 bigqueryAction.jobId 字段,直接从 Dataform API 检索每个操作的 BigQuery 任务 ID。
下表列出了 Dataform 附加到 BigQuery 作业的关键标签:
| 标签键 | 说明 |
|---|---|
dataform_workflow_execution_id |
Dataform 工作流调用的经过清理的 ID。 |
dataform_repository_id |
Dataform 代码库的经过清理的 ID。 |
dataform_workflow_execution_action_id_database |
操作的目标项目(数据库)。 |
dataform_workflow_execution_action_id_schema |
操作的目标数据集(架构)。 |
dataform_workflow_execution_action_id_name |
操作的目标表、视图或断言名称。 |
如需将 BigQuery 作业和操作级执行详情与工作流调用相关联,请执行以下操作:
获取运行的工作流调用 ID。如需在 Logs Explorer 中查找 ID,请查询以下 Dataform 日志类型之一:
workflow_invocation_completion日志(默认启用):从日志条目中复制jsonPayload.workflowInvocationId字段的值:resource.type="dataform.googleapis.com/Repository" resource.labels.repository_id="REPOSITORY_ID" log_id("dataform.googleapis.com/workflow_invocation_completion")CreateWorkflowInvocation数据访问审计日志(如果为DATA_WRITE操作启用了数据访问审计日志):复制protoPayload.resourceName字段末尾的WORKFLOW_INVOCATION_ID段:resource.type="dataform.googleapis.com/Repository" resource.labels.repository_id="REPOSITORY_ID" log_id("cloudaudit.googleapis.com/data_access") protoPayload.methodName:"Dataform.CreateWorkflowInvocation"
将
REPOSITORY_ID替换为 Dataform 代码库的 ID。如需通过在 Logs Explorer 中查询 BigQuery 审计日志或在 BigQuery 中查询
INFORMATION_SCHEMA.JOBS视图来查找相关的 BigQuery 作业,请选择以下选项之一:日志浏览器
在 Google Cloud 控制台中,前往 Logs Explorer 页面。
在查询窗格中,输入以下查询:
resource.type="bigquery_project" protoPayload.metadata.jobChange.job.jobConfig.labels.dataform_workflow_execution_id="WORKFLOW_INVOCATION_ID"
将
WORKFLOW_INVOCATION_ID替换为您的工作流调用 ID。点击运行查询。
该查询会返回该工作流调用的 BigQuery 作业日志条目。在每个日志条目中,
protoPayload.metadata.jobChange.job.jobName字段包含 BigQuery 作业资源名称,jobStats和jobStatus字段提供执行统计信息和状态详细信息。
BigQuery Studio
在 Google Cloud 控制台中,前往 BigQuery Studio 页面。
在查询编辑器中,运行以下查询:
SELECT job_id, creation_time, state, error_result, total_bytes_billed, (SELECT value FROM UNNEST(labels) WHERE key = 'dataform_workflow_execution_action_id_schema') AS target_schema, (SELECT value FROM UNNEST(labels) WHERE key = 'dataform_workflow_execution_action_id_name') AS target_name, query FROM `region-LOCATION`.INFORMATION_SCHEMA.JOBS WHERE DATE(creation_time) = CURRENT_DATE() AND EXISTS ( SELECT 1 FROM UNNEST(labels) WHERE key = 'dataform_workflow_execution_id' AND value = 'WORKFLOW_INVOCATION_ID' );替换以下内容:
LOCATION:作业运行所在的 BigQuery 位置,例如us或eu。WORKFLOW_INVOCATION_ID:您的工作流调用 ID。
针对失败的工作流调用配置提醒
本部分介绍了如何使用 Logs Explorer 为失败的 Dataform 工作流调用配置基于日志的提醒。
您可以使用 Monitoring 观察 Dataform 工作流调用的 Logging 日志中的趋势,并在出现描述的条件时通知您。
每次 Dataform 工作流调用都会通过 Logging 进行记录。系统会自动为 Dataform 工作流调用启用日志记录功能,这可能会产生 Logging 结算费用。如需了解详情,请参阅 Dataform 价格。
如需在 Dataform 工作流调用失败时收到提醒,您可以创建基于日志的提醒。
您可以通过 Google Cloud 控制台中的 Logs Explorer 页面或使用 Monitoring API 来创建基于日志的提醒。本部分介绍了如何使用 Logs Explorer 为 Dataform 工作流调用失败创建基于日志的提醒。
如需为失败的 Dataform 工作流调用配置基于日志的提醒,请按照以下步骤操作:
在 Google Cloud 控制台中,选择 Logging,然后选择 Logs Explorer。
在查询窗格中,选择显示查询,然后输入以下查询:
resource.type="dataform.googleapis.com/Repository" jsonPayload.@type="type.googleapis.com/google.cloud.dataform.logging.v1.WorkflowInvocationCompletionLogEntry" jsonPayload.terminalState="FAILED"此查询会提醒您所有失败的 Dataform 工作流调用。
可选:如需按发布配置过滤失败的工作流调用,请将以下内容附加到查询中:
jsonPayload.releaseConfigId="RELEASE_CONFIGURATION_ID"将
RELEASE_CONFIGURATION_ID替换为发布配置的 ID。可选:如需按工作流配置过滤失败的工作流调用,请将以下内容附加到查询中:
jsonPayload.workflowConfigId="WORKFLOW_CONFIGURATION_ID"将
WORKFLOW_CONFIGURATION_ID替换为工作流配置的 ID。
当与
daily版本配置和production工作流配置相关的 Dataform 工作流调用失败时,以下查询会提醒您:resource.type="dataform.googleapis.com/Repository" jsonPayload.@type="type.googleapis.com/google.cloud.dataform.logging.v1.WorkflowInvocationCompletionLogEntry" jsonPayload.terminalState="FAILED" jsonPayload.releaseConfigId="daily" jsonPayload.workflowConfigId="production"可选:如需验证查询,请使用查询结果窗格中的运行查询。
在查询结果窗格的标题中,点击创建提醒。如果窗口较窄,创建提醒选项可能会显示在操作菜单中。
在提醒详情窗格中,为提醒指定名称和说明:
在提醒名称字段中输入提醒的名称。例如:
Dataform: workflow failure。输入此提醒的说明。您也可以添加有助于通知接收人诊断问题的信息。 以下字符串总结了发出提醒的原因:
Log-based alert in project ${project} detected a failed Dataform workflow.如需详细了解如何设置此字段格式并定制其内容,请参阅使用用户定义的文档为通知添加注解。
要前进到下一步,请点击下一步。
在选择要包含在提醒中的日志窗格中,点击预览日志以检查查询和结果。
我们建议在日志浏览器查询窗格中构建查询。您在查询窗格中构建的查询也会显示在此窗格中。
如有必要,您可以在此窗格中修改查询。如果您修改了查询,请点击预览日志来检查结果。
点击下一步。
选择通知之间的最短时间间隔。如果此值被多次触发,您可以使用此值来控制从提醒收到的通知数量。对于此示例,请从选项中选择 5 分钟。
可选:选择突发事件自动关闭时长。默认情况下,突发事件自动关闭时长设置为 7 天。
点击下一步。
为提醒选择一个或多个通知渠道。在本示例中,请选择电子邮件通知渠道。
如果您已配置电子邮件通知渠道,则可以从列表中选择它。如未配置,请点击管理通知渠道并添加电子邮件渠道。如需了解如何创建通知渠道,请参阅创建和管理通知渠道。
点击保存。
现在,您可以测试基于日志的提醒了。如需了解如何测试提醒,请参阅测试基于日志的示例提醒政策。
后续步骤
- 了解如何手动触发运行。
- 了解如何使用 Workflows 和 Cloud Scheduler 安排运行。
- 了解如何使用 Dataform API 配置编译替换。
- 了解 Cloud Audit Logs 和监控。
- 了解 Logging 价格。