Comprobar si una aplicación que ha fallado tiene errores con Error Reporting

Error Reporting proporciona un único lugar para monitorizar las condiciones de error de todas las aplicaciones y servicios de un Google Cloud proyecto, así como de las aplicaciones de Amazon Elastic Compute Cloud (EC2).

En esta guía, aprenderemos a hacer lo siguiente:

  1. Simula un error de un servicio en un proyecto de Google Cloud .

  2. Usa Error Reporting para ver el error y cambiar su estado, de forma que otros miembros de tu equipo sepan que se está solucionando el problema.

  3. Configura las notificaciones para saber cuándo se producen nuevos tipos de errores.


Para seguir las instrucciones paso a paso de esta tarea directamente en la Google Cloud consola, haga clic en Ayúdame:

Guíame


Antes de empezar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Abre un Cloud Shell para tu Google Cloud proyecto. Mientras se inicia, se muestra el mensaje Conectando.

    Abre Cloud Shell.

  7. Simular un error

    1. Para generar 11 errores de muestra, ejecuta la siguiente secuencia de comandos en Cloud Shell:

        COUNTER=0
        while [  $COUNTER -lt 11 ]; do
            gcloud beta error-reporting events report --service tutorial --service-version v$((COUNTER/10+1)) \
                --message "java.lang.RuntimeException: Error rendering template $COUNTER
                  at com.example.TestClass.test(TestClass.java:51)
                  at com.example.AnotherClass(AnotherClass.java:25)
                  at javax.servlet.http.HttpServlet.service (HttpServlet.java:617)
                  at javax.servlet.http.HttpServlet.service (HttpServlet.java:717)"
            if [ $COUNTER -eq 10 ]; then
              echo "All sample errors reported."
            fi
            let COUNTER=COUNTER+1
        done
      

      Cuando la secuencia de comandos termine de generar todos los errores, imprimirá la siguiente línea:

      All sample errors reported.

    Ver los errores en Error Reporting

    1. En la Google Cloud consola, ve a la página Error Reporting:

      Ve a Error Reporting.

      También puedes encontrar esta página mediante la barra de búsqueda.

      El panel de control de informes de errores muestra una lista de resumen de cada error encontrado y el número de veces que se ha producido. Si la opción Recarga automática está activada, Informes de errores vuelve a cargar automáticamente la lista de errores cada 10 segundos.

      En la siguiente captura de pantalla se muestra una página de ejemplo de informes de errores:

      Interfaz de usuario que muestra la lista de errores.

    2. Haga clic en el nombre del error para ver la página de detalles, que contiene toda la información disponible sobre el error. Si Gemini está habilitado en el proyecto, puedes usarlo para obtener sugerencias para solucionar problemas.

    Configurar notificaciones

    Puedes configurar Error Reporting para que te avise cuando se produzca un nuevo tipo de error. No se envían notificaciones cuando hay nuevas instancias de errores ya existentes:

    1. En la Google Cloud consola, ve a la página Error Reporting:

      Ve a Error Reporting.

      También puedes encontrar esta página mediante la barra de búsqueda.

    2. Para habilitar las notificaciones por correo, haz clic en Más y selecciona Activar notificaciones de errores nuevos del proyecto en la lista desplegable.

    3. Para generar nuevos tipos de errores, haz clic en Activar Cloud ShellActivar botón Shell y ejecuta la siguiente secuencia de comandos:

        COUNTER=0
        while [ $COUNTER -lt 3 ]; do
              gcloud beta error-reporting events report --service tutorial --service-version v1 \
                  --message "java.lang.ArrayIndexOutOfBoundsException: $COUNTER
                    at com.example.AppController.createUser(AppController.java:42)
                    at com.example.User(User.java:31)
                    at javax.servlet.http.HttpServlet.service (HttpServlet.java:617)
                    at javax.servlet.http.HttpServlet.service (HttpServlet.java:717)"
            if [ $COUNTER -eq 10 ]; then
              echo "All sample errors reported."
            fi
            let COUNTER=COUNTER+1
        done
      

      Cuando la secuencia de comandos termine de generar todos los errores, imprimirá la siguiente línea:

      All sample errors reported.

    4. Busca en tu correo un mensaje de "Stackdriver Notifications".

    Generar mensajes de error desde una aplicación de App Engine

    Aunque los mensajes de ejemplo que has generado a partir de las secuencias de comandos simulan completamente las condiciones de error en Error Reporting, si quieres generar errores desde un servicio real que se ejecute en tu proyecto Google Cloud , sigue los pasos que se indican en esta sección.

    Cómo implementar una aplicación

    Para descargar y desplegar una aplicación en App Engine, sigue estos pasos:

    1. Descarga y configura la aplicación desde el proyecto de GitHub python-docs-samples:

      1. Clona el proyecto en Cloud Shell:

        git clone https://github.com/GoogleCloudPlatform/python-docs-samples
        

        Git devuelve un mensaje similar a este:

        git clone https://github.com/GoogleCloudPlatform/python-docs-samples
        Cloning into 'python-docs-samples'...
        
      2. Crea un entorno de Python aislado y actívalo:

        cd python-docs-samples/appengine/standard_python3/hello_world
        virtualenv env -p python3
        source env/bin/activate
        
      3. Instala las dependencias:

        pip install -r requirements.txt
        
    2. Verifica que la instalación y la configuración de la aplicación se hayan realizado correctamente:

      1. Ejecuta la aplicación:

        python main.py
        
      2. Para ver la aplicación en una página web local, haz clic en el enlace que se muestra en Cloud Shell. En la página web se muestra Hello World!.

      3. Para detener la aplicación en ejecución, introduce Ctrl-C en Cloud Shell.

    3. Sube tu aplicación a App Engine:

      gcloud app deploy
      

      Si se te pide que elijas una región de implementación, selecciona una que esté cerca de ti. Escribe Y cuando se te pregunte si quieres continuar. Al cabo de unos instantes, la subida se completará.

    4. Para ver tu aplicación en un navegador, ejecuta el siguiente comando en Cloud Shell:

      gcloud app browse
      

      Si la CLI de Google Cloud no encuentra tu navegador, el comando anterior muestra un mensaje de error y un enlace. Haz clic en el enlace que se muestra. El mensaje Hello, World! se muestra en el navegador.

    Generar un error

    Para crear un error que Error Reporting detecte y muestre, haga lo siguiente:

    1. Editar main.py y cambiar

      return 'Hello World!
      

      a

      return 'Hello World!' + 1000
      

      Cuando se ejecuta, este cambio provoca una excepción de Python TypeError porque no se puede concatenar una cadena y un número entero.

    2. Sube la aplicación modificada a App Engine:

      gcloud app deploy
      
    3. Vuelve a la pestaña del navegador que contiene la aplicación en ejecución y vuelve a cargar la página. Debido a este cambio, en lugar de mostrar Hello, World!, la página muestra un mensaje de error:

      Internal Server Error
      The server encountered an internal error and was unable to complete your
      request. Either the server is overloaded or there is an error in the
      application.
      

      Si no ves este mensaje, espera un minuto y vuelve a cargarla. Puede que tarde unos minutos en activarse la nueva versión.

    Ver el error en Error Reporting

    Para ver el error, siga las instrucciones de la sección anterior Ver los errores en Error Reporting.

    Limpieza

    Para evitar que se apliquen cargos en tu cuenta de Google Cloud por los recursos utilizados en esta página, sigue estos pasos.

    1. In the Google Cloud console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.

    Siguientes pasos