Se gli errori dell'applicazione non vengono visualizzati in Error Reporting, segui questi passaggi 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 sono vere tutte le seguenti condizioni:
- I workload Assured Workloads sono disabilitati. Per saperne di più, consulta la panoramica di Assured Workloads.
- Chiavi di crittografia gestite dal cliente (CMEK) è disattivata in tutti i bucket di log che archiviano la voce di log. Per informazioni su come determinare la configurazione CMEK per un bucket log, vedi Verificare l'attivazione della chiave.
- Il bucket di log soddisfa una delle seguenti condizioni:
- Il bucket di 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 dei sink che hai configurato, esegui questo 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 dai sink
_Default
,_Required
elogs-from-samples
perché il bucket di log è memorizzato 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é il sink inmy-team-project
indirizza le voci di log a un bucket di log in un progetto diverso.
Assicurati di aver installato Google Cloud CLI.
Assicurati di aver attivato il componente
beta
per gcloud CLI.
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 a livello di programmazione 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 l'errore appena creato sia visibile.
Conferma il formato della voce di log
Vai alla pagina Cloud Logging e individua una voce di log che contiene i dati delle eccezioni inviati dalla tua 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 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)"
Puoi utilizzare un comando cURL per testare le chiamate API REST. Sostituisci
PROJECT_ID
eAPI_KEY
con i tuoi 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
Confermare il payload inviato
Assicurati che la tua 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 viene riconosciuta da Error Reporting
Registri un errore utilizzando il campo message
di un jsonPayload
e ti aspetti che
Error Reporting lo acquisisca. Tuttavia, i dati relativi agli errori
non vengono acquisiti.
Per risolvere questo errore, prova quanto segue:
Assicurati che
jsonPayload
non includa un campostack_trace
oexception
. Quando questi campi sono presenti, il campomessage
non viene valutato.Assicurati che la struttura dello analisi dello stack sia in uno dei formati dei linguaggi di programmazione supportati. Lo analisi dello stack non viene acquisito da Error Reporting quando viene utilizzato un formato non supportato.
Per saperne di più, consulta la sezione Errori di formato nei log.