arrow_back

Procesamiento de datos sin servidores con Dataflow: Monitoring, Logging y Error Reporting para trabajos de Dataflow

Acceder Unirse
Obtén acceso a más de 700 labs y cursos

Procesamiento de datos sin servidores con Dataflow: Monitoring, Logging y Error Reporting para trabajos de Dataflow

Lab 2 horas universal_currency_alt 5 créditos show_chart Avanzado
info Es posible que este lab incorpore herramientas de IA para facilitar tu aprendizaje.
Obtén acceso a más de 700 labs y cursos

Descripción general

En este lab, aprenderás a hacer lo siguiente:

  • Crear una política de alertas.
  • Ejecutar soluciones de problemas simples para canalizaciones.
  • Ver cómo funcionan las pestañas Diagnóstico y BQ.
  • Explorar la página de Error Reporting.

Requisitos previos

Conocimientos básicos sobre Python

Configuración y requisitos

En cada lab, recibirá un proyecto de Google Cloud y un conjunto de recursos nuevos por tiempo limitado y sin costo adicional.

  1. Accede a Qwiklabs desde una ventana de incógnito.

  2. Ten en cuenta el tiempo de acceso del lab (por ejemplo, 1:15:00) y asegúrate de finalizarlo en el plazo asignado.
    No existe una función de pausa. Si lo necesita, puede reiniciar el lab, pero deberá hacerlo desde el comienzo.

  3. Cuando esté listo, haga clic en Comenzar lab.

  4. Anote las credenciales del lab (el nombre de usuario y la contraseña). Las usarás para acceder a la consola de Google Cloud.

  5. Haga clic en Abrir Google Console.

  6. Haga clic en Usar otra cuenta, copie las credenciales para este lab y péguelas en el mensaje emergente que aparece.
    Si usa otras credenciales, se generarán errores o incurrirá en cargos.

  7. Acepta las condiciones y omite la página de recursos de recuperación.

Activa Google Cloud Shell

Google Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud.

Google Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.

  1. En la consola de Cloud, en la barra de herramientas superior derecha, haz clic en el botón Abrir Cloud Shell.

    Ícono de Cloud Shell destacado

  2. Haz clic en Continuar.

El aprovisionamiento y la conexión al entorno demorarán unos minutos. Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. Por ejemplo:

ID del proyecto destacado en la terminal de Cloud Shell

gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con el completado de línea de comando.

  • Puedes solicitar el nombre de la cuenta activa con este comando:
gcloud auth list

Resultado:

Credentialed accounts: - @.com (active)

Resultado de ejemplo:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • Puedes solicitar el ID del proyecto con este comando:
gcloud config list project

Resultado:

[core] project =

Resultado de ejemplo:

[core] project = qwiklabs-gcp-44776a13dea667a6 Nota: La documentación completa de gcloud está disponible en la guía de descripción general de gcloud CLI .

Verifica los permisos del proyecto

Antes de comenzar a trabajar en Google Cloud, asegúrate de que tu proyecto tenga los permisos correctos en Identity and Access Management (IAM).

  1. En la consola de Google Cloud, en el Menú de navegación (Ícono del menú de navegación), selecciona IAM y administración > IAM.

  2. Confirma que aparezca la cuenta de servicio predeterminada de Compute {número-del-proyecto}-compute@developer.gserviceaccount.com, y que tenga asignado el rol Editor. El prefijo de la cuenta es el número del proyecto, que puedes encontrar en el menú de navegación > Descripción general de Cloud > Panel.

El nombre de la cuenta de servicio predeterminada de Compute Engine y el estado del editor destacados en la página de pestañas Permisos

Nota: Si la cuenta no aparece en IAM o no tiene asignado el rol Editor, sigue los pasos que se indican a continuación para asignar el rol necesario.
  1. En la consola de Google Cloud, en el menú de navegación, haz clic en Descripción general de Cloud > Panel.
  2. Copia el número del proyecto (p. ej., 729328892908).
  3. En el Menú de navegación, selecciona IAM y administración > IAM.
  4. En la parte superior de la tabla de funciones, debajo de Ver por principales, haz clic en Otorgar acceso.
  5. En Principales nuevas, escribe lo siguiente:
{project-number}-compute@developer.gserviceaccount.com
  1. Reemplaza {número-del-proyecto} por el número de tu proyecto.
  2. En Rol, selecciona Proyecto (o Básico) > Editor.
  3. Haz clic en Guardar.

Tarea 1. Crea un entorno virtual y, luego, instala las dependencias

  1. Crea un entorno virtual para tu trabajo en este lab:
sudo apt-get install -y python3-venv python3 -m venv df-env source df-env/bin/activate
  1. Luego, instala los paquetes que necesitarás para ejecutar su canalización:
