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:
- Todas las tareas son tareas de transmisión.
- Las tareas usan el modelo de facturación por datos procesados.
- Los trabajos guardan archivos en un disco persistente, tanto estándar (HDD) como SSD.
- Los trabajos no usan GPUs.
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:
Recurso | Mé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étrica | Cadena 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:
En la Google Cloud consola, ve a la página Dataflow > Monitorización.
En el menú desplegable Predefinido, haga clic en Personalizar panel de control.
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:
En la Google Cloud consola, ve a la página Dataflow > Monitorización.
En el menú desplegable Predefinido, selecciona el panel de control personalizado.
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:
- Haz clic en Añadir widget.
- En el panel Añadir widget, selecciona Métrica.
- En el cuadro Título del widget, escribe un título para el gráfico (por ejemplo,)
Estimated cost (top 25)
. - Haz clic en PROMQL.
- Pega la consulta de PromQL que se ha mostrado anteriormente.
- Haz clic en Realizar una consulta.
- Haz clic en Aplicar.
- Opcional: Arrastra el gráfico para colocarlo en el panel de control.
Siguientes pasos
- Añade una línea de referencia para ver cuándo supera una métrica un umbral predefinido.
- Aprender a usar PromQL
- Más información sobre los paneles de control