arrow_back

Análisis de registros

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

Análisis de registros

Lab 1 hora 30 minutos universal_currency_alt 5 créditos show_chart Intermedio
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 ejercicio, generarás entradas de registro desde una aplicación, filtrarás y analizarás registros en Cloud Logging, y los exportarás a un receptor de registros de BigQuery.

Objetivos

En este lab, aprenderás a realizar las siguientes tareas:

  • Configurar e implementar una aplicación de prueba

  • Explorar las entradas de registro generadas por la aplicación de prueba

  • Crear y usar una métrica basada en registros

  • Exportar registros de la aplicación a BigQuery

Configuración y requisitos

En esta tarea, usarás Qwiklabs y realizarás pasos de inicialización para tu lab.

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.

Después de completar los pasos iniciales de acceso, aparecerá el panel del proyecto.

En el panel del proyecto se incluyen mosaicos, como la información, las APIs, los recursos y la facturación del proyecto

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 .

Tarea 1: Configura una aplicación de prueba, impleméntala y configura una VM de prueba de carga

Para experimentar con los registros, su exportación y Error Reporting, implementaremos la aplicación HelloLoggingNodeJS que utilizamos en un ejercicio anterior de Cloud Run.

  1. Asegúrate de que las APIs de Cloud Build, Compute Engine y Cloud Run estén habilitadas, ya que las necesitarás en pasos posteriores:

gcloud services enable cloudbuild.googleapis.com \ run.googleapis.com \ compute.googleapis.com \ cloudprofiler.googleapis.com
  1. Una vez que se habiliten las APIs correctamente, clona el repositorio https://github.com/haggman/HelloLoggingNodeJS.git:

git clone https://github.com/haggman/HelloLoggingNodeJS.git

Este repositorio contiene una aplicación básica de Node.js que se utiliza para las pruebas.

  1. Cambia a la carpeta HelloLoggingNodeJS y abre el archivo index.js en el editor de Cloud Shell:

cd HelloLoggingNodeJS edit index.js
  1. Si un error indica que no se pudo cargar el editor de código debido a que las cookies de terceros están inhabilitadas, haz clic en Open in New Window y cambia a la pestaña nueva.

  2. Tómate unos minutos para examinar el código. Es posible que reconozcas este código de algunos de los ejemplos del módulo de lectura.

  • Observa que se cargan las bibliotecas tanto de Google Error Reporting como de depuración.

  • Desplázate hacia abajo y verás varios métodos que generan registros, errores y registros de errores.

  • Presta especial atención a /random-error, que genera un error cada unas 1,000 solicitudes. En el siguiente paso, cambiarás esto a cada 20 solicitudes para aumentar la frecuencia con la que se observa un error.

  1. Para aumentar la excepción no detectada /random-error de 1 por cada 1,000 a 1 por cada 20. Abre index.js en el editor de Cloud Shell.

  2. En el archivo index.js, reemplaza las líneas 125-135 por lo siguiente:

//Generates an uncaught exception every 20 requests app.get('/random-error', (req, res) => { error_rate = parseInt(req.query.error_rate) || 20 let errorNum = (Math.floor(Math.random() * error_rate) + 1); if (errorNum==1) { console.log("Called /random-error, and it's about to error"); doesNotExist(); } console.log("Called /random-error, and it worked"); res.send("Worked this time."); });
  1. En el editor, también puedes observar el archivo rebuildService.sh. Este archivo utiliza Cloud Build para crear un contenedor de Docker y, luego, crea (o actualiza) una aplicación de Cloud Run con dicho contenedor. El servicio de Cloud Run admite el acceso anónimo, tiene un par de etiquetas para etapa y departamento, y solo permite un máximo de 5 conexiones simultáneas a cualquier instancia de ejecución.

  2. Regresa a la ventana de Cloud Shell. Si Cloud Shell no está visible, haz clic en Abrir terminal.

  3. Compila el contenedor y, luego, inicia la aplicación de Cloud Run mediante la ejecución del archivo:

