首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用python实时监视Bigquery中特定表的Stackdriver日志?

如何使用python实时监视Bigquery中特定表的Stackdriver日志?
EN

Stack Overflow用户
提问于 2020-01-30 07:00:43
回答 2查看 506关注 0票数 0

我正在使用BI工具查看Bigquery中的数据。数据分布在多个表中,因此在查询中有几个联接,以获得所需格式的数据。由于处理所有这些数据花费了一分钟时间,而且我希望有一种实时的体验,所以我创建了一个调度的查询来运行这个查询,它可以连接并将输出保存到一个表中。表中的数据每30分钟从ETL工具中输入(增量负载)。这将创建Bigquery来加载数据。

我有一个特定的表,在这个表的作业完成后,我想运行预定的查询。

我在调度查询中禁用了调度,因此它只能在API调用期间运行。我编写了一个python脚本,它将一个API请求发送到预定的查询。

在python中是否有任何方式实时监视特定Bigquery表的日志,因此当作业状态更改为特定表的“成功”时,我将向调度查询发送API请求以运行调度查询?

我看到了Stackdriver logging python code,似乎需要反复发出API请求才能模拟实时监视。对于特定的表,我似乎也不能过滤API请求中的结果,我从日志结果中为我编写了一些脚本。

有本土化的图书馆吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-04 07:17:48

找到了一个解决方案,但它使用了其他谷歌服务。

Cloud Logging有一个名为Sink的特性,在这里我们可以将日志指向Cloud Pub/Sub主题。

我们可以从Cloud Functions调用Cloud Pub/Sub

Cloud Functions将使用python代码向Scheduled query发送API请求。

票数 0
EN

Stack Overflow用户

发布于 2020-01-30 14:45:32

如果您提到的过滤器是正确的,这应该是有效的:

代码语言:javascript
复制
from google.cloud import logging
from google.cloud.logging import DESCENDING

filter = 'resource.type="bigquery_resource" AND protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.load.destinationTable.tableId="tableID" AND log_name="projects/projectID/logs/cloudaudit.googleapis.com%2Fdata_access" AND proto_payload.method_name="jobservice.jobcompleted'



for element in logging_client.list_entries(order_by=DESCENDING, filter_=filter): 
     .... YOUR LOGIC HERE ...

如果您需要一个实时解决方案(一些等待日志到达的代码),您应该自己实现。上面的代码将带所有与您的过滤器相关的日志,按日期降序排序。如果只想列出最后的日志,还应该更改筛选器,添加时间戳筛选器。

如果你有任何问题,请随便问我。我希望它能帮上忙

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59980623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档