【问题标题】:Google Dataflow job monitorGoogle Dataflow 作业监视器
【发布时间】:2017-11-24 03:47:24
【问题描述】:

我正在编写一个应用程序来监控和查看 Google 数据流作业。

为了获取有关 google 数据流作业的元数据,我正在探索此处列出的 REST API:

https://developers.google.com/apis-explorer/#search/dataflow/dataflow/v1b3/

我想知道是否有任何 API 可以执行以下操作:

1) 如果我们提供工作 ID 列表,则获取工作详细信息(有一个单独工作 ID 的 API,但我想要一个 ID 列表相同)

2)根据职位名称搜索或过滤职位。或者就此而言,过滤除职位状态之外的任何其他条件的职位。

3)获取与数据流作业相关的日志消息

4) 获取“所有”工作的记录,从时间开始。当前的 API 似乎只提供过去 30 天的工作记录。

任何帮助将不胜感激。谢谢你

【问题讨论】:

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


    【解决方案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 编写的“Worker Logs”和流水线中运行的用户代码。这些是在与管道关联的分布式 VM 上生成的,并被摄取到 Stackdriver 中。可以通过 Stackdriver Logging entries.list API 查询它们,方法是将它们包含在您的过滤器中:

    resource.type="dataflow_step"
    resource.labels.job_id="<YOUR JOB ID>"
    

    4) 获取“所有”工作的记录,从时间开始。当前的 API 似乎只提供过去 30 天的工作记录。

    数据流作业仅由服务保留 30 天。旧作业被删除,因此在 UI 或 API 中不可用。

    【讨论】:

    • 真的没有办法获取项目中所有数据流作业的列表吗?
    【解决方案2】:

    在我们的案例中,我们通过跟踪作业阶段并使用调度程序/cron 作业在一个文件中报告正在运行的作业的详细信息来实现此类功能。这个带有 1 个存储桶的文件被我们的工作监视,它只是为我们的应用程序提供所有状态

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-29
      • 2019-02-21
      • 2016-11-26
      • 2016-05-31
      • 2018-01-03
      • 1970-01-01
      • 2019-03-07
      • 1970-01-01
      相关资源
      最近更新 更多