python3 -m pip install -q --upgrade pip setuptools wheel python3 -m pip install apache-beam[gcp]
  1. Por último, asegúrate de que la API de Dataflow esté habilitada:
gcloud services enable dataflow.googleapis.com

Tarea 2. Crea una política de alertas

En esta sección, crearás una política de alertas que se activa cuando se cumple la condición.

  1. En el campo Buscar de la barra de título de la consola de Google Cloud, escribe Supervisión, haz clic en Buscar y, luego, en Supervisión.

  2. En el panel de navegación izquierdo, haz clic en Alertas.

  3. En la página Alertas, haz clic en + CREAR POLÍTICA.

  4. Haz clic en el menú desplegable Selecciona una métrica y desmarca Activa.

    a. Escribe Trabajo de Dataflow en Filtrar por nombre de recurso o métrica y haz clic en Trabajo de Dataflow > Trabajo. Selecciona Con errores y haz clic en Aplicar.

    b. Establece la función Rolling windows en Sum.

    c. Haz clic en Siguiente. Establece 0 como valor del umbral.

  5. Haz clic en el botón SIGUIENTE para ir al paso Configurar notificaciones y finalizar la alerta.

  6. En el formulario que se carga, haz clic en el menú desplegable de Canales de notificaciones y, luego, en ADMINISTRAR CANALES DE NOTIFICACIONES.

Se abrirá una ventana nueva que muestra los tipos de canales de notificaciones admitidos.

  1. Desplázate hasta la fila que dice Correo electrónico y, luego, haz clic en AGREGAR NUEVO en el extremo derecho.

    a. En Dirección de correo electrónico, ingresa tu dirección de correo electrónico personal.

    Nota: El correo electrónico de la cuenta de estudiante de Qwiklabs no funcionará, ya que es una cuenta temporal.

    b. En Nombre visible, ingresa Qwiklabs Student.

    c. Haz clic en Guardar. Ahora puedes cerrar esta ventana y volver a la ventana anterior Crear política de alertas.

  2. Haz clic en el ícono de actualización a la izquierda de ADMINISTRAR CANALES DE NOTIFICACIONES.

  3. Luego, vuelva a hacer clic en el menú desplegable Canales de notificaciones. Esta vez, deberías ver el nombre visible de la cuenta de estudiante que acabas de agregar.

  4. Marca la casilla de verificación a la izquierda del nombre de Estudiante de Qwiklabs y haz clic en Aceptar.

  5. Ingresa Trabajo de Dataflow con errores como el nombre de la alerta en el cuadro de texto.

  6. Haz clic en Siguiente otra vez.

  7. Revisa la alerta y haz clic en Crear política.

Haz clic en Revisar mi progreso para verificar el objetivo. Crear una política de alertas

Tarea 3. Errores en el inicio de la canalización en Dataflow

  1. Revisa el código de tu canalización a continuación:
import argparse import logging import argparse, logging, os import apache_beam as beam from apache_beam.io import WriteToText from apache_beam.options.pipeline_options import PipelineOptions class ReadGBK(beam.DoFn): def process(self, e): k, elems = e for v in elems: logging.info(f"the element is {v}") yield v def run(argv=None): parser = argparse.ArgumentParser() parser.add_argument( '--output', dest='output', help='Output file to write results to.') known_args, pipeline_args = parser.parse_known_args(argv) read_query = """( SELECT version, block_hash, block_number FROM `bugquery-public-data.crypto_bitcoin.transactions` WHERE version = 1 LIMIT 1000000 ) UNION ALL ( SELECT version, block_hash, block_number FROM `bigquery-public-data.crypto_bitcoin.transactions` WHERE version = 2 LIMIT 1000 ) ;""" p = beam.Pipeline(options=PipelineOptions(pipeline_args)) (p | 'Read from BigQuery' >> beam.io.ReadFromBigQuery(query=read_query, use_standard_sql=True) | "Add Hotkey" >> beam.Map(lambda elem: (elem["version"], elem)) | "Groupby" >> beam.GroupByKey() | 'Print' >> beam.ParDo(ReadGBK()) | 'Sink' >> WriteToText(known_args.output)) result = p.run() if __name__ == '__main__': logger = logging.getLogger().setLevel(logging.INFO) run()
  1. En Cloud Shell, abre un archivo nuevo llamado my_pipeline.py. Copia y pega el código anterior en este archivo y guárdalo con el editor de texto que prefieras (el siguiente ejemplo hace referencia a Vim):
vi my_pipeline.py
  1. Después de pegar el código en el archivo, asegúrate de guardarlo.

  2. Ejecuta el siguiente comando para crear un bucket de almacenamiento:

export PROJECT_ID=$(gcloud config get-value project) gcloud storage buckets create gs://$PROJECT_ID --location=US
  1. A continuación, intentarás iniciar la canalización con el siguiente comando (ten en cuenta que el comando fallará):
