Error Reporting を使用して、クラッシュしたアプリのエラーを確認する
Error Reporting を使用すると、Google Cloud プロジェクト内のすべてのアプリとサービスおよび Amazon Elastic Compute Cloud(EC2)アプリケーションからのエラー条件を一元的にモニタリングできます。
このガイドでは、次の操作を行う方法について説明します。
Google Cloud プロジェクトのサービスのエラーをシミュレートします。
Error Reporting を使用してエラーを表示し、エラーのステータスを変更して、その問題に対処していることをチームの他のメンバーが把握するようにします。
通知を設定することで、新しいタイプのエラーが発生するタイミングがわかるようにします。
このタスクを Google Cloud コンソールで直接行う際の順を追ったガイダンスについては、[ガイドを表示] をクリックしてください。
始める前に
- 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.
- Google Cloud プロジェクトの Cloud Shell を開きます。開始時に、[接続しています] というメッセージが表示されます。
エラーのシミュレーション
Cloud Shell で次のスクリプトを実行すると、11 件のサンプルエラーを生成できます。
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
スクリプトによりすべてのエラーの生成が終了すると、次の行が出力されます。
All sample errors reported.
Error Reporting でのエラー表示
-
Google Cloud コンソールで、[Error Reporting] ページに移動します。
このページは、検索バーを使用して見つけることもできます。
Error Reporting ダッシュボードには、検出された各エラーの概要リストと各エラーの発生数が表示されます。自動再読み込みが有効になっている場合、Error Reporting ではエラーリストが 10 秒ごとに自動的に再読み込みされます。
次のスクリーンショットは、Error Reporting ページの例を示しています。
エラー名をクリックすると、エラーの詳細ページが表示されます。このページには、エラーに関するすべての利用可能な情報が表示されます。プロジェクトで Gemini が有効になっている場合は、Gemini を使用してトラブルシューティングの候補を取得できます。
通知の構成
新しい種類のエラーが発生したときに通知を送信するように Error Reporting を構成できます。この場合、既存のエラーと同じエラーが新たに発生しても通知は送信されません。
-
Google Cloud コンソールで、[Error Reporting] ページに移動します。
このページは、検索バーを使用して見つけることもできます。
メール通知を有効にするには、その他 more_vert をクリックし、プルダウン リストから [プロジェクトで新しいエラーが検出されたときの通知をオンにする] を選択します。
新しい種類のエラーを生成するには、Cloud Shell をアクティブにする をクリックして、次のスクリプトを実行します。
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
スクリプトによりすべてのエラーの生成が終了すると、次の行が出力されます。
All sample errors reported.
「Stackdriver 通知」からのメール メッセージを確認します。
App Engine アプリからエラー メッセージを生成する
スクリプトから生成したサンプル メッセージは Error Reporting でエラー条件を完全にシミュレートしますが、Google Cloud プロジェクトで実行されている実際のサービスからエラーを生成する場合は、このセクションの手順を行います。
アプリをデプロイする
アプリケーションをダウンロードして App Engine にデプロイする手順は次のとおりです。
GitHub プロジェクト python-docs-samples からアプリケーションをダウンロードして構成します。
Cloud Shell にプロジェクトのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/python-docs-samples
Git から次のようなメッセージが返されます。
git clone https://github.com/GoogleCloudPlatform/python-docs-samples Cloning into 'python-docs-samples'...
隔離された Python 環境を作成して有効にします。
cd python-docs-samples/appengine/standard_python3/hello_world virtualenv env -p python3 source env/bin/activate
依存関係をインストールします。
pip install -r requirements.txt
アプリケーションのインストールと構成が成功したことを確認します。
アプリケーションを実行します。
python main.py
ローカル ウェブページでアプリケーションを表示するには、Cloud Shell に表示されているリンクをクリックします。ウェブページに「
Hello World!
」と表示されます。実行中のアプリケーションを停止するには、Cloud Shell で「
Ctrl-C
」と入力します。
アプリケーションを App Engine にアップロードします。
gcloud app deploy
デプロイのリージョンを選択するよう求めるプロンプトが表示されたら、近くのリージョンを選択します。続行を確認するメッセージが表示されたら、「
Y
」と入力します。 しばらくすると、アップロードが完了します。Cloud Shell で次のコマンドを実行して、ブラウザでアプリケーションを表示します。
gcloud app browse
Google Cloud CLI でブラウザを検出できない場合は、上記のコマンドを実行すると、エラー メッセージとリンクが表示されます。表示されたリンクをクリックしてください。ブラウザに「
Hello, World!
」というメッセージが表示されます。
エラーを生成する
Error Reporting が取得して表示するエラーを作成する手順は次のとおりです。
main.py
を編集し、次のように変更します。return 'Hello World!
~
return 'Hello World!' + 1000
このように変更して実行すると、文字列と整数を連結することは不正な処理であるため、Python
TypeError
例外が発生します。変更したアプリケーションを App Engine にアップロードします。
gcloud app deploy
実行中のアプリケーションが含まれるブラウザタブに戻り、ページを再読み込みします。上記の変更により、ページには「
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.
このメッセージが表示されない場合は、しばらく待ってからもう一度再読み込みしてください。新しいバージョンが有効になるまでに、しばらく時間がかかる場合があります。
Error Reporting でのエラー表示
エラーを表示するには、前のセクションの Error Reporting でエラーを表示するの手順を実行します。
クリーンアップ
このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の手順を行います。
- 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.