Puedes ver los gráficos en la pestaña Métricas del trabajo de la página de Dataflow en la consola de Google Cloud. Cada métrica se organiza en los siguientes paneles:
Métricas generales
- Ajuste de escala automático
- Capacidad de procesamiento
- Recuento de registros de error de los trabajadores
Métricas de transmisión (solo canalizaciones de transmisión)
- Actualidad de los datos (con y sin Streaming Engine)
- Latencia del sistema (con y sin Streaming Engine)
- Tareas pendientes
- Procesamiento (solo Streaming Engine)
- Paralelismo (solo Streaming Engine)
- Persistencia (solo Streaming Engine)
- Duplicados (solo Streaming Engine)
- Temporizadores (solo Streaming Engine)
Métricas de recursos
Métricas de entradas
Métricas de salidas
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”.
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.
Accede a las métricas de los trabajos
- Accede a la consola de Google Cloud.
- Selecciona tu proyecto de Google Cloud.
- Abre el menú de navegación y selecciona Dataflow.
- En la lista de trabajos, haz clic en el nombre de tu trabajo. Se abrirá la página Detalles del trabajo.
- Haz clic en la pestaña Métricas del trabajo.
Para acceder a información adicional en los gráficos de métricas de trabajo, haz clic en
Explorar datos.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 PubsubIO.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 de Google Cloud.
Métricas de etapas y trabajadores
En las siguientes secciones se proporcionan detalles sobre las etapas y las métricas de trabajadores disponibles en la interfaz de supervisión.
Ajuste de escala automático
El servicio de Dataflow elige automáticamente la cantidad de instancias de trabajadores necesarias para ejecutar el trabajo de ajuste de escala automático. La cantidad de instancias de trabajador puede variar con el tiempo según los requisitos del trabajo.
Para ver el historial de los cambios del ajuste de escala automático, haz clic en el botón Más historial. Se muestra una tabla con información sobre el historial de trabajadores de tu canalización.
Capacidad de procesamiento
La capacidad de procesamiento es el volumen de datos que se procesan en cualquier momento. Esta métrica por paso se muestra como una cantidad de elementos por segundo. Para ver esta métrica en bytes por segundo, consulta el gráfico Capacidad de procesamiento (bytes/s) más abajo en la página.
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.
Actualidad de los datos (con y sin Streaming Engine)
La métrica de actualidad de los datos muestra la diferencia en segundos entre la marca de tiempo del elemento de datos y la hora en que se procesa el evento en la canalización. El elemento de datos recibe una marca de tiempo cuando se produce un evento en el elemento, como un evento de clic en un sitio web o una transferencia de Pub/Sub. La marca de agua de salida es la hora en que se procesan los datos.
En cualquier momento, el trabajo de Dataflow se encuentra procesando varios elementos. Los datos del gráfico de actualidad de los datos muestran el elemento con el retraso más grande en relación con el tiempo del evento. Por lo tanto, la misma línea del gráfico muestra los datos de varios elementos. Cada dato de la línea muestra los datos para el elemento más lento en esa etapa de la canalización.
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 los trabajos de transmisión actualizados recientemente, es posible que el estado del trabajo y la información de la marca de agua no estén disponibles. 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 5 minutos después de la actualización de tu trabajo.
Para obtener más información, consulta Marcas de agua y datos tardíos 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 imagen anterior, en el área destacada, se muestra una diferencia sustancial entre la hora del evento y la de la marca de agua de salida, lo que indica una operación lenta.
Las métricas de actualidad de datos altas (por ejemplo, las métricas que indican que los datos son menos recientes) pueden deberse a la siguiente razón:
- 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 problemas de rendimiento que podrían aumentar la actualidad de los datos. Sigue estos lineamientos para solucionar problemas de canalizaciones lentas a fin de investigar más a fondo.
- 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.
- Nota: 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.
Latencia del sistema (con y sin Streaming Engine)
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. Esta métrica indica cuánto tiempo espera un elemento dentro de cualquier fuente en la canalización. La duración máxima se ajusta después del procesamiento. 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
Tareas pendientes
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.
Procesamiento (solo Streaming Engine)
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 (solo 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 (solo Streaming Engine)
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 (solo Streaming Engine)
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 (solo Streaming Engine)
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.
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, se muestran las métricas de entrada y las métricas de salida.
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 la documentación general de código de error de E/S. 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.