GSP736

Descripción general
Cloud Logging y su herramienta complementaria, Cloud Monitoring, son productos destacados y totalmente integrados a Google Kubernetes Engine. En este lab, aprenderás cómo funciona Cloud Logging con aplicaciones y clústeres de GKE, además de algunas prácticas recomendadas para recopilar registros a través de casos de uso comunes de registro.
Objetivos
En este lab, aprenderás a realizar las siguientes tareas:
- Usar Cloud Monitoring para detectar problemas
- Usar Cloud Logging para solucionar problemas de una aplicación activa en GKE
La aplicación de demostración que se usa en el lab
Para usar un ejemplo concreto, solucionarás problemas de una app de demostración de microservicios de muestra implementada en un clúster de GKE. En esta app de demostración, hay muchos microservicios y dependencias entre ellos. Generarás tráfico con un creador 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, por último, corregir o confirmar que el problema se haya solucionado con Logging y Monitoring.

Configuración y requisitos
Antes de hacer clic en el botón Comenzar lab
Lee estas instrucciones. Los labs cuentan con un temporizador que no se puede pausar. El temporizador, 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:
- Acceso a un navegador de Internet estándar. Se recomienda el navegador Chrome.
Nota: Usa una ventana del navegador privada o de incógnito (opción recomendada) para ejecutar el lab. Así evitarás conflictos entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
- Tiempo para completar el lab (recuerda que, una vez que comienzas un lab, no puedes pausarlo).
Nota: Usa solo la cuenta de estudiante para este lab. Si usas otra cuenta de Google Cloud, es posible que se apliquen cargos a esa cuenta.
Cómo iniciar tu lab y acceder a la consola de Google Cloud
-
Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá un diálogo para que selecciones la forma de pago.
A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:
- El botón para abrir la consola de Google Cloud
- El tiempo restante
- Las credenciales temporales que debes usar para el lab
- Otra información para completar el lab, si es necesaria
-
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: Ordena las pestañas en ventanas separadas, una junto a la otra.
Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usar otra cuenta.
-
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
{{{user_0.username | "Username"}}}
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.
{{{user_0.password | "Password"}}}
También puedes encontrar la contraseña en el panel Detalles del lab.
-
Haz clic en Siguiente.
Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud.
Nota: Usar tu propia cuenta de Google Cloud para este lab podría generar cargos adicionales.
-
Haz clic para avanzar por las páginas siguientes:
- Acepta los Términos y Condiciones.
- No agregues opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
- No te registres para obtener pruebas gratuitas.
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
Nota: Para acceder a los productos y servicios de Google Cloud, haz clic en el menú de navegación o escribe el nombre del servicio o producto en el campo Buscar.
Activa Cloud Shell
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.
-
Haz clic en Activar Cloud Shell
en la parte superior de la consola de Google Cloud.
-
Haz clic para avanzar por las siguientes ventanas:
- Continúa en la ventana de información de Cloud Shell.
- Autoriza a Cloud Shell para que use tus credenciales para realizar llamadas a la API 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:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
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.
- Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
gcloud auth list
- Haz clic en Autorizar.
Resultado:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Puedes solicitar el ID del proyecto con este comando (opcional):
gcloud config list project
Resultado:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Nota: Para obtener toda la documentación de gcloud, en Google Cloud, consulta la guía con la descripción general de gcloud CLI.
Tarea 1: Configura la infraestructura
Conéctate a un clúster de Google Kubernetes Engine y verifica que se haya creado correctamente.
- Usa el siguiente comando para ver el estado del clúster:
gcloud container clusters list
El estado del clúster será PROVISIONING.
-
Espera un momento y vuelve a ejecutar el comando anterior hasta que el estado cambie a RUNNING. Este proceso puede tardar varios minutos.
-
Verifica si se creó el clúster llamado central.
También puedes supervisar el progreso en la consola de Cloud dirigiéndote al menú de navegación > Kubernetes Engine > Clústeres.
- Cuando el clúster tenga el estado RUNNING, ejecuta el siguiente comando para obtener sus credenciales:
gcloud container clusters get-credentials central --zone {{{project_0.startup_script.zone | ZONE}}}
Resultado:
Fetching cluster endpoint and auth data.
kubeconfig entry generated for central.
- Ejecuta el siguiente comando para verificar que se hayan creado los nodos:
kubectl get nodes
El resultado debería ser similar al siguiente:
Resultado:
NAME STATUS ROLES AGE VERSION
gke-central-default-pool-5ff4130f-qz8v Ready 24d v1.27.2-gke.1200
gke-central-default--pool-5ff4130f-ssd2 Ready 24d v1.27.2-gke.1200
gke-central-default--pool-5ff4130f-tz63 Ready 24d v1.27.2-gke.1200
gke-central-default--pool-5ff4130f-zfmn Ready 24d v1.27.2-gke.1200
Habilita Gemini Code Assist en el IDE de Cloud Shell
Puedes usar Gemini Code Assist en un entorno de desarrollo integrado (IDE) como Cloud Shell para recibir orientación sobre el código o resolver problemas con tu código. Antes de comenzar a usar Gemini Code Assist, debes habilitarlo.
- En Cloud Shell, habilita la API de Gemini for Google Cloud con el siguiente comando:
gcloud services enable cloudaicompanion.googleapis.com
- En la barra de herramientas de Cloud Shell, haz clic en Abrir editor.
Nota: Para abrir el editor de Cloud Shell, haz clic en Abrir editor en la barra de herramientas de Cloud Shell. Para cambiar entre Cloud Shell y el editor de código, haz clic en Abrir editor o Abrir terminal, según sea necesario.
-
En el panel izquierdo, haz clic en el ícono de Configuración y, luego, en la vista Configuración, busca Gemini Code Assist.
-
Busca la opción Geminicodeassist: Habilitar y asegúrate de que esté seleccionada. Luego, cierra la Configuración.
-
Haz clic en Cloud Code - Sin proyecto en la barra de estado, en la parte inferior de la pantalla.
-
Autoriza el complemento según las instrucciones. Si no se selecciona un proyecto automáticamente, haz clic en Seleccionar un proyecto de Google Cloud y elige .
-
Verifica que tu proyecto de Google Cloud () se muestre en el mensaje de la barra de estado de Cloud Code.
Tarea 2: Implementa una aplicación
A continuación, implementarás una aplicación de microservicios llamada Hipster Shop en tu clúster para crear una carga de trabajo que puedas supervisar.
- Ejecuta el siguiente comando para clonar el repo:
git clone https://github.com/xiangshen-dk/microservices-demo.git
- Cambia al directorio
microservices-demo usando el siguiente comando:
cd microservices-demo
- En el explorador de archivos del editor de Cloud Shell, navega a microservices-demo > release > kubernetes-manifests.yaml.
Puedes usar las funciones potenciadas por IA de Gemini Code Assist para realizar cambios en tu código directamente en el editor de código. En este caso, dejarás que Gemini Code Assist te ayude a explicar el archivo kubernetes-manifests.yaml para incorporar a un miembro nuevo de tu equipo.
-
Abre el archivo kubernetes-manifests.yaml. Esta acción habilita Gemini Code Assist, como lo indica la presencia del ícono
en la esquina superior derecha del editor.
-
Haz clic en el ícono de Gemini Code Assist: Smart Actions
y selecciona Explain this.
-
Gemini Code Assist abre un panel de chat con la instrucción Explain this completada previamente. En el cuadro de texto intercalado del chat de Code Assist, reemplaza la instrucción completada previamente por lo siguiente y haz clic en Enviar:
As a Kubernetes Architect at Cymbal AI, provide a formal and comprehensive explanation of the kubernetes-manifests.yaml file for new team member onboarding.
Your explanation should:
* Detail the key components used in the configuration file
* Describe key Services and their functions
* Describe the common configuration elements
* Describe what the configuration deploys
For the suggested improvements, don't update this file.
La explicación del código en el archivo kubernetes-manifests.yaml aparece en el chat de Gemini Code Assist.
- Ejecuta el siguiente comando para instalar la app con
kubectl:
kubectl apply -f release/kubernetes-manifests.yaml
- Ejecuta el siguiente comando para confirmar que todo se está ejecutando correctamente:
kubectl get pods
El resultado debería ser similar al siguiente:
Resultado:
NAME READY STATUS RESTARTS AGE
adservice-55f94cfd9c-4lvml 1/1 Running 0 20m
cartservice-6f4946f9b8-6wtff 1/1 Running 2 20m
checkoutservice-5688779d8c-l6crl 1/1 Running 0 20m
currencyservice-665d6f4569-b4sbm 1/1 Running 0 20m
emailservice-684c89bcb8-h48sq 1/1 Running 0 20m
frontend-67c8475b7d-vktsn 1/1 Running 0 20m
loadgenerator-6d646566db-p422w 1/1 Running 0 20m
paymentservice-858d89d64c-hmpkg 1/1 Running 0 20m
productcatalogservice-bcd85cb5-d6xp4 1/1 Running 0 20m
recommendationservice-685d7d6cd9-pxd9g 1/1 Running 0 20m
redis-cart-9b864d47f-c9xc6 1/1 Running 0 20m
shippingservice-5948f9fb5c-vndcp 1/1 Running 0 20m
- Antes de continuar al siguiente paso, vuelve a ejecutar el comando hasta que todos los Pods tengan el estado Running (En ejecución).
Haz clic en Revisar mi progreso para verificar el objetivo.
Implementar una aplicación
- Ejecuta el siguiente comando para obtener la IP externa de la aplicación. El comando solo devolverá la dirección IP una vez que se haya implementado el servicio, por lo que tal vez necesites repetir el comando hasta que haya una dirección IP externa asignada:
export EXTERNAL_IP=$(kubectl get service frontend-external | awk 'BEGIN { cnt=0; } { cnt+=1; if (cnt > 1) print $4; }')
- Por último, ejecuta el siguiente comando para confirmar que la app está funcionando correctamente:
curl -o /dev/null -s -w "%{http_code}\n" http://$EXTERNAL_IP
La confirmación debería ser similar al siguiente resultado.
Resultado:
200
Después de que se haya implementado la aplicación, visita la consola de Cloud y consulta el estado.
En la página Kubernetes Engine > Cargas de trabajo verás que todos los Pods funcionan correctamente.

