Controllare la presenza di errori in un'app che ha avuto 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 imparerai a:
Simulare un errore di un servizio in un progetto Google Cloud.
Utilizza 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.
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:
Prima di iniziare
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Apri Cloud Shell per il tuo progetto Google Cloud. Durante l'avvio viene visualizzato il messaggio
Connessione.
Simulare un errore
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
-
Nella console Google Cloud, vai alla pagina Error Reporting:
Puoi trovare questa pagina anche utilizzando la barra di ricerca.
La dashboard Segnalazione errori mostra un elenco di riepilogo di ogni errore rilevato e il numero di occorrenze di ogni 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 di errori di esempio:
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 è attivo nel progetto, puoi utilizzarlo per ricevere suggerimenti per la risoluzione dei problemi.
Configura le notifiche
Puoi configurare Error Reporting in modo da ricevere una notifica quando viene rilevato un nuovo tipo di errore. Le notifiche non vengono inviate quando si verificano nuove occorrenze di errori esistenti:
-
Nella console Google Cloud, vai alla pagina Error Reporting:
Puoi trovare questa pagina anche utilizzando la barra di ricerca.
Per attivare le notifiche via email, fai clic su Altro more_vert e seleziona Attiva notifiche per nuovi errori per il progetto dall'elenco a discesa.
Per generare nuovi tipi di errori, fai clic su Attiva Cloud Shell e 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.
Controlla la tua email per verificare se hai ricevuto un messaggio da "Stackdriver Notifications".
Generare messaggi di errore da un'app App Engine
Sebbene i messaggi di esempio generati dagli script simulino 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:
Scarica e configura l'applicazione dal progetto GitHub python-docs-samples:
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'...
Crea un ambiente Python isolato e attivalo:
cd python-docs-samples/appengine/standard_python3/hello_world virtualenv env -p python3 source env/bin/activate
Installa le dipendenze:
pip install -r requirements.txt
Verifica che l'installazione e la configurazione dell'applicazione siano andate a buon fine:
Esegui l'applicazione:
python main.py
Per visualizzare l'applicazione in una pagina web locale, fai clic sul link visualizzato in Cloud Shell. Nella pagina web viene visualizzato
Hello World!
.Per interrompere l'applicazione in esecuzione, inserisci
Ctrl-C
in Cloud Shell.
Carica l'applicazione in App Engine:
gcloud app deploy
Se ti viene chiesto di selezionare una regione di deployment, scegline una nelle vicinanze. Quando ti viene chiesto se vuoi continuare, inserisci
Y
. Dopo qualche istante, il caricamento è completato.Visualizza l'applicazione in un browser eseguendo il seguente comando in Cloud Shell:
gcloud app browse
Se Google Cloud CLI non riesce a trovare il 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.
Generare un errore
Per creare un errore rilevato e visualizzato da Error Reporting:
Modifica
main.py
e modificareturn 'Hello World!
a
return 'Hello World!' + 1000
Se viene eseguita, questa modifica causa un'eccezione
TypeError
di Python perché è illegale concatenare una stringa e un numero intero.Carica l'applicazione modificata in App Engine:
gcloud app deploy
Torna alla scheda del browser contenente l'applicazione in esecuzione e ricarica la pagina. A causa della modifica, anziché visualizzare la pagina
Hello, World!
, viene visualizzato 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 di nuovo la pagina. Potrebbero essere necessari alcuni istanti prima dell'attivazione della nuova versione.
Visualizzare l'errore in Error Reporting
Per visualizzare l'errore, segui le istruzioni riportate 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.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.