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

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

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

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

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

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


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

ガイドを表示


始める前に

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  5. Google Cloud プロジェクトで課金が有効になっていることを確認します

  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 コンソールのナビゲーション パネルで [エラーレポート] を選択し、Google Cloud プロジェクトを選択します。

    Error Reporting に移動

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

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

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

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

通知の構成

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

  1. Google Cloud コンソールのナビゲーション パネルで [エラーレポート] を選択し、Google Cloud プロジェクトを選択します。

    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. Google Cloud コンソールで、[リソースの管理] ページに移動します。

    [リソースの管理] に移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

次のステップ