Error Reporting を使用して、クラッシュしたアプリのエラーを確認する

Error Reporting を使用すると、Google Cloud プロジェクト内のすべてのアプリとサービスおよび Amazon Elastic Compute Cloud(EC2)アプリケーションからのエラー条件を一元的にモニタリングできます。

このガイドでは、次の操作を行う方法について説明します。

  1. Google Cloud プロジェクトのサービスのエラーをシミュレートします。

  2. Error Reporting を使用してエラーを表示し、エラーのステータスを変更して、その問題に対処していることをチームの他のメンバーが把握するようにします。

  3. 通知を設定することで、新しいタイプのエラーが発生するタイミングがわかるようにします。


このタスクを Google Cloud コンソールで直接行う際の順を追ったガイダンスについては、[ガイドを表示] をクリックしてください。

ガイドを表示


始める前に

  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. Google Cloud プロジェクトの Cloud Shell を開きます。開始時に、[接続しています] というメッセージが表示されます。

    Cloud Shell を開きます

エラーのシミュレーション

  1. 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 でのエラー表示

  1. Google Cloud コンソールで、[Error Reporting] ページに移動します。

    Error Reporting に移動

    このページは、検索バーを使用して見つけることもできます。

    Error Reporting ダッシュボードには、検出された各エラーの概要リストと各エラーの発生数が表示されます。自動再読み込みが有効になっている場合、Error Reporting ではエラーリストが 10 秒ごとに自動的に再読み込みされます。

    次のスクリーンショットは、Error Reporting ページの例を示しています。

    エラーリストが表示されているユーザー インターフェース。

  2. エラー名をクリックすると、エラーの詳細ページが表示されます。このページには、エラーに関するすべての利用可能な情報が表示されます。プロジェクトで Gemini が有効になっている場合は、Gemini を使用してトラブルシューティングの候補を取得できます。

通知の構成

新しい種類のエラーが発生したときに通知を送信するように Error Reporting を構成できます。この場合、既存のエラーと同じエラーが新たに発生しても通知は送信されません。

  1. Google Cloud コンソールで、[Error Reporting] ページに移動します。

    Error Reporting に移動

    このページは、検索バーを使用して見つけることもできます。

  2. メール通知を有効にするには、その他 をクリックし、プルダウン リストから [プロジェクトで新しいエラーが検出されたときの通知をオンにする] を選択します。

  3. 新しい種類のエラーを生成するには、Cloud Shell をアクティブにする 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.

  4. 「Stackdriver 通知」からのメール メッセージを確認します。

App Engine アプリからエラー メッセージを生成する

スクリプトから生成したサンプル メッセージは Error Reporting でエラー条件を完全にシミュレートしますが、Google Cloud プロジェクトで実行されている実際のサービスからエラーを生成する場合は、このセクションの手順を行います。

アプリをデプロイする

アプリケーションをダウンロードして App Engine にデプロイする手順は次のとおりです。

  1. GitHub プロジェクト python-docs-samples からアプリケーションをダウンロードして構成します。

    1. 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'...
      
    2. 隔離された Python 環境を作成して有効にします。

      cd python-docs-samples/appengine/standard_python3/hello_world
      virtualenv env -p python3
      source env/bin/activate
      
    3. 依存関係をインストールします。

      pip install -r requirements.txt
      
  2. アプリケーションのインストールと構成が成功したことを確認します。

    1. アプリケーションを実行します。

      python main.py
      
    2. ローカル ウェブページでアプリケーションを表示するには、Cloud Shell に表示されているリンクをクリックします。ウェブページに「Hello World!」と表示されます。

    3. 実行中のアプリケーションを停止するには、Cloud Shell で「Ctrl-C」と入力します。

  3. アプリケーションを App Engine にアップロードします。

    gcloud app deploy
    

    デプロイのリージョンを選択するよう求めるプロンプトが表示されたら、近くのリージョンを選択します。続行を確認するメッセージが表示されたら、「Y」と入力します。 しばらくすると、アップロードが完了します。

  4. Cloud Shell で次のコマンドを実行して、ブラウザでアプリケーションを表示します。

    gcloud app browse
    

    Google Cloud CLI でブラウザを検出できない場合は、上記のコマンドを実行すると、エラー メッセージとリンクが表示されます。表示されたリンクをクリックしてください。ブラウザに「Hello, World!」というメッセージが表示されます。

エラーを生成する

Error Reporting が取得して表示するエラーを作成する手順は次のとおりです。

  1. main.py を編集し、次のように変更します。

    return 'Hello World!
    

    return 'Hello World!' + 1000
    

    このように変更して実行すると、文字列と整数を連結することは不正な処理であるため、Python TypeError 例外が発生します。

  2. 変更したアプリケーションを App Engine にアップロードします。

    gcloud app deploy
    
  3. 実行中のアプリケーションが含まれるブラウザタブに戻り、ページを再読み込みします。上記の変更により、ページには「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 アカウントに課金されないようにするには、次の手順を行います。

  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.

次のステップ