- Ahora selecciona Puertas de enlace, Ingress y Service y, luego, haz clic en la pestaña Servicios para verificar que todos los servicios estén correctos. Quédate en esta pantalla y configura la supervisión de la aplicación.
Tarea 3: Abre la aplicación
- Desplázate a frontend-external y haz clic en las IP de los extremos del servicio.

Debería abrirse la aplicación y mostrarse una página como la siguiente:

Tarea 4: Crea una métrica basada en registros
En esta tarea, configurarás Cloud Logging para crear una métrica basada en registros, que es una métrica personalizada de Cloud Monitoring creada a partir de entradas de registros. Las métricas basadas en registros son útiles para contabilizar la cantidad 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 contar la cantidad de errores en tu servicio de frontend. Puedes usar la métrica en los paneles y en las alertas.
- Vuelve a la consola de Cloud y, desde el menú de navegación, abre Logging y haz clic en Explorador de registros (Logs Explorer).

- Habilita Mostrar consulta (Show query) y, en el cuadro Compilador de consultas, agrega la siguiente consulta:
resource.type="k8s_container"
severity=ERROR
labels."k8s-pod/app": "recommendationservice"

- Haz clic en Ejecutar consulta (Run Query).
La consulta que estás usando te permite encontrar todos los errores del Pod de frontend. De cualquier manera, no deberías ver ningún resultado por el momento, ya que aún no hay errores.
- Para crear las métricas basadas en registros, haz clic en el menú desplegable Acciones (Actions) y selecciona Crear métrica (Create Metric).

