![](https://cdn.qwiklabs.com/assets/labs/start_lab-f45aca49782d4033c3ff688160387ac98c66941d.png)
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you restart it, you'll have to start from the beginning.
- On the top left of your screen, click Start lab to begin
Deploy Application
/ 30
Create a logs-based metric
/ 30
Create an alerting policy
/ 40
Cloud Logging y su herramienta complementaria, Cloud Monitoring, son productos destacados, integrados de manera completa a Google Kubernetes Engine. Este lab te enseña cómo funciona Cloud Logging con aplicaciones y clústeres de GKE y algunas prácticas recomendadas para la recopilación de registros a través de los casos de uso comunes de registro.
En este lab, aprenderás a hacer lo siguiente:
Para usar un ejemplo concreto, solucionarás los problemas de una app de demostración de microservicios de muestra implementada a un clúster de GKE. En esta app de demostración, hay muchos microservicios y dependencias entre ellos. Generarás tráfico con un generador de cargas y, luego, usarás Logging, Monitoring y GKE para encontrar el error (alerta o métricas), identificar la causa raíz con Logging y corregir o confirmar que el problema se haya solucionado con Logging y Monitoring.
Lee estas instrucciones. Los labs son cronometrados y no se pueden pausar. El cronómetro, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.
Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.
Para completar este lab, necesitarás lo siguiente:
Haga clic en el botón Comenzar lab. Si debe pagar por el lab, se abrirá una ventana emergente para que seleccione su forma de pago. A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:
Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).
El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.
Sugerencia: Ordene las pestañas en ventanas separadas, una junto a la otra.
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
También puedes encontrar el nombre de usuario en el panel Detalles del lab.
Haz clic en Siguiente.
Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.
También puedes encontrar la contraseña en el panel Detalles del lab.
Haz clic en Siguiente.
Haga clic para avanzar por las páginas siguientes:
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
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. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.
Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. El resultado contiene una línea que declara el PROJECT_ID para esta sesión:
gcloud
es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.
Haz clic en Autorizar.
Ahora, el resultado debería verse de la siguiente manera:
Resultado:
Resultado:
Resultado de ejemplo:
gcloud
, consulta la guía con la descripción general de gcloud CLI en Google Cloud.
Algunos recursos de Compute Engine se encuentran en regiones y zonas. Una región es una ubicación geográfica específica donde puedes ejecutar tus recursos. Cada región tiene una o más zonas.
Ejecuta los siguientes comandos de gcloud en la consola de Cloud para establecer la región y la zona predeterminadas de tu lab:
Conéctate a un clúster de Google Kubernetes Engine y verifica que se haya creado correctamente.
El estado del clúster será PROVISIONING.
Espera un momento y vuelve a ejecutar el comando anterior hasta que el estado cambie a RUNNING. Esto puede demorar varios minutos.
Verifica si se creaste el clúster llamado central
.
También puedes supervisar el estado del progreso en la consola de Cloud dirigiéndote a Menú de navegación > Kubernetes Engine > Clústeres.
Resultado:
El resultado debería ser similar al siguiente:
A continuación, implementa una aplicación de microservicios llamada Hipster Shop en tu clúster para crear una carga de trabajo que puedas supervisar.
microservices-demo
:kubectl
:El resultado debería ser similar al siguiente:
Haz clic en Revisar mi progreso para verificar el objetivo.
La confirmación se verá de la siguiente manera:
Luego de que se haya implementado la aplicación, puedes dirigirte a la consola de Cloud y ver el estado.
En la página de Kubernetes Engine > Cargas de trabajo verás que todos los Pods están correctos.
Con esto debería abrirse la aplicación y verse una página como la siguiente:
Ahora configurarás Cloud Logging para crear una métrica basada en registros, que es una métrica personalizada en Cloud Monitoring a partir de entradas de registros. Las métricas basadas en registros son útiles para contabilizar el número de entradas de registro y hacer un seguimiento de la distribución de un valor en sus registros. En este caso, usarás la métrica basada en registros para contabilizar el número de errores en tu servicio de frontend. Puedes usar la métrica en los paneles y en las alertas.
La consulta que estás usando te permite encontrar todos los errores del Pod de frontend. De todos modos, no deberías ver ningún resultado por el momento, ya que aún no hay errores.
Ahora puedes ver la métrica en la lista de métricas definidas por el usuario en la página de métricas basadas en registros.
Haz clic en Revisar mi progreso para verificar el objetivo.
Las alertas permiten el reconocimiento oportuno de los problemas en tus aplicaciones de la nube, para que puedas resolverlos con rapidez. Ahora podrás usar Cloud Monitoring para supervisar tu disponibilidad de servicio de frontend creando una política de alertas en función de la métrica basada en registros de errores de frontend que creaste con anterioridad. Cuando se reúnen las condiciones de las políticas de alerta, Cloud Monitoring crea y muestra un incidente en la consola de Cloud.
En el menú de navegación, abre Monitoring, y haz clic en Alertas.
Luego de que el lugar de trabajo se haya creado, haz clic en Crear política (Create Policy) en la parte superior.
Haz clic en el menú desplegable Seleccionar una métrica (Select a metric). Inhabilita la opción Mostrar solo recursos y métricas activos (Show only active resources & metrics).
En el campo Filtrar por nombre de recurso y métrica (filter by resource and metric name), escribe Error_Rate.
Haz clic en Kubernetes Container > Métricas basadas en registros (Logs-based metrics). Selecciona logging/user/Error_Rate_SLI y haz clic en Aplicar (Apply).
En la pantalla deberías ver lo siguiente:
Configura la función de ventana progresiva en Rate
.
Haz clic en Siguiente.
Establece 0.5 como valor del umbral.
Como era de esperar, no se genera ningún error y tu aplicación cumple su objetivo de nivel de servicio (SLO) de disponibilidad.
Haz clic en Siguiente otra vez.
Inhabilita Usar el canal de notificaciones.
Proporciona un nombre de alerta como Error Rate SLI
y haz clic en Siguiente.
Revisa la alerta y haz clic en Crear política.
Haz clic en Revisar mi progreso para verificar el objetivo.
Ahora usarás un generador de cargas para crear algo de tráfico para tu aplicación web. Como hay un error que se ingresó en forma intencional en esta versión de la aplicación, cierto volumen de tráfico activará errores. Trabajarás paso a paso para identificar y corregir el error.
Desde el Menú de navegación, selecciona Kubernetes Engine, y, luego Ingress y servicios (Services & Ingress).
Encuentra el servicio loadgenerator-external
, luego haz clic en el vínculo de endpoints
.
Como alternativa, puedes abrir una ventana o pestaña nueva del navegador, y copiar y pegar la IP en el campo URL, por ejemplo: http://\[loadgenerator-external-ip\]
Ya deberías estar en la página de generador de carga Locust:
Locust es un generador de cargas de código abierto que te permite cargar una aplicación web de prueba. Puedes simular una cantidad determinada de usuarios que alcanza los extremos de tu aplicación de manera simultánea a una tasa determinada.
Simula 300 usuarios usando la app con una tasa de generación de 30. Locust agregará 30 usuarios por segundo hasta que alcance los 300 usuarios.
Para el campo de host, usarás frontend-external
. Copia la URL de la página de Ingress y servicios, asegúrate de excluir el puerto. Por ejemplo:
Mientras tanto, si haces clic en algún producto de la página principal, verás que está muy lenta o que recibes errores como el siguiente si haces clic en un producto:
En la consola de Cloud, desde el Menú de navegación, haz clic en Monitoring y luego en Alertas (Alerting). Deberías ver un incidente de logging/user/Error_Rate_SLI. Si no ves un incidente en el momento, espera un minuto o dos y actualiza la página. Puede tomar hasta 5 minutos que la alerta se active.
Haz clic en el vínculo del incidente:
Esto te llevará a la página de detalles.
Como alternativa, puedes hacer clic en el campo de vista previa de búsquedas para ver el compilador de consultas, luego haz clic en Gravedad en el menú desplegable y agrega Error a la búsqueda. Haz clic en el botón Agregar y luego haz clic en Ejecutar consulta (Run Query). El menú desplegable permite agregar varios valores de intensidad.
El resultado agregará severity=ERROR
a tu consulta. Una vez que hayas hecho esto, debes tener todos los errores del Pod recommendationservice.
Expande textPayload
.
Haz clic en el mensaje de error y elige Agregar campo a la línea de resumen (Add field to summary line) para que los mensajes de error aparezcan como un campo de resumen:
Desde ahí puedes confirmar que hay muchos errores del servicio para el servicio recommendationservice. Basado en los mensajes de error, parece que recommendationservice no se pudo conectar a algún servicio para conseguir productos o recomendaciones. De cualquier manera, aún no está claro cuál es la causa raíz de los errores.
Si vuelves a consultar el diagrama de arquitectura, recommendationservice provee una lista de recomendaciones del servicio de frontend. Sin embargo, tanto el servicio de frontend como el de recommendationservice invocan ProductCatalogService para la lista de productos.
Para el próximo paso, examinarás las métricas de la fuente más probable de los problemas, ProductCatalogService, en busca de anomalías. Sin embargo, puedes desglosar los registros para ver estadísticas.
Uno de los primeros lugares en donde puedes ver las métricas es en la sección Kubernetes Engine de la consola de Monitoring (Menú de navegación > Monitoring> Paneles > GKE).
Consulta la sección Cargas de trabajo (Workloads).
Navega hacia Kubernetes Engine > Cargas de trabajo (Workloads) > productcatalogservice. Puedes ver que el Pod del servicio falla y se reinicia de forma constante.
A continuación, observa si hay algo interesante en los registros.
Hay dos modos de llegar con facilidad a tus registros de contenedores:
Estás en la página Explorador de registros otra vez, ahora con una consulta predefinida filtrada de forma específica para los registros del contenedor que estuviste viendo en GKE.
Desde el visor de registros, tanto los mensajes de registro como el histograma muestran que el contenedor analiza en forma repetida el catálogo de productos en un corto período. Parece ser muy ineficiente.
En la parte inferior de los resultados de las consultas, puede haber un error de entorno de ejecución como el siguiente:
Esto podría ser la causa de que el Pod falle.
Para entender mejor la razón, busca el mensaje de registro en el código.
Tu resultado debería verse como el siguiente, que tiene el nombre del archivo fuente con un número de línea:
microservices-demo/src/productcatalogservice/server.go
, desplázate hasta la línea 237 y encontrarás los registros de método de readCatalogFile con este mensaje:Con un poco más de esfuerzo puedes ver que la variable booleana reloadCatalog es verdadera y que el servicio vuelve a cargar y analizar el catálogo de productos cada vez que se lo invoca, lo que parece innecesario.
Si buscas en el código la variable reloadCatalog, puedes ver que está controlado por la variable de entorno ENABLE\_RELOAD
y escribe un mensaje de registro para su estado.
Revisa de nuevo los registros, agrega este mensaje a tu consulta y determina si hay alguna entrada existente.
La consulta completa en tu compilador de consultas será la siguiente:
En este punto, puedes tener la certeza de que el error es causado por la sobrecarga de volver a cargar el catálogo en cada solicitud. Cuando aumentaste la carga, la sobrecarga hizo que el servicio falle y se genere el error.
Sobre la base del código y en lo que ves en los registros, puedes intentar corregir el problema inhabilitando que el catálogo se vuelva a cargar. Ahora quitarás la variable de entorno ENABLE_RELOAD
del servicio de catálogo de productos. Una vez que realices los cambios de variante, puedes volver a implementar la aplicación y verificar que los cambios hayan solucionado el problema en cuestión.
Haz clic en el botón Abrir terminal para volver a la terminal de Cloud Shell si se ha cerrado.
Ejecuta el siguiente comando:
El resultado mostrará el número de línea de la variable de entorno en el archivo de manifiesto:
Notarás que el productcatalogservice está configurado. Los demás servicios no han cambiado.
successfully parsing the catalog json
(análisis exitoso de catálogo json) han desaparecido:Si te diriges de nuevo a la URL de la app web y haces clic en los productos de la página principal, es mucho más responsiva y no deberías encontrar ningún error de HTTP.
Vuelve al generador de carga, haz clic en el botón Reset Stats en la parte superior derecha. El porcentaje de fallas se restablece y no deberías ver que se incremente más.
Todo lo anterior indica que el problema se corrigió. Si aún ves el error 500, espera unos minutos más e intenta hacer clic en un producto otra vez.
Usaste Cloud Logging y Cloud Monitoring para encontrar un error en una versión mal configurada de manera intencional de la app de demostración de microservicios. Este es un proceso de solución de problemas similar al que usarías para reducir problemas de tus aplicaciones de GKE en un entorno de producción.
Primero, implementaste la app en GKE y configuraste una métrica y una alerta para errores de frontend. Luego generaste una carga y notaste que la alerta se activaba. Desde la alerta, redujiste el problema a servicios particulares con Cloud Logging. Luego, usaste Cloud Monitoring y la IU de GKE para observar las métricas de los servicios GKE. Para solucionar el problema, luego implementaste una configuración actualizada en GKE y confirmaste que la corrección solucionaba los errores en los registros.
Este lab de autoaprendizaje forma parte de la Quest Google Cloud's Operations Suite on GKE. Una Quest es una serie de labs relacionados que forman una ruta de aprendizaje. Si completas esta Quest, obtendrás una insignia como reconocimiento por tu logro. Puedes hacer públicas tus insignias y agregar vínculos a ellas en tu currículum en línea o en tus cuentas de redes sociales. Inscríbete en esta Quest y obtén un crédito inmediato de realización. Consulta el catálogo de Google Cloud Skills Boost para ver todas las Quests disponibles.
Continúa tu Quest con Cloud Logging en Kubernetes Engine o consulta estas sugerencias:
Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.
Última actualización del manual: 31 de julio de 2023
Prueba más reciente del lab: 31 de julio de 2023
Copyright 2025 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.