Personalizar el panel de control de monitorización de Dataflow

En esta página se muestra cómo personalizar el panel de control de monitorización de proyectos de Dataflow añadiendo un gráfico que consulte métricas de Cloud Monitoring.

El panel de control de monitorización de proyectos te permite monitorizar una colección de trabajos y ver su estado y rendimiento generales. El panel de control contiene un conjunto predeterminado de gráficos que son útiles para la mayoría de las cargas de trabajo. Al personalizar el panel de control, puede añadir gráficos que se ajusten a los requisitos de su empresa.

Caso de ejemplo

Para mostrar cómo se puede personalizar el panel de control, supongamos que una organización quiere monitorizar el coste estimado de las 25 tareas principales de su proyecto.

En este caso, supongamos que los trabajos tienen las siguientes características:

Elegir métricas

Para estimar el coste de un trabajo, se necesitan las siguientes métricas, teniendo en cuenta las suposiciones que se indican en la sección anterior:

RecursoMétrica pertinente
CPU (vCPU por hora) job/total_vcpu_time
Memoria (GB por hora) job/total_memory_usage_time
Datos procesados durante la fase de barajado (GB) job/total_streaming_data_processed
Uso de discos persistentes (GB por hora, estándar y SSD) job/total_pd_usage_time

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

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

Escribir una consulta de PromQL

Para consultar métricas de Cloud Monitoring, usa el lenguaje de consulta de Prometheus (PromQL). En esta sección se muestra cómo escribir una consulta PromQL para este caso práctico. Para ello, se construye a partir de cláusulas más pequeñas. En esta sección no se presupone ningún conocimiento previo de PromQL. Para obtener más información, consulta PromQL en Cloud Monitoring.

Asignar nombres de métricas a cadenas de PromQL

Para usar métricas de Monitoring en consultas de PromQL, debes asignar el nombre de la métrica a una cadena de PromQL, como se indica a continuación:

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 Asignar métricas de Cloud Monitoring a PromQL.

Crear la consulta

Para obtener el coste estimado, calcula los precios de cada componente en función del 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, debe usar una función de ventana de 1 minuto y tomar el valor máximo de cada ventana.

  • Para obtener el coste estimado de la CPU, primero convierte job/total_vcpu_time de segundos a horas. Multiplica el resultado por el precio de la CPU por vCPU y 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 coste de CPU estimado de todas las tareas del proyecto. Para obtener el coste de CPU estimado por trabajo, usa el operador de agregación sum y agrupa los resultados 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 coste de memoria estimado, convierte job/total_memory_usage_time de segundos a horas. Multiplica el resultado por el precio de la memoria por GB y 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 coste estimado de la aleatorización, convierte job/total_streaming_data_processed de bytes a GB. Multiplica el resultado por el precio de los datos procesados durante el shuffle por GB y agrupa los resultados por ID de tarea.

    # 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 coste estimado del uso de discos persistentes, indexa por 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)
    
  • Si sumas los valores anteriores, obtendrás el coste estimado por trabajo. Para obtener las 25 tareas principales, usa un filtro de las K tareas principales:

    topk(25,
      # Sum the individual values.
    )
    

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

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

  • CPU_PRICE: precio de la CPU por vCPU y hora
  • MEMORY_PRICE: precio de la memoria por GB y hora
  • SHUFFLE_PRICE: precio aleatorio por GB
  • STANDARD_PD_PRICE: precio del disco persistente estándar por GB y hora
  • SSD_PD_PRICE: precio del disco persistente SSD por GB y hora

Editar el panel de control

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

  1. En la Google Cloud consola, ve a la página Dataflow > Monitorización.

    Ir a Monitoring

  2. En el menú desplegable Predefinido, haga clic en Personalizar panel de control.

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

Si ya has creado un panel de control personalizado, sigue estos pasos para editarlo:

  1. En la Google Cloud consola, ve a la página Dataflow > Monitorización.

    Ir a Monitoring

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

  3. Haz clic en Editar panel de control.

Añadir un gráfico de métricas

Para añadir un gráfico de métricas al panel de control, sigue estos pasos:

  1. Haz clic en Añadir widget.
  2. En el panel Añadir widget, selecciona Métrica.
  3. En el cuadro Título del widget, escribe un título para el gráfico (por ejemplo,) Estimated cost (top 25).
  4. Haz clic en PROMQL.
  5. Pega la consulta de PromQL que se ha mostrado anteriormente.
  6. Haz clic en Realizar una consulta.
  7. Haz clic en Aplicar.
  8. Opcional: Arrastra el gráfico para colocarlo en el panel de control.

Siguientes pasos