我正在编写一个应用来监控和查看Google数据流作业。
要获取有关google dataflow作业的元数据,我正在探索此处列出的REST API:
https://developers.google.com/apis-explorer/#search/dataflow/dataflow/v1b3/
我想知道是否有任何API可以执行以下操作:
1)如果我们提供作业ID列表(有一个单独的作业ID的API,但我想要一个ID列表相同),请获取作业详细信息
2)根据工作名称搜索或过滤工作。或者就此而言,过滤除工作状态以外的任何其他标准的工作。
3)获取与数据流作业相关的日志消息
4)获取" all"的记录工作,从一开始。当前的API似乎仅记录过去30天内的作业。
非常感谢任何帮助。谢谢
答案 0 :(得分:1)
有关Dataflow REST API的其他文档,请访问:https://cloud.google.com/dataflow/docs/reference/rest/
分别解决您的每个问题:
1)如果我们提供作业ID列表(有一个单独的作业ID的API,但我想要一个ID列表相同),请获取作业详细信息
不,作业列表没有批处理方法。您需要使用projects.jobs.get
单独查询它们。
2)根据工作名称搜索或过滤工作。或者就此而言,过滤除工作状态以外的任何其他标准的工作。
目前唯一可用的其他过滤器是位置。
3)获取与数据流作业相关的日志消息
在Dataflow中有两种类型的日志消息:
"工作日志"由Dataflow服务生成,并提供有关整个作业执行的高级信息。这些可通过projects.jobs.messages.list
API获得。
还有"工人日志"由SDK和管道中运行的用户代码编写。这些是在与管道关联的分布式VM上生成的,并被提取到Stackdriver中。可以通过Stackdriver Logging entries.list
API查询它们,包括在您的过滤器中:
resource.type="dataflow_step"
resource.labels.job_id="<YOUR JOB ID>"
4)获取&#34; all&#34;的记录工作,从一开始。目前的API似乎仅记录过去30天内的工作记录。
数据流作业仅由服务保留30天。旧的作业将被删除,因此无法在UI或API中使用。
答案 1 :(得分:0)
在我们的案例中,我们通过跟踪作业阶段并使用scheduler / cron作业在一个文件中报告正在运行的作业的详细信息来实现此类功能。这个包含1个存储桶的文件由我们的工作监视,它只是为我们的应用程序提供所有状态