# Attempt to launch the pipeline python3 my_pipeline.py \ --project=${PROJECT_ID} \ --region={{{project_0.default_region | Region}}} \ --tempLocation=gs://$PROJECT_ID/temp/ \ --runner=DataflowRunner

El comando anterior para iniciar la canalización fallará con un seguimiento de pila similar al que se muestra en la siguiente captura de pantalla:

Vuelve al resultado en la terminal de la línea de comandos

Esta falla está en el extremo de Beam. En el código, especificamos WriteToText(known_args.output). Debido a que no pasamos la marca --output, el código no pasó la validación de Beam, por lo que no se pudo iniciar en Dataflow. Como no llegó a Dataflow, no hay ningún ID de trabajo asociado a esta operación de inicio. Esto implica que no deberías recibir correos electrónicos de alerta en tu bandeja de entrada.

Haz clic en Revisar mi progreso para verificar el objetivo. Errores en el inicio de la canalización en Dataflow

Tarea 4. Tabla de BigQuery no válida

En esta sección, intentarás iniciar la canalización de nuevo con la marca --output requerida. Si bien esto logra iniciar de manera correcta la canalización de Dataflow, el trabajo fallará después de unos minutos porque agregamos intencionalmente una tabla de BigQuery no válida. Esto debería activar la política de alertas y dar como resultado que se envíe un correo electrónico de alerta.

  1. En la terminal, ejecuta el siguiente comando para iniciar la canalización:
# Launch the pipeline python3 my_pipeline.py \ --project=${PROJECT_ID} \ --region={{{project_0.default_region | Region}}} \ --output gs://$PROJECT_ID/results/prefix \ --tempLocation=gs://$PROJECT_ID/temp/ \ --max_num_workers=5 \ --runner=DataflowRunner
  1. En el campo Búsqueda de la barra de título de la consola de Google Cloud, escribe Dataflow, haz clic en Búsqueda y, luego, en Dataflow.

  2. Haz clic en Trabajos.

  3. Haz clic en el trabajo de Dataflow que se muestra en esa página.

Si esperas aproximadamente cuatro minutos, verás que el trabajo falla. Esto activa la política de alertas. Puedes revisar tu bandeja de entrada de correo electrónico para ver la notificación de alerta.

  1. Debajo del gráfico de trabajo de canalización de Dataflow, verás el panel Registros. Haz clic en Mostrar. Se mostrarán las siguientes pestañas: Registros de trabajos, Registros de trabajador, Diagnóstico, Trabajos de BigQuery y Muestreo de datos.

  2. Haz clic en la pestaña Registros de trabajos y explora las entradas de registro.

  3. Luego, haz clic en la pestaña Registros de trabajador y explora esos registros también.

La página con la pestaña Registros del trabajo en la que se muestran 19 mensajes

Nota: Notarás que los registros se pueden expandir cuando haces clic en ellos. Los registros que se repiten pueden aparecer en la pestaña Diagnóstico.
  1. Cuando hagas clic en la pestaña Diagnóstico, verás un vínculo en el que puedes hacer clic.

  2. Haz clic en él para ir a la página de Error Reporting. En ella se muestra una vista expandida del error. Si observas el seguimiento de pila, verás el problema: un error tipográfico en el código de la canalización.

Líneas de código en la página con la pestaña Analizados

En el código, bigquery está mal escrito de forma intencional como bugquery, por lo que el trabajo de Dataflow falla y activa la política de alertas para enviar un correo electrónico. En la siguiente sección, corregirás el código y reiniciarás la canalización.

Haz clic en Revisar mi progreso para verificar el objetivo. Tabla de BigQuery no válida

Tarea 5. Demasiados registros

  1. Con un editor de texto (como Vim o tu editor preferido), abre el archivo my_pipeline.py y corrige el código reemplazando bugquery por bigquery.

    Nota: En el código, encontrarás la palabra bugquery con un error tipográfico en la declaración SELECT como bugquery-public-data.crypto_bitcoin.transactions. Cámbiala a bigquery-public-data.crypto_bitcoin.transactions.
  2. En la terminal, ejecuta el siguiente comando para iniciar la canalización:

# Launch the pipeline python3 my_pipeline.py \ --project=${PROJECT_ID} \ --region={{{project_0.default_region | Region}}} \ --output gs://$PROJECT_ID/results/prefix \ --tempLocation=gs://$PROJECT_ID/temp/ \ --max_num_workers=5 \ --runner=DataflowRunner