sh rebuildService.sh

Este proceso tardará uno o dos minutos en completarse.

  1. En Cloud Shell, el mensaje final incluirá la URL de tu nuevo servicio. Haz clic en el vínculo para probar la aplicación en una pestaña nueva. Se mostrará una respuesta simple de Hello World.

  2. En la ventana de la terminal de Cloud Shell, crea una nueva variable de entorno de URL y configura su valor como la URL de tu aplicación.

URL=$(gcloud run services list --platform managed --format="value(URL)" | grep hello-logging)
  1. Ejecuta el comando echo para reproducir el valor de la variable y así probar que esta se haya creado correctamente:

echo $URL
  1. Utiliza un bucle while en Bash para generar carga en la ruta random-error de la aplicación. Observa si comienzan a aparecer mayormente mensajes del tipo "Funcionó esta vez". Si no es así, vuelve a verificar que la aplicación se esté ejecutando y que la propiedad de la URL esté configurada correctamente:

while true; \ do curl -s $URL/random-error \ -w '\n' ;sleep .1s;done

Tarea 2. Explora los archivos de registro de una aplicación de prueba

Ya tienes una aplicación implementada en Cloud Run que, según la URL, puede generar lo siguiente: solo registros, registros a través de Winston o informes de errores. Tómate unos minutos para explorar esos registros.

  1. Usa el Menú de navegación (Ícono del menú de navegación) de la consola de Google Cloud para navegar a Logging > Explorador de registros.

  2. Habilita la opción Mostrar consulta y borra cualquier consulta que haya de forma predeterminada.

  3. Utiliza el menú desplegable Recurso para seleccionar el servicio de Cloud Run Revisión de Cloud Run > hello-logging. Recuerda hacer clic en Aplicar para incluir tu selección. De lo contrario, dicho recurso no se aplicará como filtro.

  4. Haz clic en Ejecutar consulta.

Es muy probable que solo veas mensajes de solicitudes correctas, es decir, del tipo 200. ¿Cómo puedes encontrar los errores? Una forma de hacerlo es excluir todas las respuestas del tipo 200 y ver qué queda.

  1. Para ello, haz clic en uno de los códigos de estado del tipo 200 y selecciona Ocultar las entradas coincidentes.

Si bien no es perfecto, esto te permitirá encontrar mensajes de registro vinculados al error y los seguimientos de pila generados por este.

  1. Usa los Campos de registro para filtrar los mensajes y mostrar solo aquellos con el valor Error en la columna Gravedad.

Ahora verás las respuestas cuando se arrojó un error.

  1. Expande y explora una de las entradas. Fíjate qué archivo de registro contiene los errores del tipo 500 y cuando hayas finalizado, borra el filtro de gravedad Error.

  2. Para ver los seguimientos de pila, que es lo que más podría interesarle a un desarrollador, utiliza los Campos de registro a fin de filtrar el registro de errores estándares run.googleapis.com/stderr.

Esto muestra las excepciones, pero ¿dónde comienza cada una?

  1. Es bueno ver el registro stderr con los seguimientos de pila y el registro de solicitudes con los errores de estado del tipo 500. Para ello, sigue estos pasos:

  • Haz clic en el Compilador de consultas y selecciona el Nombre del registro.
  • Elige los registros de solicitudes y stderr de Cloud Run y, luego, haz clic en Aplicar para incluirlos en la consulta.
  • Selecciona Ejecutar consulta.
Nota: Deberás esperar entre 10 y 12 minutos para que aparezcan los errores de estado del tipo 500.
  1. Dedica un momento para explorar los registros que se muestran. Ahora verás la respuesta que muestra el error a la solicitud del cliente y el seguimiento de pila posterior enviado a stderr.

Tarea 3: Crea y utiliza una métrica basada en registros

