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.
Accede a Qwiklabs desde una ventana de incógnito.
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.
Cuando esté listo, haga clic en Comenzar lab.
Anote las credenciales del lab (el nombre de usuario y la contraseña). Las usarás para acceder a la consola de Google Cloud.
Haga clic en Abrir Google Console.
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.
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.
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.
En la consola de Cloud, en la barra de herramientas superior derecha, haz clic en el botón Abrir Cloud Shell.
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:
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:
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.
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:
Este repositorio contiene una aplicación básica de Node.js que se utiliza para las pruebas.
Cambia a la carpeta HelloLoggingNodeJS y abre el archivo index.js en el editor de Cloud Shell:
cd HelloLoggingNodeJS
edit index.js
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.
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.
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.
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.");
});
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.
Regresa a la ventana de Cloud Shell. Si Cloud Shell no está visible, haz clic en Abrir terminal.
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.
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.
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)
Ejecuta el comando echo para reproducir el valor de la variable y así probar que esta se haya creado correctamente:
echo $URL
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.
Usa el Menú de navegación () de la consola de Google Cloud para navegar a Logging > Explorador de registros.
Habilita la opción Mostrar consulta y borra cualquier consulta que haya de forma predeterminada.
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.
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.
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.
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.
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.
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?
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.
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
Cambia a Cloud Shell o vuelve a abrirlo.
Utiliza la combinación de teclas CTRL + C para interrumpir el bucle de prueba.
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
Cambia a la consola de Google Cloud y vuelve a abrir la página Logging > Explorador de registros.
Borra cualquier consulta existente y utiliza la opción Recurso para mostrar los registros Revisión de Cloud Run > hello-logging.
Haz clic en Aplicar.
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.
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?
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.
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
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).
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.
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
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.
Vuelve a compilar y a implementar la aplicación. Para ello, vuelve a ejecutar rebuildService.sh:
sh rebuildService.sh
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.
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.
Expande una de las entradas y examina el nuevo formato.
Crea una métrica basada en registros de puntuación
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
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
Haz clic en Crear métrica.
Utiliza el menú de navegación () para cambiar a Monitoring > Paneles. Es posible que debas esperar mientras se crea el lugar de trabajo.
Haz clic en + Crear panel.
En el nombre del panel nuevo, escribe Score Fun.
Haz clic en la opción Line.
Configura Chart Title como Score Info.
En la sección Resource & Metric, selecciona Cloud Run Revision > Logs-Based Metric > logging/user/score_averages.
Haz clic en Aplicar.
El alineador se estableció de forma predeterminada en el Percentil 50. En caso contrario, establécelo en el Percentil 50 (mediana).
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
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.
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
Usa el Menú de navegación de la consola de Google Cloud para navegar a Logging > Explorador de registros.
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.
Haz clic en Aplicar.
Expande una o dos entradas y verifica que se relacionen con las solicitudes /random-error.
Crea un receptor en Más acciones > Crear un receptor.
En Nombre del receptor, escribe hello-logging-sink.
Haz clic en Siguiente.
En Seleccionar el servicio del receptor, elije Conjunto de datos de BigQuery.
Selecciona Crear nuevo conjunto de datos de BigQuery para tu conjunto de datos de BigQuery.
Ponle el nombre hello_logging_logs al ID del conjunto de datos.
Haz clic en CREAR CONJUNTO DE DATOS.
Haz clic en Siguiente.
En Elige registros para incluirlos en el receptor, haz clic en Siguiente.
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.
Utiliza el Menú de navegación para cambiar a BigQuery.
En la sección Explorador, expande el nodo de proyectos y el conjunto de datos hello_logging_logs.
Haz clic en la tabla de solicitudes.
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.
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.
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.
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.
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.
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%'
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%'
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.
Los labs crean un proyecto de Google Cloud y recursos por un tiempo determinado
.
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.
En la parte superior izquierda de la pantalla, haz clic en Comenzar lab para empezar
Usa la navegación privada
Copia el nombre de usuario y la contraseña proporcionados para el lab
Haz clic en Abrir la consola en modo privado
Accede a la consola
Accede con tus credenciales del lab. Si usas otras credenciales, se generarán errores o se incurrirá en cargos.
Acepta las condiciones y omite la página de recursos de recuperación
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.
En este ejercicio, aprenderás a generar mensajes de registro desde una aplicación, filtrarás y analizarás registros, y harás un seguimiento de los errores informados y los solucionarás.
Duración:
0 min de configuración
·
Acceso por 90 min
·
90 min para completar