Google Dataflow作业监控器

时间:2017-11-24 03:47:25

标签: google-cloud-platform google-cloud-dataflow apache-beam

我正在编写一个应用来监控和查看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天内的作业。

非常感谢任何帮助。谢谢

2 个答案:

答案 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个存储桶的文件由我们的工作监视,它只是为我们的应用程序提供所有状态