Acabas de analizar el archivo de registro del servicio de Cloud Run y de examinar una entrada de error, pero ¿qué ocurre si realizas un registro personalizado, no necesariamente relacionado con errores, y deseas crear una métrica personalizada basada en dicho registro? En esta parte del ejercicio, cambiarás el bucle para llamar a la ruta /score y, luego, crearás una métrica a partir de las puntuaciones obtenidas.

En esta tarea, harás lo siguiente:

  • Generarás un poco de carga en el extremo /score.

  • Explorarás los registros generados por la carga.

  • Ajustarás el código para colocar el mensaje en un formato más utilizable.

  • Crearás una nueva métrica basada en registros.

Genera un poco de carga en el extremo /score

  1. Cambia a Cloud Shell o vuelve a abrirlo.

  2. Utiliza la combinación de teclas CTRL + C para interrumpir el bucle de prueba.

  3. Modifica el bucle while para llamar a la ruta /score y reinicia el bucle. Verifica que los mensajes nuevos muestren puntuaciones aleatorias:

while true; \ do curl -s $URL/score \ -w '\n' ;sleep .1s;done

Explora los registros generados por la carga

  1. Cambia a la consola de Google Cloud y vuelve a abrir la página Logging > Explorador de registros.

  2. Borra cualquier consulta existente y utiliza la opción Recurso para mostrar los registros Revisión de Cloud Run > hello-logging.

  3. Haz clic en Aplicar.

  4. Selecciona Ejecutar consulta.

Todas las entradas de códigos de estado del tipo 200 deben pertenecer a esta última ejecución de prueba. De lo contrario, haz clic en Pasar a los más recientes para actualizar la vista de registros.

  1. Expande una de las entradas de códigos de estado del tipo 200. ¿Cómo puedes saber si proviene de una solicitud /score? ¿Por qué la puntuación no se muestra en la entrada de registro?

  2. Utiliza el explorador de Campos de registro para filtrar el registro run.googleapis.com/stdout. Ahora deberías ver todos los mensajes impresos por el código propiamente dicho. ¿Por qué sería difícil compilar una métrica con las puntuaciones para esta entrada?

Sería mejor si los mensajes se generaran en formato JSON estructurado, en lugar de texto no estructurado. De esa manera, podrías acceder solo a las puntuaciones en nuestra métrica basada en registros y extraerlas, todo de forma sencilla.

  1. En la ventana de la terminal de Cloud Shell, utiliza la combinación de teclas Ctrl + C para interrumpir el bucle while de prueba.

Ajusta el formato del registro para facilitar el acceso a la puntuación

  1. Abre el archivo index.js en el editor de Cloud Shell y busca el código de la ruta /score (cerca de la línea 90).

  2. Reemplaza la ruta /score con el siguiente código:

//Basic NodeJS app built with the express server app.get('/score', (req, res) => { //Random score, the contaierID is a UUID unique to each //runtime container (testing was done in Cloud Run). //funFactor is a random number 1-100 let score = Math.floor(Math.random() * 100) + 1; let output = { message: '/score called', score: score, containerID: containerID, funFactor: funFactor }; console.log(JSON.stringify(output)); //Basic message back to browser res.send(`Your score is a ${score}. Happy?`); });

Observa cómo el contenido de los mensajes ahora corresponde a propiedades del objeto output y cómo el mensaje impreso pasa a ser el objeto JSON en cadena.

Dado que modificaste el código, inicia la aplicación de manera local en Cloud Shell para asegurarte de no haber ingresado ningún error.

  1. En la ventana de la terminal de Cloud Shell, instala las dependencias y, luego, inicia la aplicación. Asegúrate de estar en la carpeta HelloLoggingNodeJS:

export GCLOUD_PROJECT=$DEVSHELL_PROJECT_ID cd ~/HelloLoggingNodeJS/ npm i npm start
  1. Si ves el mensaje "Hello World listening on port 8080 message", utiliza la combinación de teclas CTRL + C para detener la aplicación y continúa con el próximo paso. Si ves algún error, corrígelo y asegúrate de que se inicie la aplicación antes de continuar.

  2. Vuelve a compilar y a implementar la aplicación. Para ello, vuelve a ejecutar rebuildService.sh:

