Se gli errori dell'applicazione non vengono visualizzati nella Error Reporting, segui i passaggi che seguono per risolvere il problema.
Prima di iniziare
Verifica che Error Reporting possa analizzare le voci di log.
Error Reporting è un servizio globale basato su Cloud Logging e può analizzare le voci di log quando si verificano tutte le seguenti condizioni:
- I workload Assured sono disattivati. Per ulteriori informazioni, consulta la Panoramica di Assured Workloads.
- Le chiavi di crittografia gestite dal cliente (CMEK) sono disattivate in tutti i bucket dei log che memorizzano la voce di log. Per informazioni su come determinare la configurazione CMEK per un bucket di log, consulta Verificare l'attivazione della chiave.
- Il bucket dei log soddisfa una delle seguenti condizioni:
- Il bucket dei log viene archiviato nello stesso progetto in cui hanno avuto origine le voci di log.
- Le voci di log sono state instradate a un progetto, che le ha archiviate in un bucket di log di sua proprietà.
Per visualizzare un elenco degli sink che hai configurato, esegui il seguente comando:
gcloud logging sinks list
Il comando restituisce un output simile al seguente:
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)
In questo esempio, il progetto Google Cloud di origine delle voci di log è
my-team-project
. Di conseguenza:- Error Reporting può analizzare le voci di log instradate dagli scoli
_Default
,_Required
elogs-from-samples
perché il bucket di log viene archiviato dallo stesso progetto che instrada le voci di log. - Error Reporting non può analizzare le voci di log archiviate nel bucket di log denominato
test-logs
perché l'obiettivo inmy-team-project
instrada le voci di log a un bucket di log in un altro progetto.
Assicurati di aver installato Google Cloud CLI.
Assicurati di avere attivato il componente
beta
per l'interfaccia a riga di comando gcloud.
Quando utilizzi i log
Questa sezione fornisce assistenza per la risoluzione dei problemi quando i dati sugli errori vengono scritti nei bucket Cloud Logging e ti affidi a Error Reporting per analizzare automaticamente questi bucket di log.
Genera una voce di log di esempio
Per confermare le impostazioni del progetto, puoi generare programmatically una voce di log che verrà rilevata da Error Reporting con il seguente 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}}}'
Quindi apri Error Reporting e verifica che sia visualizzato l'errore appena creato.
Conferma il formato della voce di log
Vai alla pagina Cloud Logging e individua una voce di log contenente i dati delle eccezioni inviati dall'applicazione.
Verifica che la voce di log utilizzi il formato previsto.
Quando utilizzi l'API Error Reporting
-
Enable the required API.
Invia un errore di test
Prova a inviare manualmente un errore al servizio.
Puoi segnalare un errore di test a Error Reporting utilizzando il seguente
gcloud
comando: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)"
Puoi utilizzare un comando cURL per testare le chiamate all'API REST. Sostituisci
PROJECT_ID
eAPI_KEY
con i valori validi prima di inviare il seguente 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
Conferma il payload inviato
Assicurati che l'applicazione invii i dati delle eccezioni all'API nel formato corretto e che contenga gli attributi richiesti.
Viene registrata un'analisi dello stack, ma non è riconosciuta da Error Reporting
Registri un errore utilizzando il campo message
di un jsonPayload
e prevedi che Error Reporting lo acquisisca. Tuttavia, i dati di errore
non vengono acquisiti.
Per risolvere questo errore, prova quanto segue:
Assicurati che
jsonPayload
non includa un campostack_trace
oexception
. Se questi campi sono presenti, il campomessage
non viene valutato.Assicurati che la struttura della analisi dello stack sia in uno dei formati dei linguaggi di programmazione supportati. La analisi dello stack non viene acquisita da Error Reporting quando viene utilizzato un formato non supportato.
Per ulteriori informazioni, consulta Errori di formato nei log.