Dataflow recopila métricas de tus trabajos, lo que puede ayudarte a depurar errores, solucionar problemas de rendimiento o optimizar tu canalización. La interfaz de supervisión de Dataflow muestra visualizaciones de estas métricas. También puedes usar Cloud Monitoring para crear alertas o compilar consultas del Explorador de métricas.
Accede a las métricas de los trabajos
Para ver las métricas de un trabajo, sigue estos pasos:
En la consola de Google Cloud, ve a la página Dataflow > Trabajos.
Selecciona un trabajo.
Haz clic en la pestaña Métricas del trabajo.
Selecciona una métrica para ver.
Para acceder a información adicional en los gráficos de métricas de trabajo, haz clic en
Explorar datos.
Cada métrica se organiza en los siguientes paneles:
- Métricas de ajuste de escala automático
- Métricas generales
- Métricas de transmisión
- Métricas de recursos
- Métricas de entrada y salida
Asistencia y limitaciones
Cuando uses las métricas de Dataflow, ten en cuenta los siguientes detalles.
A veces, los datos del trabajo no están disponibles de forma intermitente. Cuando faltan datos, aparecen vacíos en los gráficos de supervisión de trabajos.
Algunos de estos gráficos son específicos solo de las canalizaciones de transmisión.
Para escribir datos de métricas, una cuenta de servicio administrada por el usuario debe tener el permiso de la API de IAM
monitoring.timeSeries.create
. Este permiso se incluye en el rol de trabajador de Dataflow.El servicio de Dataflow informa el tiempo de CPU reservado después de que se completan los trabajos. En el caso de los trabajos no delimitados (transmisión), el tiempo de CPU reservado solo se informa después de que los trabajos se cancelan o fallan. Por lo tanto, las métricas de trabajos no incluyen el tiempo de CPU reservado para los trabajos de transmisión.
Métricas de ajuste de escala automático
El ajuste de escala automático horizontal permite que Dataflow elija la cantidad adecuada de instancias de trabajador para tu trabajo y agregue o quite trabajadores según sea necesario.
En la sección Ajuste de escala automático de la pestaña Métricas del trabajo, se muestra la cantidad de trabajadores y la cantidad objetivo de trabajadores a lo largo del tiempo. Si tu trabajo usa Streaming Engine, también se muestra la cantidad mínima y máxima de trabajadores.
Para ver el historial de los cambios del ajuste de escala automático, haz clic en Más historial. Se muestra una tabla con información sobre el historial de trabajadores de tu trabajo.
Para ver información adicional del ajuste de escala automático para trabajos de transmisión, haz clic en la pestaña Ajuste de escala automático. Para obtener más información, consulta Supervisa el ajuste de escala automático de Dataflow.
Métricas generales
Las siguientes métricas aparecen en Métricas generales.
Actualidad de los datos
Esta métrica solo se aplica a los trabajos de transmisión.
La actualización de datos es la diferencia entre el momento en que se procesa un elemento de datos (tiempo de procesamiento) y la marca de tiempo del elemento de datos (hora del evento). Los valores más altos indican que hubo una demora más prolongada entre la hora del evento y el tiempo de procesamiento.
El gráfico de actualización de datos muestra el valor máximo de actualización de datos en cualquier momento. Dataflow procesa varios elementos en paralelo, por lo que el gráfico refleja el elemento con el retraso más grande en relación con el tiempo del evento.
Si aún no se han procesado algunos datos de entrada, la marca de agua de salida puede retrasarse, lo que afecta la actualidad de los datos. Una diferencia significativa entre la hora de la marca de agua y la hora del evento puede indicar una operación lenta o atascada. Para obtener más información, consulta Marcas de agua y datos retrasados en la documentación de Apache Beam.
El panel incluye los siguientes dos gráficos:
- Actualidad de los datos por etapas
- Actualidad de los datos
En la siguiente imagen, en el área destacada, se muestra una gran diferencia entre la hora del evento y la de la marca de agua de salida, lo que indica una operación lenta.
Los siguientes problemas pueden causar valores altos para esta métrica:
- Cuellos de botella de rendimiento: Si tu canalización tiene etapas con latencia del sistema alta o registros que indican transformaciones bloqueadas, la canalización podría tener problemas de rendimiento que podrían aumentar la actualidad de los datos. Para investigar más a fondo, consulta Soluciona problemas de trabajos lentos o atascados.
- Cuellos de botella de la fuente de datos: Si las fuentes de datos tienen acumulaciones pendientes, las marcas de tiempo del evento de los elementos pueden diferir de la marca de agua mientras esperan su procesamiento. Los trabajos pendientes grandes suelen deberse a cuellos de botella en el rendimiento o a problemas de la fuente de datos que se detectan mejor mediante la supervisión de las fuentes que usa la canalización.
- Las fuentes sin ordenar, como Pub/Sub, pueden producir marcas de agua atascadas, incluso mientras se generan a una velocidad alta. Esta situación ocurre porque los elementos no se muestran en orden de marca de tiempo y la marca de agua se basa en la marca de tiempo mínima sin procesar.
- Reintentos frecuentes: Si ves errores que indican que hay elementos que no se procesaron y se vuelven a procesar, esto indica que las marcas de tiempo más antiguas de los elementos que se vuelven a procesar pueden estar aumentando la actualidad de los datos. La lista de errores comunes de Dataflow puede ayudarte a solucionar problemas.
Para los trabajos de transmisión actualizados recientemente, es posible que la información sobre el estado del trabajo y la marca de agua no esté disponible. La operación de actualización realiza varios cambios que toman unos minutos en propagarse a la interfaz de supervisión de Dataflow. Prueba actualizar la interfaz de supervisión cinco minutos después de actualizar tu trabajo.
Latencia del sistema
Esta métrica solo se aplica a los trabajos de transmisión.
La latencia del sistema es la cantidad máxima de segundos actual que un elemento de datos lleva en procesamiento o en espera para que se lo procese. La métrica incluye cuánto tiempo esperan los elementos dentro de una fuente. Por ejemplo, si un destino de salida deja de aceptar solicitudes de escritura durante un período, es posible que los datos se acumulen en la fuente, lo que provocará que aumente la latencia del sistema. Si se reanudan las operaciones de escritura y la canalización puede ponerse al día, la latencia del sistema vuelve a su nivel de referencia.
Los siguientes casos son consideraciones adicionales:
- Para varias fuentes y receptores, la latencia del sistema es la cantidad máxima de tiempo que un elemento espera dentro de una fuente antes de que se la escriba en todos los receptores.
- A veces, una fuente no proporciona un valor para el período durante el cual un elemento espera dentro de la fuente. Además, es posible que el elemento no tenga metadatos para definir su hora del evento. En esta situación, la latencia del sistema se calcula a partir del momento en que la canalización recibe el elemento por primera vez.
El panel incluye los siguientes dos gráficos:
- Latencia del sistema por etapas
- Latencia del sistema
Capacidad de procesamiento
La capacidad de procesamiento es el volumen de datos que se procesan en cualquier momento. El panel incluye los siguientes gráficos:
- Capacidad de procesamiento por paso en elementos por segundo
- Capacidad de procesamiento por paso en bytes por segundo
Recuento de registros de error de los trabajadores
El Worker error log count (Recuento de registros de errores de los trabajadores) muestra la tasa de errores observados en todos los trabajadores en cualquier momento.
Métricas de transmisión
Las siguientes métricas aparecen en Métricas de transmisión.
Tareas pendientes
Esta métrica solo se aplica a los trabajos de transmisión.
En el panel Tareas pendientes, se proporciona información sobre los elementos que se deben procesar. El panel incluye los siguientes dos gráficos:
- Segundos de tareas pendientes (solo Streaming Engine)
- Bytes de tareas pendientes (con y sin Streaming Engine)
En el gráfico segundos de tareas pendientes, se muestra una estimación de la cantidad de tiempo en segundos necesarios para consumir las tareas pendientes actuales si no llegan datos nuevos y la capacidad de procesamiento no cambia. El tiempo estimado de tareas pendientes se calcula a partir de la capacidad de procesamiento y los bytes de tareas pendientes de la fuente de entrada que aún se deben procesar. La función de ajuste de escala automático de transmisión usa esta métrica para determinar cuándo escalar o reducir la escala verticalmente.
El gráfico Bytes de tareas pendientes muestra la cantidad de entradas sin procesar conocidas de una etapa en bytes. Esta métrica compara los bytes restantes que consume cada etapa con las etapas ascendentes. Para que esta métrica informe con precisión, cada fuente que transfiere la canalización debe configurarse de forma correcta. Las fuentes integradas como Pub/Sub y BigQuery ya son compatibles y están listas para usar, sin embargo, requieren una implementación adicional. Para obtener más detalles, consulta Ajuste de escala automático para fuentes no delimitadas personalizadas.
Procesando
Esta métrica solo se aplica a los trabajos de transmisión.
Cuando ejecutas una canalización de Apache Beam en el servicio de Dataflow, las tareas de canalización se ejecutan en las VMs de trabajador. En el panel Procesamiento, se proporciona información sobre la cantidad de tiempo que se procesaron las tareas en las VMs de trabajador. El panel incluye los siguientes dos gráficos:
- Mapa de calor de las latencias de procesamiento de los usuarios
- Latencias de procesamiento de los usuarios por etapa
El mapa de calor de las latencias de procesamiento de usuarios muestra las latencias máximas de operaciones en las distribuciones de los percentiles 50, 95 y 99. Usa el mapa de calor para ver si alguna operación de cola larga está causando una latencia alta general del sistema o si está afectando de manera negativa la actualización de datos en general.
Para solucionar un problema upstream antes de que se convierta en un problema downstream, establece una política de alertas para latencias altas en el percentil 50.
En el gráfico Latencias de procesamiento de usuarios por etapa, se muestra el percentil 99 para todas las tareas que los trabajadores procesan por etapa. Si el código de usuario causa un cuello de botella, en este gráfico se muestra qué etapa contiene el cuello de botella. Puedes usar los siguientes pasos para depurar la canalización:
Utiliza el gráfico para encontrar una etapa con una latencia inusualmente alta.
En la página de detalles del trabajo, en la pestaña Detalles de la ejecución, en Vista del gráfico, selecciona Flujo de trabajo de la etapa. En el gráfico Flujo de trabajo de la etapa, busca la etapa que tiene una latencia inusualmente alta.
Para encontrar las operaciones de usuario asociadas, en el gráfico, haz clic en el nodo de esa etapa.
Para encontrar detalles adicionales, navega a Cloud Profiler y usa Cloud Profiler a fin de depurar el seguimiento de pila en el intervalo de tiempo correcto. Busca las operaciones del usuario que identificaste en el paso anterior.
Paralelismo
Esta métrica solo se aplica a los trabajos de Streaming Engine.
El gráfico Procesamiento paralelo muestra la cantidad aproximada de claves que se usan para el procesamiento de datos de cada etapa. Dataflow escala según el paralelismo de una canalización.
Cuando Dataflow ejecuta una canalización, el tratamiento de datos se distribuye en varias máquinas virtuales (VMs) de Compute Engine, también conocidas como trabajadores. El servicio de Dataflow paraleliza y distribuye de forma automática la lógica de procesamiento de la canalización a los trabajadores. El procesamiento de cualquier clave determinada se serializa, por lo que la cantidad total de claves para una etapa representa el paralelismo máximo disponible en esa etapa.
Las métricas de paralelismo pueden ser útiles a fin de encontrar claves de acceso rápido o cuellos de botella para canalizaciones lentas o atascadas.
Persistencia
Esta métrica solo se aplica a los trabajos de transmisión.
El panel Persistencia proporciona información sobre la velocidad a la que una etapa de canalización específica escribe y lee el almacenamiento persistente en bytes por segundo. Los bytes leídos y escritos incluyen operaciones de estado de usuario y el estado de las redistribuciones persistentes, la eliminación duplicada, las entradas complementarias y el seguimiento de la marca de agua. Los codificadores de canalización y el almacenamiento en caché afectan los bytes leídos y escritos. Los bytes de almacenamiento pueden diferir de los bytes procesados debido al uso del almacenamiento interno y el almacenamiento en caché.
El panel incluye los siguientes dos gráficos:
- Escritura de almacenamiento
- Lectura de almacenamiento
Duplicados
Esta métrica solo se aplica a los trabajos de transmisión.
El gráfico Duplicados muestra la cantidad de mensajes procesados por una etapa en particular que se filtraron como duplicados.
Dataflow admite muchas fuentes y receptores que garantizan la entrega at least once
. La desventaja de la entrega at least once
es que puede generar duplicados.
Dataflow garantiza la entrega exactly once
, lo que significa que los duplicados se excluyen de forma automática.
Las etapas descendentes no vuelven a procesar los mismos elementos, lo que garantiza que el estado y los resultados no se vean afectados.
Se pueden optimizar los recursos y el rendimiento de la canalización mediante la reducción de la cantidad de duplicados que se producen en cada etapa.
Temporizadores
Esta métrica solo se aplica a los trabajos de transmisión.
El panel Cronómetros proporciona información sobre la cantidad de cronómetros pendientes y la cantidad de cronómetros ya procesados en una etapa de canalización en particular. Debido a que las ventanas se basan en cronómetros, esta métrica te permite realizar un seguimiento del progreso de las ventanas.
El panel incluye los siguientes dos gráficos:
- Temporizadores pendientes por etapa
- Procesamiento de temporizadores por etapa
Estos gráficos muestran la frecuencia con la que las ventanas están pendientes o se procesan en un momento específico. En el gráfico Temporizadores pendientes por etapa, se indica cuántas ventanas se retrasan debido a cuellos de botella. En el gráfico Procesamiento de temporizadores por etapa, se indica cuántas ventanas recopilan elementos.
Estos gráficos muestran todos los temporizadores de trabajo, por lo que si se usan temporizadores en otra parte de tu código, esos temporizadores también aparecen en estos gráficos.
Métricas de recursos
Las siguientes métricas aparecen en Métricas de recursos.
Uso de CPU
El uso de la CPU es la cantidad de CPU utilizada dividida por la cantidad de CPU disponible para el procesamiento. Esta métrica por trabajador se muestra como un porcentaje. El panel incluye los siguientes cuatro gráficos:
- Uso de CPU (todos los trabajadores)
- Uso de CPU (estadísticas)
- Uso de CPU (los 4 más altos)
- Uso de CPU (los 4 más bajos)
Uso de memoria
El uso de memoria es la cantidad estimada de memoria que usan los trabajadores en bytes por segundo. El panel incluye los siguientes dos gráficos:
- Uso máximo de memoria de los trabajadores (bytes estimados por segundo)
- Uso de memoria (bytes estimados por segundo)
El gráfico de Uso máximo de memoria de los trabajadores proporciona información sobre los trabajadores que usan más memoria en el trabajo de Dataflow en cada momento en el tiempo. Si, en diferentes puntos de un trabajo, el trabajador que usa la cantidad máxima de memoria cambia, la misma línea en el gráfico muestra los datos de varios trabajadores. Cada dato de la línea muestra los datos del trabajador que usa la cantidad máxima de memoria en ese momento. En el gráfico, se compara la memoria estimada que usa el trabajador con el límite de memoria en bytes.
Puedes usar este gráfico para solucionar problemas de memoria insuficiente (OOM). Las fallas de memoria insuficiente del trabajador no se muestran en este gráfico.
En el gráfico Uso de memoria, se muestra una estimación de la memoria que usan todos los trabajadores en el trabajo de Dataflow en comparación con el límite de memoria en bytes.
Métricas de entrada y salida
Si tu trabajo de transmisión de Dataflow lee o escribe registros mediante Pub/Sub, la pestaña Métricas del trabajo muestra las métricas de las operaciones de lectura o escritura de Pub/Sub.
Se combinan todas las métricas de entrada del mismo tipo y también se combinan todas las métricas de salida. Por ejemplo, todas las métricas de Pub/Sub se agrupan en una sección. Cada tipo de métrica está organizado en una sección separada. Para cambiar las métricas que se muestran, selecciona la sección a la izquierda que mejor represente las métricas que buscas. En las siguientes imágenes, se muestran todas las secciones disponibles.
Los siguientes dos gráficos se muestran en las secciones Métricas de entrada y Métricas de salida.
Solicitudes por segundo
Las solicitudes por segundo son la tasa de solicitudes a la API para leer o escribir datos que realizan la fuente o el receptor en relación con el tiempo. Si esta tasa disminuye a cero, o si disminuye de manera significativa durante un período prolongado relativo al comportamiento esperado, es posible que la canalización se bloquee para realizar ciertas operaciones. Además, es posible que no haya datos para leer. En ese caso, revisa los pasos del trabajo que tienen una marca de agua de sistema alta. Además, examina los registros del trabajador para detectar errores o indicaciones sobre el procesamiento lento.
Errores de respuesta por segundo, según tipo de error
Los errores de respuesta por segundo según el tipo de error son la tasa de solicitudes incorrectas a la API para leer o escribir datos por fuente o receptor a lo largo del tiempo. Si se producen estos errores con frecuencia, estas solicitudes a la API pueden ralentizar el procesamiento. Estas solicitudes a la API con errores deben investigarse. Para solucionar estos problemas, revisa los códigos de error de entrada y salida generales. Revisa también cualquier documentación específica del código de error que use la fuente o el receptor, como los códigos de error de Pub/Sub.
Si deseas obtener más información sobre situaciones en las que puedes usar estas métricas para la depuración, consulta Herramientas para la depuración en “Soluciona problemas de trabajos lentos o atascados”.
Use Cloud Monitoring
Dataflow está completamente integrado en Cloud Monitoring. Usa Cloud Monitoring para las siguientes tareas:
- Crea alertas cuando tu trabajo supere un umbral definido por el usuario.
- Usa el Explorador de métricas para crear consultas y ajustar el período de las métricas.
Si deseas obtener instrucciones para crear alertas y usar el Explorador de métricas, consulta Usa Cloud Monitoring para canalizaciones de Dataflow.
Crea alertas de Cloud Monitoring
Cloud Monitoring te permite crear alertas cuando tu trabajo de Dataflow supera un umbral definido por el usuario. Para crear una alerta de Cloud Monitoring a partir de un gráfico de métricas, haz clic en Crear política de alertas.
Si no puedes ver los gráficos de supervisión o crear alertas, es posible que necesites permisos de Monitoring adicionales.
Ver en el Explorador de métricas
Puedes ver los gráficos de métricas de Dataflow en el Explorador de métricas, en el que puedes compilar consultas y ajustar el período de las métricas.
Para ver los gráficos de Dataflow en el Explorador de métricas, en la vista Métricas del trabajo, abrir
Más opciones de gráfico y haz clic en Ver en el Explorador de métricas.Cuando ajustas el período de las métricas, puedes seleccionar una duración predefinida o seleccionar un intervalo de tiempo personalizado para analizar tu trabajo.
De forma predeterminada, para los trabajos de transmisión y los trabajos por lotes en tránsito, la pantalla muestra las seis horas anteriores de las métricas de ese trabajo. En el caso de los trabajos de transmisión detenidos o completados, la pantalla predeterminada muestra todo el tiempo de ejecución de la duración del trabajo.
Métricas de E/S de Dataflow
Puedes ver las siguientes métricas de E/S de Dataflow en el Explorador de métricas:
job/pubsub/write_count
: Son solicitudes de publicación de Pub/Sub de PubsubIO.Write en trabajos de Dataflow.job/pubsub/read_count
: Son solicitudes de extracción de Pub/Sub de Pubsub.IO.Read en trabajos de Dataflow.job/bigquery/write_count
: Solicitudes de publicación de BigQuery de BigQueryIO.Write en trabajos de Dataflow Las métricasjob/bigquery/write_count
están disponibles en canalizaciones de Python mediante la transformación WriteToBigQuery conmethod='STREAMING_INSERTS'
habilitado en Apache Beam v2.28.0 o posterior. Esta métrica está disponible para las canalizaciones por lotes y de transmisión.- Si tu canalización usa una fuente o receptor de BigQuery, para solucionar problemas de cuota, usa las métricas de la API de BigQuery Storage.
Para obtener la lista completa de métricas de Dataflow, consulta la documentación de métricas deGoogle Cloud .
¿Qué sigue?
- Soluciona problemas de trabajos lentos o atascados
- Afina el ajuste de escala automático horizontal para canalizaciones de transmisión
- Optimiza los costos