sh rebuildService.sh
  1. Espera a que la aplicación se termine de compilar y de implementar nuevamente y, luego, reinicia el bucle de prueba:

while true; \ do curl -s $URL/score \ -w '\n' ;sleep .1s;done

Asegúrate de que comiencen a aparecer nuevamente los mensajes de puntuación.

  1. Cambia a la pestaña del navegador donde se muestra el Explorador de registros y haz clic en Pasar a los más recientes para mostrar los últimos registros.

Aún deberían figurar las entradas filtradas para mostrar los registros stdout de Cloud Run en relación con hello-logging.

  1. Expande una de las entradas y examina el nuevo formato.

Crea una métrica basada en registros de puntuación

  1. Haz clic en Crear métrica y establece los siguientes campos con los valores que se indican:
  • Tipo de métrica: Distribution

  • Nombre de la métrica de registro: score_averages

  • Unidades: 1

  • Nombre del campo: jsonPayload.score

  1. Haz clic en el vínculo de la configuración AVANZADA y establece los siguientes campos con los valores que se indican:
  • Tipo: Linear

  • Valor de inicio: 0

  • Cantidad de buckets: 20

  • Rango del bucket: 5

  1. Haz clic en Crear métrica.

  2. Utiliza el menú de navegación (Ícono del menú de navegación) para cambiar a Monitoring > Paneles. Es posible que debas esperar mientras se crea el lugar de trabajo.

  3. Haz clic en + Crear panel.

  4. En el nombre del panel nuevo, escribe Score Fun.

  5. Haz clic en la opción Line.

  6. Configura Chart Title como Score Info.

  7. En la sección Resource & Metric, selecciona Cloud Run Revision > Logs-Based Metric > logging/user/score_averages.

  8. Haz clic en Aplicar.

  9. El alineador se estableció de forma predeterminada en el Percentil 50. En caso contrario, establécelo en el Percentil 50 (mediana).

El panel Score Fun

Tarea 4. Exporta los registros de la aplicación a BigQuery

Exportar los registros a BigQuery permite no solo almacenarlos por más tiempo, sino también analizarlos con SQL y todo el poder de BigQuery. En esta tarea, configurarás la exportación de los registros de Cloud Run a BigQuery y la utilizarás para buscar los mensajes de error generados por la ruta random-error de la aplicación.

En esta tarea, harás lo siguiente:

  • Configurarás una exportación de registros a BigQuery.

Configura un receptor de exportación a BigQuery

  1. Cambia a la ventana de Cloud Shell que tiene el bucle while que envía carga a nuestra aplicación y utiliza la combinación de teclas CTRL + C para interrumpirlo.

  2. Modifica el bucle while para reanudar el envío de carga a la ruta random-error. Vuelve a ejecutar el bucle:

