Solución de problemas

Si los errores de tu aplicación no aparecen en Error Reporting, sigue estos pasos para solucionar el problema.

Antes de comenzar

  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. 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 almacenó esas entradas de registro en un bucket de registros que le pertenece.
    Si almacenas tus entradas de registro en buckets de registros con la CMEK habilitada, puedes seguir usando Error Reporting. Sin embargo, debes usar las bibliotecas cliente de Error Reporting o la API de Error Reporting. Para obtener más información, consulta la descripción general de la API de Error Reporting y las bibliotecas cliente de Error Reporting.

    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. Asegúrate de tener instalada Google Cloud CLI.

  3. Asegúrate de tener habilitado el componente beta para la CLI de gcloud.

Cuando usar los registros

En esta sección, se proporciona asistencia para solucionar problemas cuando los datos de error se escriben en buckets de Cloud Logging y dependes de Error Reporting para analizar automáticamente esos buckets de registros.

Genera una entrada de registro como ejemplo

Para confirmar la configuración de tu proyecto, puedes generar de manera programática una entrada de registro que Error Reporting detectará con el siguiente comando gcloud:

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}}}'

A continuación, abre Error Reporting y confirma que ves el error creado recientemente.

Confirma el formato de entrada de registro

Navega a la página de Cloud Logging y busca una entrada de registro que contenga datos de excepción enviados desde tu aplicación.

Confirma que la entrada de registro utiliza el formato esperado.

Cuando usar una API de Error Reporting

  1. Enable the required API.

    Enable the API

  2. Envía un error de prueba

    Intenta enviar un error al servicio de forma manual.

    Puedes informar un error de prueba a Error Reporting con el siguiente comando gcloud:

    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)"
    

    Puedes usar un comando cURL para probar tus llamadas a la API de REST. Reemplaza PROJECT_ID y API_KEY con los valores válidos antes de enviar el siguiente comando:

    curl -X POST -H "Content-Type: application/json" \
      -d '{"message":"java.lang.TestError: msg\n\tat com.example.TestClass.test(TestClass.java:51)\n\tat com.example.AnotherClass(AnotherClass.java:25)","serviceContext":{"service":"manual-testing"}}' \
      https://clouderrorreporting.googleapis.com/v1beta1/projects/PROJECT_ID/events:report?key=API_KEY
    
  3. Confirma la carga útil enviada

    Asegúrate de que tu aplicación esté enviando datos de excepción a la API en el formato correcto y que contenga los atributos requeridos.

Se registra un seguimiento de pila, pero Error Reporting no lo reconoce

Registras un error con el campo message de un jsonPayload y esperas que Error Reporting capture el error. Sin embargo, no se capturan los datos de error.

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 Errores de formato en los registros.