La canalización tardará aproximadamente siete minutos en completarse.

  1. En el campo Búsqueda de la barra de título de la consola de Google Cloud, escribe Dataflow, haz clic en Búsqueda y, luego, en Dataflow.

  2. Haz clic en Trabajos. Cuando hagas clic en este nuevo trabajo, en la página del gráfico del trabajo, en el extremo derecho, deberías ver Estado del trabajo como Correcto. Si no se completó el trabajo, espera a que se complete de forma correcta.

  3. Expande la sección Registros de la parte inferior y revisa los registros en la pestaña Registros de trabajador.

En la pestaña Registros de trabajador, verás entradas de registro con el formato the element is {'version' : ....... }, como se muestra en la captura de pantalla a continuación:

La página con la pestaña Registros de trabajador en la que se muestran 350 mensajes

Estas entradas se registran debido a la siguiente línea en el código de la canalización:

logging.info(f"the element is {v}")
  1. Haz clic en la pestaña Diagnóstico y verás un mensaje sobre la limitación de los registros.

La página con la pestaña Diagnóstico en la que se muestra un mensaje de error

  1. Haz clic en él y navega a la página de Error Reporting. El registro excesivo se genera como una estadística de trabajo, con un vínculo de documento público en el que se muestra cuál es el problema.

La solución sencilla para este problema sería quitar la línea de código de registro de tu código de canalización y volver a ejecutar la canalización de Dataflow. Cuando finalice, ya no deberías ver el mismo mensaje en la pestaña Diagnóstico.

Nota: No es necesario que vuelvas a ejecutar esta canalización para completar este lab.
  1. Para volver a la página Trabajos de Dataflow, haz clic en el botón Atrás del navegador.

  2. En el panel de registros expandido, haz clic en la pestaña Trabajos de BigQuery. En el menú desplegable Ubicación de los datos selecciona EE.UU. (varias regiones en Estados Unidos) y haz clic en Cargar trabajos de BigQuery. Luego, haz clic en Confirmar.

La página con la pestaña Trabajos de BigQuery

Verás dos trabajos enumerados que formaban parte de la canalización.

  1. Haz clic en Línea de comandos en el extremo derecho del primer trabajo y, en la ventana emergente, haz clic en Ejecutar en Cloud Shell.

Esta acción pegará el comando en tu instancia de Cloud Shell. Asegúrate de ejecutar el comando.

  1. En el resultado del comando, se muestran las ubicaciones de archivos que se usan para leer y escribir en BigQuery, su tamaño y cuánto tiempo tardó el trabajo. Si un trabajo de BigQuery falló, este es el lugar para buscar la causa de la falla.

El resultado

Haz clic en Revisar mi progreso para verificar el objetivo. Demasiados registros

Finalice su lab

Cuando haya completado el lab, haga clic en Finalizar lab. Google Cloud Skills Boost quitará los recursos que usó y limpiará la cuenta.

Tendrá la oportunidad de calificar su experiencia en el lab. Seleccione la cantidad de estrellas que corresponda, ingrese un comentario y haga clic en Enviar.

La cantidad de estrellas indica lo siguiente:

  • 1 estrella = Muy insatisfecho
  • 2 estrellas = Insatisfecho
  • 3 estrellas = Neutral
  • 4 estrellas = Satisfecho
  • 5 estrellas = Muy satisfecho

Puede cerrar el cuadro de diálogo si no desea proporcionar comentarios.

Para enviar comentarios, sugerencias o correcciones, use la pestaña Asistencia.

Copyright 2025 Google LLC. Todos los derechos reservados. Google y el logotipo de Google son marcas de Google LLC. El resto de los nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que están asociados.

Antes de comenzar

  1. Los labs crean un proyecto de Google Cloud y recursos por un tiempo determinado
  2. .
  3. Los labs tienen un límite de tiempo y no tienen la función de pausa. Si finalizas el lab, deberás reiniciarlo desde el principio.
  4. En la parte superior izquierda de la pantalla, haz clic en Comenzar lab para empezar

Usa la navegación privada

  1. Copia el nombre de usuario y la contraseña proporcionados para el lab
  2. Haz clic en Abrir la consola en modo privado

Accede a la consola

  1. Accede con tus credenciales del lab. Si usas otras credenciales, se generarán errores o se incurrirá en cargos.
  2. Acepta las condiciones y omite la página de recursos de recuperación
  3. No hagas clic en Finalizar lab, a menos que lo hayas terminado o quieras reiniciarlo, ya que se borrará tu trabajo y se quitará el proyecto

Este contenido no está disponible en este momento

Te enviaremos una notificación por correo electrónico cuando esté disponible

¡Genial!

Nos comunicaremos contigo por correo electrónico si está disponible

Un lab a la vez

Confirma para finalizar todos los labs existentes y comenzar este

Usa la navegación privada para ejecutar el lab

Usa una ventana de navegación privada o de Incógnito para ejecutar el lab. Así evitarás cualquier conflicto entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.