BigQuery - 如何在 Cloud Logging 中查看失败的预定查询?

Posted

技术标签:

【中文标题】BigQuery - 如何在 Cloud Logging 中查看失败的预定查询?【英文标题】:BigQuery - How to see failed scheduled queries in Cloud Logging? 【发布时间】:2021-02-28 19:42:11 【问题描述】:

我想在 Cloud Monitoring 信息中心中监控我的 BigQuery 预定查询的状态。我创建了几个基于日志的指标来跟踪其他服务/资源中的错误,但是在 Cloud Logging 中找不到任何计划查询错误的指示。

从 BigQuery UI 中的计划查询页面,我可以检查失败计划查询的运行详细信息,它会显示一些解释错误的日志条目,例如

9:02:59 AM  Error code 8 : Resources exceeded during query execution: Not enough resources for query planning - too many subqueries or query is too complex..; JobID: PROJECT:12345abc-0000-12a3-1234-123456abcdf   
9:00:17 AM  Starting to process the query job with no parameters.   
9:00:00 AM  Dispatched run to data source with id 1234567890

但由于某种原因,我在 Cloud Logging 中找不到任何这些消息。对于成功的作业,BigQuery 日志中有一些条目,但失败的作业完全丢失。

知道如何在 Cloud Logging 或 Cloud Monitoring 中查看失败的预定查询吗?

【问题讨论】:

基于日志的指标定义看起来如何? 我尝试了很多东西,但是例如使用 resource.type="bigquery_resource" "scheduled" 我可以找到与成功的预定查询相关的日志。 【参考方案1】:

您可以使用以下高级过滤器来过滤与“jobservice.insert”相关的所有 BigQuery 错误

resource.type="bigquery_resource"
protoPayload.serviceName="bigquery.googleapis.com"
protoPayload.methodName="jobservice.insert"
severity: "ERROR"

这是该查询的结果:

即使是一个简单的查询,例如:

resource.type="bigquery_resource"
severity: "ERROR"

能够检索所有与 BigQuery 相关的错误,您可以在此处看到:

找到与失败的预定查询相关的查询后,您可以单击结果的 protopayload 并选择“显示匹配条目”以开始构建您自己的高级查询。

我能够使用 Advanced logs queries 和 BigQuery queries 文档组装此过滤器。

【讨论】:

感谢您的建议!不幸的是,过滤器没有显示失败的查询。从 BigQuery UI(计划查询 > 运行详细信息)我看到有一个失败的查询,例如2020 年 10 月 4 日上午 9:00,但在该时间运行上述过滤器不会显示任何日志。 您是否能够在不使用 resource.type="bigquery_resource" 以外的任何过滤器的情况下在日志中找到错误?如果您使用这种方法可以找到错误,我建议您从那里开始构建过滤器,您可以单击结果的 protopayload 并选择“显示匹配条目”以获取 Log Explorer 使用的确切代码。 不,这就是问题所在。我看不到任何与失败的工作有关的东西。没有错误,没有插入作业,什么都没有。 我将编辑我的答案,因为我对查询进行了一些修改,并在我的结果中显示图像。【参考方案2】:

请验证您拥有的权限 - 在我被设置为所有者的项目中,我能够在 Cloud Logging 中看到失败的计划查询。对于另一个项目,我只是一名编辑,我无法看到错误,就像你的情况一样。

下面的代码有效(例如,我能够得到与“获取驱动器凭据时权限被拒绝”相关的错误 - 运行预定查询的服务帐户的 Google 驱动器文件中缺少凭据):

resource.type="bigquery_resource"
protoPayload.serviceName="bigquery.googleapis.com"
protoPayload.methodName="jobservice.insert"
severity=ERROR

【讨论】:

以上是关于BigQuery - 如何在 Cloud Logging 中查看失败的预定查询?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 google.cloud 导入 bigquery 模块

如何在气流中配置 Google Cloud BigQuery

使用 Google Cloud Datalab 时如何将 .gz 文件加载到 BigQuery?

从 Google Cloud Datalab 向 BigQuery 插入数据时如何调试解析错误?

如何使用R将Google Cloud Datalab输出保存到BigQuery中

如何将数据框从 Cloud Datalab 导出到 BigQuery 表?