我在Moloco的团队运行了大量的Dataflow管道(每小时和每天,主要是批处理作业),并且我们有时会计算每个管道的总成本,以确定我们可以为节省成本做出哪些改进。 在过去的几周里,我们的一位工程师通常会进入工作监控UI网页(通过https://console.cloud.google.com/dataflow?project= $ project-name),并通过查找工人数量,工人机器类型,总PD来手动计算成本和使用的记忆等。
最近,我们注意到现在该页面显示了“资源指标”,它将帮助我们节省计算成本的时间(以及之前公布的新定价模型)。
另一方面,因为我们每天运行大约60-80个数据流作业,所以计算每个作业的成本是耗时的。 有没有办法通过给定作业ID的API获取总vCPU,内存和PD / SSD使用率指标,可能通过''PipelineResult''或主节点的日志?如果现在不支持,你们计划在不久的将来吗? 我们想知道我们是否应该考虑编写我们自己的脚本或者能够提取每个工作ID的指标,并计算成本,但我们希望我们不必这样做。
谢谢!
答案 0 :(得分:6)
我是数据流团队的工程师之一。
我建议使用命令行工具列出这些指标并编写脚本来解析输出字符串中的指标,并根据这些指标计算成本。如果要对许多作业执行此操作,您可能还希望使用gcloud beta dataflow作业列表列出您的作业。我们正在研究解决方案,以便将来更容易获得。
确保您使用的是gcloud 135.0.0 +:
gcloud version
如果没有,您可以使用以下方式进行更新:
gcloud components update
使用有权访问正在运行作业的项目的帐户登录:
cloud auth login
设置项目
gcloud config set project <my_project_name>
运行此命令以列出指标并grep资源指标:
gcloud beta dataflow metrics list <job_id> --project=<my_project_name> | grep Service -B 1 -A 3
您的结果应如下所示:
name:
name: Service-mem_mb_seconds
origin: dataflow/v1b3
scalar: 192001
updateTime: '2016-11-07T21:23:46.452Z'
--
name:
name: Service-pd_ssd_gb_seconds
origin: dataflow/v1b3
scalar: 0
updateTime: '2016-11-07T21:23:46.452Z'
--
name:
name: Service-cpu_num
origin: dataflow/v1b3
scalar: 0
updateTime: '2016-11-07T21:23:46.452Z'
--
name:
name: Service-pd_gb
origin: dataflow/v1b3
scalar: 0
updateTime: '2016-11-07T21:23:46.452Z'
--
name:
name: Service-pd_gb_seconds
origin: dataflow/v1b3
scalar: 12500
updateTime: '2016-11-07T21:23:46.452Z'
--
name:
name: Service-cpu_num_seconds
origin: dataflow/v1b3
scalar: 50
updateTime: '2016-11-07T21:23:46.452Z'
--
name:
name: Service-pd_ssd_gb
origin: dataflow/v1b3
scalar: 0
updateTime: '2016-11-07T21:23:46.452Z'
--
name:
name: Service-mem_mb
origin: dataflow/v1b3
scalar: 0
updateTime: '2016-11-07T21:23:46.452Z'
与您相关的是:
注意:这些指标名称将来很快就会改变为: