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 插入数据时如何调试解析错误?