自定义 Dataflow 监控信息中心

本页面介绍了如何通过添加用于查询 Cloud Monitoring 指标的图表,来自定义 Dataflow 项目监控信息中心

借助项目监控信息中心,您可以监控一系列作业,并查看其总体健康状况和性能。该信息中心包含一组适用于大多数工作负载的默认图表。通过自定义信息中心,您可以添加满足您业务要求的特定图表。

示例场景

为了说明如何自定义信息中心,假设某个组织希望跟踪其项目中前 25 个作业的估算费用。

在此场景中,假设这些作业具有以下特征:

选择指标

如果上一部分列出的假设成立,则需要使用以下指标来估算作业的费用:

资源相关指标
CPU(每小时 vCPU) job/total_vcpu_time
内存(每小时 GB) job/total_memory_usage_time
shuffle 期间处理的数据 (GB) job/total_streaming_data_processed
永久性磁盘用量(每小时 GB,标准和 SSD) job/total_pd_usage_time

如需了解详情,请参阅 Dataflow 价格

如需了解 Monitoring 中可用的资源,请参阅受监控的资源类型

编写 PromQL 查询

如需查询 Cloud Monitoring 中的指标,请使用 Prometheus 查询语言 (PromQL)。本部分介绍了如何通过从较小的子句构建 PromQL 查询来针对此场景编写查询。本部分并不假定您之前有 PromQL 使用经验。如需了解详情,请参阅 Cloud Monitoring 中的 PromQL

将指标名称映射到 PromQL 字符串

如需在 PromQL 查询中使用 Monitoring 指标,您必须将指标名称映射到 PromQL 字符串,如下所示:

指标名称PromQL 字符串
job/total_vcpu_time dataflow_googleapis_com:job_total_vcpu_time
job/total_memory_usage_time dataflow_googleapis_com:job_total_memory_usage_time
job/total_streaming_data_processed dataflow_googleapis_com:job_total_streaming_data_processed
job/total_pd_usage_time dataflow_googleapis_com:job_total_pd_usage_time

如需了解详情,请参阅将 Cloud Monitoring 指标映射到 PromQL

构建查询

如需获取估算费用,请根据每个指标的最新值计算每个组件的价格。指标每 60 秒采样一次,因此要获取最新值,请使用 1 分钟的窗口函数,并获取每个窗口内的最大值。

  • 如需获取估算的 CPU 费用,请先将 job/total_vcpu_time 从秒转换为小时。乘以每个 vCPU 每小时的 CPU 价格。

    # ((vCPU time)[Bucket 1m] / Seconds per hour * vCPU Price)
    max_over_time(dataflow_googleapis_com:job_total_vcpu_time[1m]) / 3600 * CPU_PRICE
    

    此公式会提供项目中所有作业的估算 CPU 费用。如需获取每项作业的估算 CPU 费用,请使用 sum 汇总运算符并按作业 ID 分组。

    sum(
      max_over_time(dataflow_googleapis_com:job_total_vcpu_time[1m]) / 3600 * CPU_PRICE
    ) by (job_id)
    
  • 如需获取估算的内存费用,请将 job/total_memory_usage_time 从秒转换为小时。乘以每 GB 每小时的内存价格,并按作业 ID 分组。

    #((Memory time)[Bucket 1m] / Seconds per hour) * Memory Price
    sum(
      max_over_time(dataflow_googleapis_com:job_total_memory_usage_time[1m]) / 3600 * MEMORY_PRICE
    ) by (job_id)
    
  • 如需获取估算的 shuffle 费用,请将 job/total_streaming_data_processed 从字节转换为 GB。乘以每 GB 在 shuffle 期间处理的数据的价格,并按作业 ID 分组。

    # Shuffle Billing. Reported once every 60 seconds, measured in bytes.
    # Formula: (Shuffle Data)[Bucket 1m] / (Bytes in GB) * (Shuffle Price)
    sum(
      max_over_time(
        dataflow_googleapis_com:job_total_streaming_data_processed[1m]
     ) / 1000000000 * SHUFFLE_PRICE
    ) by (job_id)
    
  • 如需获取估算的永久性磁盘用量费用,请对 storage_type 标签进行索引,以按磁盘类型(标准或 SSD)进行区分。将每个值从 GB-秒转换为 GB-小时,并按作业 ID 分组。

    # Formula: ((Standard PD time)[Bucket 1m] / Seconds per hour) * Standard PD price
    sum(
      max_over_time(
        dataflow_googleapis_com:job_total_pd_usage_time{storage_type="HDD"}[1m]
      ) / 3600 * STANDARD_PD_PRICE
    ) by (job_id)
    
    # Formula: ((SSD PD time)[Bucket 1m] / Seconds per hour) * SSD PD price
    sum(
      max_over_time(
        dataflow_googleapis_com:job_total_pd_usage_time{storage_type="SSD"}[1m]
      ) / 3600 * SSD_PD_PRICE
    ) by (job_id)
    
  • 将上述值相加可得每项作业的估算费用。如需获取前 25 个作业,请使用前 K 个作业过滤条件:

    topk(25,
      # Sum the individual values.
    )
    

