Controllare la presenza di errori in un'app che ha subito un arresto anomalo utilizzando Error Reporting

Error Reporting offre un'unica posizione da cui monitorare le condizioni di errore di tutte le app e tutti i servizi in un progetto Google Cloud e delle applicazioni Amazon Elastic Compute Cloud (EC2).

In questa guida impareremo a:

  1. Simulare un errore di un servizio in un progetto Google Cloud .

  2. Utilizzare Error Reporting per visualizzare l'errore e modificarne lo stato in modo che altre persone del team sappiano che il problema è attualmente in fase di risoluzione.

  3. Configurare le notifiche per sapere quando si verificano nuovi tipi di errori.


Per seguire le indicazioni dettagliate per questa attività direttamente nella console Google Cloud , fai clic su Procedura guidata:

Procedura guidata


Prima di iniziare

  1. Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Apri Cloud Shell per il tuo progetto Google Cloud . Durante l'avvio, viene visualizzato il messaggio Connessione in corso.

    Apri Cloud Shell.

  7. Configura il tuo indirizzo email come canale di notifica supportato.

Simulare un errore

  1. Per generare 11 errori di esempio, esegui lo script seguente in Cloud Shell:

      COUNTER=0
      while [  $COUNTER -lt 11 ]; do
          gcloud beta error-reporting events report --service tutorial --service-version v$((COUNTER/10+1)) \
              --message "java.lang.RuntimeException: Error rendering template $COUNTER
                at com.example.TestClass.test(TestClass.java:51)
                at com.example.AnotherClass(AnotherClass.java:25)
                at javax.servlet.http.HttpServlet.service (HttpServlet.java:617)
                at javax.servlet.http.HttpServlet.service (HttpServlet.java:717)"
          if [ $COUNTER -eq 10 ]; then
            echo "All sample errors reported."
          fi
          let COUNTER=COUNTER+1
      done
    

    Quando lo script termina di generare tutti gli errori, restituisce la seguente riga:

    All sample errors reported.

Visualizzare gli errori in Error Reporting

  1. Nella console Google Cloud , vai alla pagina Error Reporting:

    Vai a Error Reporting

    Puoi trovare questa pagina anche utilizzando la barra di ricerca.

    La dashboard Report errori mostra un elenco riepilogativo di ogni errore rilevato e il numero di occorrenze di ciascun errore. Quando l'opzione Ricarica automatica è attiva, Error Reporting ricarica automaticamente l'elenco degli errori ogni 10 secondi.

    Lo screenshot seguente mostra una pagina di segnalazione degli errori di esempio:

    L'interfaccia utente che mostra l'elenco degli errori.

  2. Fai clic sul nome dell'errore per visualizzare la pagina dei dettagli dell'errore, che contiene tutte le informazioni disponibili su un errore. Se Gemini è abilitato nel progetto, puoi utilizzarlo per ricevere suggerimenti per la risoluzione dei problemi.

Configura le notifiche

Puoi configurare Error Reporting in modo che ti avvisi quando si verifica un nuovo tipo di errore. Le notifiche non vengono inviate quando si verificano nuovi errori esistenti:

  1. Nella console Google Cloud , vai alla pagina Error Reporting:

    Vai a Error Reporting

    Puoi trovare questa pagina anche utilizzando la barra di ricerca.

  2. Per attivare le notifiche via email, fai clic su Configura notifiche.

  3. Nel menu Canali di notifica, seleziona il tuo indirizzo email, quindi seleziona Salva.

  4. Per generare nuovi tipi di errori, fai clic su Attiva Cloud Shell ed esegui lo script seguente:

      COUNTER=0
      while [ $COUNTER -lt 3 ]; do
            gcloud beta error-reporting events report --service tutorial --service-version v1 \
                --message "java.lang.ArrayIndexOutOfBoundsException: $COUNTER
                  at com.example.AppController.createUser(AppController.java:42)
                  at com.example.User(User.java:31)
                  at javax.servlet.http.HttpServlet.service (HttpServlet.java:617)
                  at javax.servlet.http.HttpServlet.service (HttpServlet.java:717)"
          if [ $COUNTER -eq 10 ]; then
            echo "All sample errors reported."
          fi
          let COUNTER=COUNTER+1
      done
    

    Quando lo script termina di generare tutti gli errori, restituisce la seguente riga:

    All sample errors reported.

  5. Controlla la tua email per verificare se hai ricevuto un messaggio da "Stackdriver Notifications".

Generare messaggi di errore da un'app App Engine

Anche se i messaggi di esempio generati dagli script simulano completamente le condizioni di errore in Error Reporting, se vuoi generare errori da un servizio reale in esecuzione nel tuo progetto Google Cloud , segui i passaggi descritti in questa sezione.

Eseguire il deployment di un'app

Per scaricare ed eseguire il deployment di un'app in App Engine:

  1. Scarica e configura l'applicazione dal progetto GitHub python-docs-samples:

    1. Clona il progetto in Cloud Shell:

      git clone https://github.com/GoogleCloudPlatform/python-docs-samples
      

      Git restituisce un messaggio simile a questo:

      git clone https://github.com/GoogleCloudPlatform/python-docs-samples
      Cloning into 'python-docs-samples'...
      
    2. Crea un ambiente Python isolato e attivalo:

      cd python-docs-samples/appengine/standard_python3/hello_world
      virtualenv env -p python3
      source env/bin/activate
      
    3. Installa le dipendenze:

      pip install -r requirements.txt
      
  2. Verifica che l'installazione e la configurazione dell'applicazione siano andate a buon fine:

    1. Esegui l'applicazione:

      python main.py
      
    2. Per visualizzare l'applicazione in una pagina web locale, fai clic sul link visualizzato in Cloud Shell. La pagina web mostra Hello World!.

    3. Per arrestare l'applicazione in esecuzione, inserisci Ctrl-C in Cloud Shell.

  3. Carica l'applicazione su App Engine:

    gcloud app deploy
    

    Se ti viene richiesta una regione di deployment, selezionane una vicina a te. Inserisci Y quando ti viene chiesto se vuoi continuare. Dopo qualche istante, il caricamento è completato.

  4. Visualizza l'applicazione in un browser eseguendo questo comando in Cloud Shell:

    gcloud app browse
    

    Se Google Cloud CLI non riesce a trovare il browser, il comando precedente visualizza un messaggio di errore e un link. Fai clic sul link visualizzato. Il messaggio Hello, World! viene visualizzato nel browser.

Generare un errore

Per creare un errore che Error Reporting rileva e visualizza, segui questi passaggi:

  1. Modifica main.py e cambia

    return 'Hello World!
    

    a

    return 'Hello World!' + 1000
    

    Quando viene eseguita, questa modifica causa un'eccezione Python TypeError perché è illegale concatenare una stringa e un numero intero.

  2. Carica l'applicazione modificata su App Engine:

    gcloud app deploy
    
  3. Torna alla scheda del browser contenente l'applicazione in esecuzione e ricarica la pagina. A causa della modifica, anziché visualizzare Hello, World!, la pagina mostra un messaggio di errore:

    Internal Server Error
    The server encountered an internal error and was unable to complete your
    request. Either the server is overloaded or there is an error in the
    application.
    

    Se non vedi questo messaggio, attendi un minuto e ricarica la pagina. Potrebbe essere necessario qualche istante prima che la nuova versione venga attivata.

Visualizzare l'errore in Error Reporting

Per visualizzare l'errore, segui le istruzioni nella sezione precedente Visualizzare gli errori in Error Reporting.

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa pagina, segui questi passaggi.

  1. Nella console Google Cloud , vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona quello che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.

Passaggi successivi