Si los errores de tu aplicación no aparecen en Error Reporting, sigue estos pasos para solucionar el problema.
Antes de empezar
Verifica que Error Reporting pueda analizar tus entradas de registro.
Error Reporting es un servicio global basado en Cloud Logging que puede analizar entradas de registro cuando se cumplen todas las condiciones siguientes:
- 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 cifrado gestionadas por el cliente (CMEK) están inhabilitadas en todos los segmentos de registro que almacenan la entrada de registro. Error Reporting no puede almacenar entradas de registro en segmentos de registro que tengan habilitada la CMEK. Para obtener información sobre cómo determinar la configuración de CMEK de un contenedor de registro, consulta Verificar la habilitación de claves.
- El contenedor de registro cumple una de las siguientes condiciones:
- El segmento de registro 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, a continuación, ese proyecto almacenó las entradas de registro en un segmento de registro de su propiedad.
Para ver una lista de los receptores que has configurado, ejecuta el siguiente comando:
gcloud logging sinks list
El comando devuelve 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 de origen de las entradas de registro es Google Cloud
my-team-project
. En este caso, ocurre lo siguiente:- Error Reporting puede analizar las entradas de registro enrutadas por los receptores
_Default
,_Required
ylogs-from-samples
porque el segmento de registro lo almacena el mismo proyecto que enruta las entradas de registro. - Informes de errores no puede analizar las entradas de registro almacenadas en el segmento de registro
test-logs
porque el receptor demy-team-project
enruta las entradas de registro a un segmento de registro de otro proyecto.
Asegúrate de que tienes instalado Google Cloud CLI.
Asegúrate de que el componente
beta
esté habilitado en gcloud CLI.
Al usar registros
En esta sección se ofrece asistencia para solucionar problemas cuando los datos de errores se escriben en los contenedores de Cloud Logging y se utiliza Error Reporting para analizar automáticamente esos contenedores de registros.
Generar una entrada de registro de ejemplo
Para confirmar la configuración de tu proyecto, puedes generar mediante programación 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 que acabas de crear.
Confirmar el formato de la entrada de registro
Ve a la página Cloud Logging y busca una entrada de registro que contenga datos de excepciones enviados desde tu aplicación.
Confirma que la entrada del registro usa el formato esperado.
Al usar la API Error Reporting
-
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 theserviceusage.services.enable
permission. Learn how to grant roles. Enviar un error de prueba
Prueba a enviar un error al servicio manualmente.
Puedes informar de un error de prueba a Error Reporting mediante 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 REST. Sustituye
PROJECT_ID
yAPI_KEY
por 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
Confirmar la carga útil enviada
Asegúrate de que tu aplicación envíe datos de excepciones a la API en el formato correcto y de que contenga los atributos obligatorios.
Se registra un rastreo de la pila, pero Error Reporting no lo reconoce
Registras un error mediante el campo message
de un jsonPayload
y esperas que Error Reporting registre el error. Sin embargo, los datos de error no se registran.
Para solucionar este problema, prueba lo siguiente:
Comprueba que
jsonPayload
no incluya un campostack_trace
niexception
. Cuando estos campos están presentes, no se evalúa el campomessage
.Asegúrate de que la estructura del rastreo de pila tenga uno de los formatos de lenguaje de programación admitidos. Error Reporting no captura el seguimiento de pila cuando se usa un formato no admitido.
Para obtener más información, consulta Errores de formato en los registros.