- Asigna el nombre Error_Rate_SLI a la métrica y haz clic en Crear métrica (Create Metric) para guardar la métrica basada en registros:

Ahora la métrica aparece en la lista de métricas definidas por el usuario en la página Métricas basadas en registros.
Haz clic en Revisar mi progreso para verificar el objetivo. Crear una métrica basada en registros
Tarea 5: Crea una política de alertas
Las alertas permiten el reconocimiento oportuno de los problemas en tus aplicaciones de la nube para que puedas resolverlos con rapidez.
En esta tarea, usarás Cloud Monitoring para supervisar la disponibilidad de tu 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 la política de alertas, 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.
-
Una vez que se haya creado el espacio de trabajo, haz clic en Crear política en la parte superior.
Nota: Si es necesario, haz clic en Probar para usar el flujo actualizado de creación de alertas.
-
Haz clic en el menú desplegable Seleccionar una métrica (Select a metric). Anula la selección de la casilla de verificación Activo.
-
En el campo para filtrar por nombre de recurso o métrica, escribe Error_Rate.
-
Haz clic en Contenedor de Kubernetes > Métricas basadas en registros (Kubernetes Container > 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 período continuo en Rate.
-
Haz clic en Siguiente.
-
Establece 0.5 como valor del umbral.
Como era de esperar, no se produce 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.
Nota: En este lab no crearás un canal de notificaciones, pero deberías hacerlo para tus aplicaciones activas en producción, ya que te permite enviar notificaciones por correo electrónico, apps para dispositivos móviles, SMS, Pub/Sub y webhooks.
Haz clic en Revisar mi progreso para verificar el objetivo. Crear una política de alertas
Activa un error de aplicación
En esta sección, usarás un generador de cargas para crear algo de tráfico para tu aplicación web. Como hay un error que se ingresó de 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.
-
En el menú de navegación, selecciona Kubernetes Engine, luego, Puertas de enlace, Ingress y Service (Gateways, Services & Ingress) y, por último, haz clic en la pestaña Servicios (Services).
-
Busca el servicio loadgenerator-external y, luego, haz clic en el vínculo de endpoints.

Como alternativa, puedes abrir una nueva ventana o pestaña del navegador, y copiar y pegar la IP en el campo de 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 probar la carga de aplicaciones web. Puede simular una cantidad determinada de usuarios que llega a los extremos de tu aplicación de manera simultánea a una tasa determinada.
-
Simula 300 usuarios que utilizan la app con una tasa de generación de 30. Locust agregará 30 usuarios por segundo hasta que alcance los 300 usuarios.
-
En el campo de host, usarás frontend-external. Copia la URL de la página Puertas de enlace, Ingress y Service (asegúrate de excluir el puerto). Por ejemplo:

- Haz clic en el botón Start swarming. Deberías tener cerca de 300 usuarios que visitan las URLs predefinidas en pocos segundos.

- Haz clic en la pestaña Failures para ver los errores que comienzan a aparecer. Notarás que hay muchos errores 500.

Mientras tanto, si haces clic en algún producto de la página principal, notarás que carga muy lento o, si haces clic en un producto, recibes errores como el siguiente:

Confirma las alertas y los errores de la aplicación
-
En la consola, 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 lo ves en ese momento, espera unos minutos y actualiza la página. La alerta puede tardar hasta 5 minutos en activarse.
-
Haz clic en el vínculo del incidente:

Esto te llevará a la página de detalles.
- En la sección Registros (Logs), haz clic en Ver en el Explorador de registros (View in Logs Explorer) y selecciona el ID del proyecto en el menú desplegable para ver los registros del Pod.

- También puedes hacer clic en la etiqueta Error en el campo Registros (Logs) para consultar solo los errores.
Como alternativa, puedes hacer clic en el campo de vista previa de consultas 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 . El menú desplegable permite agregar varios valores de gravedad.
El resultado agregará severity=ERROR a tu consulta. Una vez que hayas hecho esto, deberías tener todos los errores del Pod recommendationservice.

- Revisa los detalles de los errores expandiendo cada evento de error. Por ejemplo:

-
Expande textPayload.
-
Haz clic en el mensaje de error y elige Agregar campo a 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. Según los mensajes de error, parece que RecommendationService no se pudo conectar a algún servicio downstream 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.

En 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 obtener información.
Soluciona problemas con el panel y los registros de Kubernetes
-
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 a 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 2 maneras de llegar con facilidad a tus registros de contenedores:
- Haz clic en la pestaña Registros (Logs) para obtener una vista rápida de los registros más recientes. Luego, haz clic en el botón de vínculo externo en la esquina superior derecha del panel de registros para volver al Explorador de registros.

- En la página de resumen, haz clic en el vínculo Registros de contenedores (Container logs) de la página Detalles de la implementación.

Estás en la página Explorador de registros otra vez, ahora con una consulta predefinida filtrada específicamente para los registros del contenedor que consultaste en GKE.
Desde el Visor de registros, tanto los mensajes de registro como el histograma muestran que el contenedor analiza de 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, podría haber un error de entorno de ejecución como el siguiente:
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation
Esta 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.
- En la terminal de Cloud Shell, ejecuta el siguiente comando:
grep -nri 'successfully parsed product catalog json' src
Tu resultado debería verse como el siguiente, que tiene el nombre del archivo fuente con un número de línea:
Resultado:
src/productcatalogservice/server.go:237: log.Info("successfully parsed product catalog json")
- Para ver el archivo fuente, haz clic en el botón Open Editor del menú de Cloud Shell y, luego, en Open in New Window. Si ves el error Unable to load code editor because third-party cookies are disabled, haz clic en el ojo en la parte superior de la página de Chrome.

- Haz clic en el archivo
microservices-demo/src/productcatalogservice/server.go, desplázate hasta la línea 237 y encontrarás los registros del método 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 invoca, lo que parece innecesario.
Si buscas en el código la variable reloadCatalog, puedes ver que está controlada por la variable de entorno ENABLE\_RELOAD y escribe un mensaje de registro para su estado.

- Con el archivo
server.go abierto y Gemini Code Assist habilitado en el IDE, busca el ícono
en la esquina superior derecha del editor.
En este caso, le pedirás ayuda a Gemini Code Assist para explicarle la implementación del servidor a un nuevo miembro de tu equipo.
-
Haz clic en el ícono de Gemini Code Assist: Smart Actions
y selecciona Explain this.
-
Gemini Code Assist abre un panel de chat con la instrucción Explain this completada previamente. En el cuadro de texto intercalado del chat de Code Assist, reemplaza la instrucción completada previamente por lo siguiente y haz clic en Enviar:
You are a Kubernetes Architect at Cymbal AI. A new team member is unfamiliar with this server implementation. Explain this server.go file in detail, breaking down its key components used in the code.
For the suggested improvements, don't update this file.
La explicación del código en el archivo server.go aparece en el chat de Gemini Code Assist.
Revisa de nuevo los registros, agrega este mensaje a tu consulta y determina si hay alguna entrada existente.
- Vuelve a la pestaña donde tienes abierto el Explorador de registros y agrega la siguiente línea a la consulta:
jsonPayload.message:"catalog reloading"
Esta será la consulta completa en tu compilador de consultas:
resource.type="k8s_container"
resource.labels.location="{{{project_0.startup_script.zone | ZONE}}}"
resource.labels.cluster_name="central"
resource.labels.namespace_name="default"
labels.k8s-pod/app="productcatalogservice"
jsonPayload.message:"catalog reloading"
- Haz clic en Ejecutar consulta una vez más y verás el mensaje "Enable catalog reloading" en el registro del contenedor. Esto confirma que está habilitada la función para volver a cargar el catálogo.

En este punto, puedes tener la certeza de que el error en el frontend 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 fallara y que se generara el error.
Tarea 6: Corrige el problema y verifica el resultado
Sobre la base del código y en lo que ves en los registros, puedes corregir el problema inhabilitando la recarga del catálogo.
En esta tarea, quitarás la variable de entorno ENABLE_RELOAD del servicio de catálogo de productos. Una vez que realices los cambios en la variante, podrás 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 cerró.
-
Ejecuta el siguiente comando:
grep -A1 -ni ENABLE_RELOAD release/kubernetes-manifests.yaml
El resultado muestra el número de línea de la variable de entorno en el archivo de manifiesto.
Resultado:
373: - name: ENABLE_RELOAD
374- value: "1"
- Ejecuta el siguiente comando para borrar esas dos líneas que inhabilitarán la recarga:
sed -i -e '373,374d' release/kubernetes-manifests.yaml
- Luego, ejecuta el siguiente comando para volver a aplicar el archivo de manifiesto:
kubectl apply -f release/kubernetes-manifests.yaml
Notarás que solo productcatalogservice está configurado. Los demás servicios no cambiaron.
- Regresa a la página de detalles de la implementación (menú de navegación > Kubernetes Engine > Cargas de trabajo > productcatalogservice) y espera hasta que el Pod se ejecute correctamente. Espera de 2 a 3 minutos o hasta que puedas confirmar que dejó de fallar.

- Si vuelves a hacer clic en el vínculo Registros de contenedores (Container logs), verás que desaparecieron los mensajes repetidos
successfully parsing the catalog json:

-
Si te diriges de nuevo a la URL de la app web y haces clic en los productos de la página principal, notarás que es mucho más responsiva y no deberías encontrar ningún error de HTTP.
-
Vuelve al generador de cargas y haz clic en el botón Reset Stats en la parte superior derecha. El porcentaje de fallas se restableció, y no deberías ver que se incremente más.

Todo lo anterior indica que se corrigió el problema. Si aún ves el error 500, espera unos minutos más y haz clic en un producto otra vez.
¡Felicitaciones!
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 similar al que usarías para solucionar 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 se activó la alerta. En la alerta, redujiste el problema a servicios particulares a través de Cloud Logging. Luego, usaste Cloud Monitoring y la IU de GKE para consultar las métricas de los servicios de GKE. Para solucionar el problema, implementaste una configuración actualizada en GKE y confirmaste que la corrección solucionó los errores en los registros.
Próximos pasos y más información
- Este lab se basa en esta entrada de blog sobre cómo usar Logging para tus aplicaciones que se ejecutan en GKE.
- La publicación de seguimiento sobre cómo los equipos de DevOps pueden usar Cloud Monitoring y Logging para detectar problemas con rapidez también puede ser de tu interés.
Capacitación y certificación de Google Cloud
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: 26 de agosto de 2025
Prueba más reciente del lab: 14 de octubre de 2025
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.