Personaliza el panel de supervisión de Dataflow

En esta página, se muestra cómo personalizar el panel de supervisión del proyecto de Dataflow agregando un gráfico que consulte las métricas de Cloud Monitoring.

El panel de supervisión del proyecto te permite supervisar una colección de trabajos y ver su rendimiento y estado generales. El panel contiene un conjunto predeterminado de gráficos que son útiles para la mayoría de las cargas de trabajo. Si personalizas el panel, puedes agregar gráficos específicos para los requisitos de tu empresa.

Situación de ejemplo

Para mostrar cómo podrías personalizar el panel, supón que una organización desea hacer un seguimiento del costo estimado de los 25 trabajos principales de su proyecto.

Para este caso, supón que los trabajos tienen las siguientes características:

Selección de métricas

Se necesitan las siguientes métricas para estimar el costo de un trabajo, según los supuestos que se mencionan en la sección anterior:

RecursoMétrica pertinente
CPU (CPU virtual por hora) job/total_vcpu_time
Memoria (GB por hora) job/total_memory_usage_time
Datos procesados durante el Shuffle (GB) job/total_streaming_data_processed
Uso de Persistent Disk (GB por hora, estándar y SSD) job/total_pd_usage_time

Para obtener más información, consulta Precios de Dataflow.

Para saber qué recursos están disponibles en Monitoring, consulta Tipos de recursos supervisados.

Escribe una consulta de PromQL

Para consultar las métricas de Cloud Monitoring, usa Prometheus Query Language (PromQL). En esta sección, se muestra cómo escribir una consulta de PromQL para la situación creando cláusulas más pequeñas. En esta sección, no se supone que tengas conocimientos previos de PromQL. Para obtener más información, consulta PromQL en Cloud Monitoring.

Asigna nombres de métricas a cadenas de PromQL

Para usar las métricas de Monitoring en las consultas de PromQL, debes asignar el nombre de la métrica a una cadena de PromQL de la siguiente manera:

Nombre de la métricaCadena de 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

Para obtener más información, consulta Asigna métricas de Cloud Monitoring a PromQL.

Cómo compilar la consulta

Para obtener el costo estimado, calcula los precios de cada componente según el valor más actual de cada métrica. Las métricas se muestrean cada 60 segundos, por lo que, para obtener el valor más reciente, usa una función de ventana de 1 minuto y toma el valor máximo dentro de cada ventana.

  • Para obtener el costo de CPU estimado, primero convierte job/total_vcpu_time de segundos a horas. Multiplica el resultado por el precio de la CPU por CPU virtual y por hora.

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

    Esta fórmula proporciona el costo estimado de CPU para todos los trabajos del proyecto. Para obtener el costo de CPU estimado por trabajo, usa el operador de agregación sum y agrupa por ID de trabajo.

    sum(
      max_over_time(dataflow_googleapis_com:job_total_vcpu_time[1m]) / 3600 * CPU_PRICE
    ) by (job_id)
    
  • Para obtener el costo de memoria estimado, convierte job/total_memory_usage_time de segundos a horas. Multiplica el precio de la memoria por GB y por hora, y agrupa los resultados por ID de trabajo.

    #((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)
    
  • Para obtener el costo estimado de la reorganización, convierte job/total_streaming_data_processed de bytes a GB. Multiplica el precio de los datos procesados durante el shuffle por GB y agrupa los resultados por ID de trabajo.

    # 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)
    
  • Para obtener el costo estimado del uso del Persistent Disk, indexa la etiqueta storage_type para separar por tipo de disco (estándar o SSD). Convierte cada valor de GB-segundos a GB-horas y agrupa los resultados por ID de trabajo.

    # 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)
    
  • La suma de los valores anteriores proporciona el costo estimado por trabajo. Para obtener los 25 trabajos principales, usa un filtro de K superior:

    topk(25,
      # Sum the individual values.
    )
    

Escribe la consulta completa

A continuación, se muestra la consulta completa:

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)
)

Reemplaza las siguientes variables por los valores de la página de precios de Dataflow para tu región.

  • CPU_PRICE: Precio de la CPU, por CPU virtual por hora
  • MEMORY_PRICE: Precio de la memoria, por GB por hora
  • SHUFFLE_PRICE: Precio de aleatorización, por GB
  • STANDARD_PD_PRICE: Precio del disco persistente estándar, por GB y por hora
  • SSD_PD_PRICE: Precio del disco persistente SSD, por GB y por hora

Cómo editar el panel

Si no creaste un panel personalizado para Dataflow en este proyecto, crea uno de la siguiente manera:

  1. En la consola de Google Cloud , ve a la página Dataflow > Monitoring.

    Ir a Monitoring

  2. En el menú desplegable Predefinido, haz clic en Personalizar panel.

  3. Opcional: Ingresa un nombre para el panel en el cuadro Nombre de la vista personalizada.

Si ya creaste un panel personalizado, sigue estos pasos para editarlo:

  1. En la consola de Google Cloud , ve a la página Dataflow > Monitoring.

    Ir a Monitoring

  2. En el menú desplegable Predefinido, selecciona el panel personalizado.

  3. Haz clic en Editar panel.

Cómo agregar un gráfico de métricas

Para agregar un gráfico de métricas al panel, sigue estos pasos:

  1. Haz clic en Agregar widget.
  2. En el panel Agregar widget, selecciona Métrica.
  3. En el cuadro Título del widget, ingresa un título para el gráfico, como Estimated cost (top 25).
  4. Haz clic en PROMQL.
  5. Pega la consulta de PromQL que se mostró anteriormente.
  6. Haz clic en Ejecutar consulta.
  7. Haz clic en Aplicar.
  8. Opcional: Arrastra el gráfico para colocarlo en el panel.

¿Qué sigue?