Questo documento descrive scenari comuni di risoluzione dei problemi per Error Reportingi.
Gli eventi di errore inviati all'API Error Reporting non vengono visualizzati
Invii gli eventi di errore al tuo progetto Google Cloud utilizzando l'API Error Reporting. Tuttavia, questi eventi non vengono visualizzati nella pagina Error Reporting.
Per risolvere il problema, segui questi passaggi:
Assicurati che l'API Error Reporting sia abilitata.
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.enablepermission. Learn how to grant roles.Apri Cloud Shell e utilizza Google Cloud CLI per verificare di poter inviare eventi di errore al tuo progetto:
Esegui questo 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)"Vai alla pagina Error Reporting e verifica che venga visualizzato un errore intitolato
TestError: msg.Vai alla pagina Esplora log e cerca le voci di log per
TestError. La voce di log viene creata automaticamente.
Verifica che l'applicazione invii l'evento di errore all'endpoint
reporte che formatti il corpo della richiesta come oggettoReportedErrorEvent. Devi anche verificare che vengano create le voci di log. Quando utilizzi l'API Error Reporting, le voci di log con messaggi di errore formattati correttamente vengono generate e scritte automaticamente in Cloud Logging. Queste voci di log vengono scritte in un log il cuilogNameè formattato nel seguente modo:projects/PROJECT_ID/clouderrorreporting.googleapis.com%2Freported_errors
Gli eventi di errore vengono visualizzati, ma l'API Error Reporting è disattivata
Hai disattivato l'API Error Reporting. Tuttavia, la pagina Error Reporting della console Google Cloud mostra eventi di errore.
Questo è un comportamento previsto. Gli eventi di errore vengono creati in risposta alle chiamate API Error Reporting effettuate all'endpoint report.
Tuttavia, gli eventi di errore vengono dedotti anche quando Error Reporting può
analizzare i dati di log.
Gli eventi di errore non vengono dedotti dai dati di log
Prevedi che Error Reporting analizzi i dati di log e deduca gli eventi di errore. Tuttavia, la pagina Report errori non mostra eventi di errore anche se le voci di log registrano i dati degli errori.
Per risolvere il problema, procedi nel seguente modo:
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.
- Le chiavi di crittografia gestite dal cliente (CMEK) sono disattivate in tutti i bucket di log che archiviano la voce di log. Error Reporting non può archiviare le voci di log nei bucket di log in cui è abilitata CMEK. Per informazioni su come determinare la configurazione CMEK per un bucket di log, vedi Verifica dell'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 listIl 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,_Requiredelogs-from-samplesperché 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-logsperché il sink inmy-team-projectindirizza le voci di log a un bucket di log in un progetto diverso.
Utilizza Google Cloud CLI per verificare di poter scrivere voci di log che generano un evento di errore.
Esegui questo comando:
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}}}'Vai alla pagina Esplora log e cerca le voci di log per
Test Error.Questa voce di log viene generata da gcloud CLI. Se la voce di log non è collegata a un gruppo di errori, attendi circa un minuto e aggiorna la pagina. Gli eventi di errore vengono rilevati dopo l'importazione di una voce di log.
Vai alla pagina Error Reporting e verifica che venga visualizzato un errore intitolato
Test Error.
Vai alla pagina Esplora log e verifica che la tua applicazione stia scrivendo voci di log con il formato previsto.
Individua una voce di log che contenga i dati delle eccezioni inviati dalla tua applicazione e verifica il formato. Se il formato non è corretto, aggiorna la tua richiesta.
Una voce di log contiene un'analisi dello stack, ma non viene creato alcun evento di errore
Generi una voce di log il cui campo message contiene una analisi dello stack.
Tuttavia, la pagina Error Reporting non elenca un evento di errore corrispondente.
Per risolvere questo errore, prova quanto segue:
Assicurati che
jsonPayloadnon includa un campostack_traceoexception. Quando questi campi sono presenti, il campomessagenon viene valutato.Assicurati che la struttura dello 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 saperne di più, vedi Formattare una voce di log per segnalare eventi di errore.