Risolvere i problemi

Se gli errori dell'applicazione non vengono visualizzati in Error Reporting, procedi nel seguente modo per risolvere il problema.

Prima di iniziare

  1. Verifica che le chiavi di crittografia gestite dal cliente (CMEK) siano disabilitate nel tuo bucket di log.

    Quando i log sono protetti con CMEK, non vengono resi disponibili a Error Reporting e pertanto non è possibile identificare gruppi di errori. Error Reporting non è disponibile per nessuno dei seguenti log:

    • Log archiviati in un bucket di log abilitato CMEK.
    • Log archiviati in più bucket di log in cui almeno un bucket di log è abilitato per CMEK.
    • Log archiviati in qualsiasi bucket di log all'interno di un'organizzazione, quando un criterio a livello di organizzazione richiede l'abilitazione di CMEK.

    Per informazioni su come determinare la configurazione CMEK per un bucket di log, consulta Verificare l'abilitazione della chiave.

  2. Verifica che Error Reporting possa analizzare i tuoi log.

    Error Reporting può analizzare solo le voci di log archiviate nei bucket Cloud Logging che si trovano nell'area geografica global in cui i progetti Google Cloud di origine e di destinazione coincidono.

    Per verificare se Error Reporting può analizzare i tuoi log, verifica di aver archiviato i log nei bucket nella regione global in cui i progetti Google Cloud di origine e di destinazione coincidono.

    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 di origine dei log di Google Cloud è my-team-project. Di conseguenza:

    • Error Reporting può analizzare i log con routing dai sink _Default, _Required e logs-from-samples, poiché eseguono il routing dei log ai bucket nella regione global all'interno dello stesso progetto.
    • Error Reporting non può analizzare i log con routing dal sink regional_logs in quanto indirizza i log a un bucket a livello di regione nella regione europe-west1.
    • Error Reporting non può analizzare i log con routing dal sink test-logs poiché indirizza i log a un progetto diverso (team-b-project) rispetto al progetto di origine.
  3. Assicurati di aver installato Google Cloud CLI.

  4. Assicurati di avere abilitato 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 di errore 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 in modo programmatico una voce di log che verrà scelta da Error Reporting con il comando gcloud seguente:

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

Poi apri Error Reporting e verifica che l'errore appena creato venga visualizzato.

Conferma il formato della voce di log

Vai alla pagina Cloud Logging e individua una voce di log contenente i dati delle eccezioni inviati dalla tua applicazione.

Verifica che la voce di log utilizzi il formato previsto.

Quando utilizzi l'API Error Reporting

Abilita l'API

Nella console Google Cloud, seleziona API e servizi, fai clic su Abilita API e servizi, quindi abilita l'API Error Reporting o fai clic sul seguente pulsante:

Vai alle impostazioni dell'API Error Reporting

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 e API_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 di eccezione all'API nel formato corretto e che contenga gli attributi obbligatori.