编写完整的查询

下面显示了完整查询:

topk(25,
sum(
  max_over_time(
    dataflow_googleapis_com:job_total_vcpu_time[1m]) / 3600 * CPU_PRICE
  )
  by (job_id) +
sum(
  max_over_time(
    dataflow_googleapis_com:job_total_memory_usage_time[1m]) / 3600 * MEMORY_PRICE
  )
  by (job_id) +
sum(
  max_over_time(
    dataflow_googleapis_com:job_total_streaming_data_processed[1m]) / 1000000000 * SHUFFLE_PRICE
  )
  by (job_id) +
sum(
  max_over_time(
    dataflow_googleapis_com:job_total_pd_usage_time{storage_type="HDD"}[1m]) / 3600 * STANDARD_PD_PRICE
  )
  by (job_id) +
sum(
  max_over_time(
    dataflow_googleapis_com:job_total_pd_usage_time{storage_type="SSD"}[1m]) / 3600 * SSD_PD_PRICE
  )
  by (job_id)
)

将以下变量替换为您所在区域的 Dataflow 价格页面中的值。

  • CPU_PRICE:CPU 价格(每个 vCPU 每小时)
  • MEMORY_PRICE:内存价格(每 GB 每小时)
  • SHUFFLE_PRICE:Shuffle 价格(每 GB)
  • STANDARD_PD_PRICE:标准永久性磁盘价格(每 GB 每小时)
  • SSD_PD_PRICE:SSD 永久性磁盘价格(每 GB 每小时)

修改信息中心

如果您之前未在此项目中为 Dataflow 创建自定义信息中心,请按照以下步骤创建:

  1. 在 Google Cloud 控制台中,前往 Dataflow > Monitoring 页面。

    转到“监控”

  2. 预定义下拉菜单中,点击自定义信息中心

  3. 可选:在自定义视图名称框中输入信息中心的名称。

如果您之前已创建自定义信息中心,请执行以下步骤来修改该信息中心:

  1. 在 Google Cloud 控制台中,前往 Dataflow > Monitoring 页面。

    转到“监控”

  2. 预定义下拉菜单中,选择自定义信息中心。

  3. 点击 修改信息中心

添加指标图表

如需将指标图表添加到信息中心,请执行以下步骤:

  1. 点击添加微件
  2. 添加 widget 窗格中,选择指标
  3. widget 标题框中,输入图表的标题,例如 Estimated cost (top 25)
  4. 点击 PROMQL
  5. 粘贴之前显示的 PromQL 查询。
  6. 点击运行查询
  7. 点击应用
  8. 可选:拖动图表以将其放置在信息中心内。

后续步骤