Verifica 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).

Questa guida spiega come:

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

  2. Utilizza Error Reporting per visualizzare l'errore e modificarne lo stato in modo che gli altri membri del tuo team sappiano che il problema è in fase di risoluzione.

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


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

Guidami


Prima di iniziare

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure 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.

    Go to project selector

  5. Make sure 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.

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.

Visualizza gli errori in Error Reporting

  1. Nella console Google Cloud, seleziona Error Reporting oppure fai clic sul pulsante seguente e seleziona un progetto:

    Vai a Error Reporting

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

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

    Interfaccia utente che mostra l'elenco di 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, inclusi i link al codice sorgente:

    Interfaccia utente che mostra la
     pagina dei dettagli dell'errore.

Configura le notifiche

Puoi configurare Error Reporting in modo da ricevere una notifica quando arriva un nuovo tipo di errore. Le notifiche non vengono inviate quando si verificano nuove occorrenza di errori esistenti:

  1. Nella console Google Cloud, seleziona Error Reporting oppure fai clic sul pulsante seguente e seleziona un progetto:

    Vai a Error Reporting

  2. Per abilitare le notifiche via email, fai clic su Altro e seleziona Attiva le notifiche per i nuovi errori per il progetto dall'elenco a discesa.

  3. Per generare nuovi tipi di errori, fai clic su Attiva Cloud ShellPulsante Attiva 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.

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

Genera messaggi di errore da un'app App Engine

Mentre i messaggi di esempio che hai generato 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 di questa sezione.

Eseguire il deployment di un'app

Per scaricare ed eseguire il deployment di un'app in App Engine, segui questi passaggi:

  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 al seguente:

      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 riuscite:

    1. Esegui l'applicazione:

      python main.py
      
    2. Per visualizzare l'applicazione in una pagina web locale, fai clic sul link mostrato in Cloud Shell. Nella pagina web sono visualizzati Hello World!.

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

  3. Carica la tua applicazione in App Engine:

    gcloud app deploy
    

    Se ti viene richiesta una regione di deployment, selezionane una nelle tue vicinanze. Quando ti viene richiesto, inserisci Y se vuoi continuare. Dopo qualche istante, il caricamento è completo.

  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 tuo browser, il comando precedente mostra un messaggio di errore e un link. Fai clic sul link visualizzato. Il messaggio Hello, World! viene visualizzato nel browser.

Genera un errore

Per creare un errore rilevato e visualizzato da Error Reporting:

  1. Modifica main.py e cambia

    return 'Hello World!
    

    a una

    return 'Hello World!' + 1000
    

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

  2. Carica l'applicazione modificata in App Engine:

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

    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 ricaricalo di nuovo. Potrebbero essere necessari alcuni istanti prima che la nuova versione venga attivata.

Visualizza 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. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Passaggi successivi