Solución de problemas

En este documento, se describen situaciones comunes de solución de problemas para Error Reporting.

No se muestran los eventos de error enviados a la API de Error Reporting

Envías eventos de errores a tu proyecto de Google Cloud con la API de Error Reporting. Sin embargo, esos eventos no se muestran en la página Error Reporting.

Para solucionar este problema, haz lo siguiente:

  1. Asegúrate de que la API de Error Reporting esté habilitada.

    Enable the required API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  2. Abre Cloud Shell y usa Google Cloud CLI para verificar que puedes enviar eventos de error a tu proyecto:

    1. Ejecuta el comando siguiente:

      gcloud beta error-reporting events report --service Manual --service-version test1 \
        --message "java.lang.TestError: msg
          at com.example.TestClass.test(TestClass.java:51)
          at com.example.AnotherClass(AnotherClass.java:25)"
      
    2. Ve a la página Error Reporting y verifica que muestre un error titulado TestError: msg.

      Ir a Error Reporting

    3. Ve a la página Explorador de registros y busca TestError en tus entradas de registro. La entrada de registro se crea automáticamente.

      Accede al Explorador de registros.

  3. Verifica que tu aplicación envíe el evento de error al extremo report y que la aplicación dé formato al cuerpo de la solicitud como un objeto ReportedErrorEvent. También debes verificar que se estén creando entradas de registro. Cuando usas la API de Error Reporting, se generan automáticamente entradas de registro con mensajes de error con el formato correcto y se escriben en Cloud Logging. Estas entradas de registro se escriben en un registro cuyo logName tiene el siguiente formato:

    projects/PROJECT_ID/clouderrorreporting.googleapis.com%2Freported_errors
    

Se muestran eventos de error, pero la API de Error Reporting está inhabilitada

Inhabilitaste la API de Error Reporting. Sin embargo, la página Error Reporting de la consola de Google Cloud muestra eventos de error.

Se prevé que esto suceda. Los eventos de error se crean en respuesta a las llamadas a la API de Error Reporting que se realizan al extremo report. Sin embargo, los eventos de error también se infieren cuando Error Reporting puede analizar tus datos de registro.

Los eventos de error no se infieren a partir de los datos de registro

Esperas que Error Reporting analice tus datos de registro y deduzca eventos de error. Sin embargo, la página Error Reporting no muestra ningún evento de error, aunque las entradas de registro registran datos de errores.

Para resolver esta situación, haz lo siguiente:

  1. Verifica que Error Reporting pueda analizar tus entradas de registro.

    Error Reporting es un servicio global compilado en Cloud Logging y puede analizar entradas de registro cuando se cumplen todas las siguientes condiciones:

    • Las cargas de trabajo de Assured Workloads están inhabilitadas. Para obtener más información, consulta la Descripción general de Assured Workloads.
    • Las claves de encriptación administradas por el cliente (CMEK) están inhabilitadas en todos los buckets de registros que almacenan la entrada de registro. Error Reporting no puede almacenar entradas de registro en buckets de registros que tienen habilitada la CMEK. Para obtener información sobre cómo determinar la configuración de CMEK de un bucket de registros, consulta Verifica la habilitación de la clave.
    • El bucket de registros satisface una de las siguientes condiciones:
      • El bucket de registros se almacena en el mismo proyecto en el que se originaron las entradas de registro.
      • Las entradas de registro se enrutaron a un proyecto y, luego, ese proyecto las almacenó en un bucket de registros que le pertenece.

    Para ver una lista de los receptores que configuraste, ejecuta el siguiente comando:

    gcloud logging sinks list
    

    El comando muestra un resultado similar al siguiente:

    NAME               DESTINATION                                                                                                FILTER
    _Default           logging.googleapis.com/projects/my-team-project/locations/global/buckets/_Default                          NOT LOG_ID("cloudaudit.googleapis.com/activity") AND NOT LOG_ID("externalaudit.googleapis.com/activity") AND NOT LOG_ID("cloudaudit.googleapis.com/system_event") AND NOT LOG_ID("externalaudit.googleapis.com/system_event") AND NOT LOG_ID("cloudaudit.googleapis.com/access_transparency") AND NOT LOG_ID("externalaudit.googleapis.com/access_transparency")
    _Required          logging.googleapis.com/projects/my-team-project/locations/global/buckets/_Required                         LOG_ID("cloudaudit.googleapis.com/activity") OR LOG_ID("externalaudit.googleapis.com/activity") OR LOG_ID("cloudaudit.googleapis.com/system_event") OR LOG_ID("externalaudit.googleapis.com/system_event") OR LOG_ID("cloudaudit.googleapis.com/access_transparency") OR LOG_ID("externalaudit.googleapis.com/access_transparency")
    logs-from-samples  logging.googleapis.com/projects/my-team-project/locations/global/buckets/sample-bucket                     (empty filter)
    regional_logs      logging.googleapis.com/projects/my-team-project/locations/europe-west1/buckets/bucket_for_regional_logs    (empty filter)
    test-logs          logging.googleapis.com/projects/team-b-project/locations/global/buckets/test-bucket                        (empty filter)
    

    En este ejemplo, el proyecto Google Cloud de origen de las entradas de registro esmy-team-project. Estos fueron algunos de los resultados:

    • Error Reporting puede analizar las entradas de registro que enrutan los receptores _Default, _Required y logs-from-samples porque el bucket de registros se almacena en el mismo proyecto que enruta las entradas de registro.
    • Error Reporting no puede analizar las entradas de registro almacenadas en el bucket de registros llamado test-logs porque el receptor en my-team-project enruta las entradas de registro a un bucket de registros en un proyecto diferente.
  2. Usa Google Cloud CLI para verificar que puedes escribir entradas de registro que generen un evento de error.

    1. Ejecuta el comando siguiente:

      gcloud logging write --payload-type=json test-errors-log \
        '{"serviceContext":
          {"service": "manual-testing"},
          "message": "Test Error\n at /test.js:42:42",
          "context": {"httpRequest":
            {"url": "/test","method": "GET","responseStatusCode": 500}}}'
      
    2. Ve a la página Explorador de registros y busca Test Error en tus entradas de registro.

      Accede al Explorador de registros.

      Gcloud CLI genera esta entrada de registro. Si la entrada de registro no está vinculada a un grupo de errores, espera aproximadamente un minuto y actualiza la página. Los eventos de error se detectan después de que se ingiere una entrada de registro.

    3. Ve a la página Error Reporting y verifica que se muestre un error titulado Test Error.

      Ir a Error Reporting

  3. Ve a la página del Explorador de registros y verifica que tu aplicación escriba entradas de registro con el formato esperado.

    Accede al Explorador de registros.

    Busca una entrada de registro que contenga datos de excepción enviados desde tu aplicación y verifica el formato. Si el formato no es correcto, actualiza tu aplicación.

Una entrada de registro contiene un seguimiento de pila, pero no se crea ningún evento de error

Generas una entrada de registro cuyo campo message contiene un seguimiento de pila. Sin embargo, en la página Error Reporting no se muestra un evento de error correspondiente.

Para resolver este error, prueba lo siguiente:

  • Asegúrate de que el objeto jsonPayload no incluya un campo stack_trace o exception. Cuando esos campos están presentes, no se evalúa el campo message.

  • Asegúrate de que la estructura del registro de seguimiento de pila esté en uno de los formatos de lenguaje de programación admitidos. Error Reporting no captura el seguimiento de pila cuando se usa un formato no compatible.

Para obtener más información, consulta Cómo dar formato a una entrada de registro para informar eventos de error.