while true; \ do curl -s $URL/random-error \ -w '\n' ;sleep .1s;done
  1. Usa el Menú de navegación de la consola de Google Cloud para navegar a Logging > Explorador de registros.

  2. Borra cualquier consulta existente y ejecuta una nueva donde utilices la opción Recurso para aplicar el filtro Revisión de Cloud Run > hello-logging.

  3. Haz clic en Aplicar.

  4. Expande una o dos entradas y verifica que se relacionen con las solicitudes /random-error.

  5. Crea un receptor en Más acciones > Crear un receptor.

  6. En Nombre del receptor, escribe hello-logging-sink.

  7. Haz clic en Siguiente.

  8. En Seleccionar el servicio del receptor, elije Conjunto de datos de BigQuery.

  9. Selecciona Crear nuevo conjunto de datos de BigQuery para tu conjunto de datos de BigQuery.

  10. Ponle el nombre hello_logging_logs al ID del conjunto de datos.

  11. Haz clic en CREAR CONJUNTO DE DATOS.

  12. Haz clic en Siguiente.

  13. En Elige registros para incluirlos en el receptor, haz clic en Siguiente.

  14. Haz clic en CREAR UN RECEPTOR. Tras seleccionar Crear un receptor, observa cómo esta acción genera una cuenta de servicio que se utiliza para escribir en el nuevo conjunto de datos de BigQuery.

  15. Utiliza el Menú de navegación para cambiar a BigQuery.

  16. En la sección Explorador, expande el nodo de proyectos y el conjunto de datos hello_logging_logs.

  17. Haz clic en la tabla de solicitudes.

  18. En el diálogo con pestañas que se encuentra debajo de la ventana de consulta, haz clic en la pestaña Vista previa y explora la información en este registro. Allí se incluye información general en torno a las solicitudes: qué URL se solicitó, cuándo y desde dónde.

  19. Haz clic en la pestaña Esquema y dedica un momento a investigar el esquema de la tabla generada. Ten en cuenta que las estructuras de datos anidadas y repetidas se utilizan para columnas como resource y httpRequest.

  20. Selecciona la tabla de stderr. Las aplicaciones suelen utilizar las denominaciones "salida estándar" y "error estándar" para diferenciar entre los mensajes de registro simples y los mensajes relacionados con un error. Las aplicaciones de Node.js volcarán toda información no detectada sobre excepciones o errores en un error estándar.

NOTA: Si la tabla stderr no aparece, espera unos 5 a 10 minutos.
  1. Una vez más, obtén una vista previa de los datos en la tabla. Se mostrarán los errores aleatorios a medida que afecten diferentes partes de la pila de llamadas de la solicitud. Las entradas con una textPayload que contienen ReferenceError son los errores reales.

  2. Haz clic en la pestaña Esquema y, luego, investiga la estructura real de la tabla. Una vez más, verás una combinación de campos estándares, y anidados y repetidos.

  3. Crea y ejecuta una consulta para extraer solo las textPayloads que comiencen con ReferenceError:

  • Para iniciar la consulta, haz clic en el botón Consultar.

  • Modifica SELECT para que extraiga la textPayload.

  • Agrega la cláusula where.

  • Reemplaza [project-id] por el ID del proyecto de GCP y [date] con la fecha que se indica en el nombre de la tabla:

SELECT textPayload FROM `[project-id].hello_logging_logs.run_googleapis_com_stderr_[date]` WHERE textPayload LIKE 'ReferenceError%'
  1. Si quieres hacer un recuento, modifica la consulta para contar estas entradas:
  • Vuelve a ejecutarla y verifica la cantidad que recibes.

  • Reemplaza [project-id] por el ID del proyecto de GCP y [date] con la fecha que se indica en el nombre de la tabla:

SELECT count(textPayload) FROM `[project-id].hello_logging_logs.run_googleapis_com_stderr_[date]` WHERE textPayload LIKE 'ReferenceError%'
  1. Para verificar el porcentaje de errores, compila una consulta que compare las solicitudes totales con aquellas de ReferenceError%.
  • Reemplaza [project-id] por el ID del proyecto de GCP y [date] con la fecha que se indica en el nombre de la tabla.

  • ¿El error es de aproximadamente 1/1,000?

SELECT errors / total_requests FROM ( SELECT ( SELECT COUNT(*) FROM `[project-id].hello_logging_logs.run_googleapis_com_requests_[date]`) AS total_requests, ( SELECT COUNT(textPayload) FROM `[project-id].hello_logging_logs.run_googleapis_com_stderr_[date]` WHERE textPayload LIKE 'ReferenceError%') AS errors)

¡Felicitaciones!

En este ejercicio, utilizaste una aplicación de prueba para generar registros, utilizaste los datos obtenidos para crear métricas basadas en registros y exportaste registros a BigQuery. Buen trabajo.

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 2020 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás 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.