App Engine 快速入門

本快速入門介紹 Stackdriver Error Reporting,並說明如何:

  • 使用 Cloud Shell 部署 Python App Engine 應用程式。
  • 使用 Error Reporting 查看應用程式中的錯誤。
  • 設定 Error Reporting 以傳送通知。

您可以在 Google Cloud Platform 主控台中瀏覽 3 分鐘互動式教學課程
(您可以在該頁面尋找右側的 [繼續] 按鈕。)

事前準備

  1. 登入您的 Google 帳戶。

    如果您沒有帳戶,請申請新帳戶

  2. 選取或建立 Google Cloud Platform 專案。

    前往「Manage resources」(管理資源) 頁面

  3. 請確認您已啟用 Google Cloud Platform 專案的計費功能。

    瞭解如何啟用計費功能

  4. 開啟專案的 Cloud Shell。啟動時,您會在專案的資訊主頁底部看見「Connecting...」(連線中…) 訊息。

    開啟 Cloud Shell。

開始使用

在本節中,您將下載應用程式並部署到 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_python37/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
    

    如果 Cloud SDK 找不到您的瀏覽器,先前的指令就會顯示錯誤訊息和一個連結。請按一下顯示的連結。瀏覽器中會顯示「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,就可以取得錯誤及其發生次數的相關詳細資訊:

  1. 前往 Error Reporting:

    前往 Error Reporting

    Error Reporting 資訊主頁會顯示系統發現的所有錯誤的摘要,以及每個錯誤發生的次數。 根據預設,Error Reporting 每 5 秒就會自動重新載入錯誤清單一次,但如要強制執行即時重新載入,請按一下 [Auto reload] (自動重新載入)。

    在這個快速入門中,資訊主頁顯示了一項錯誤,其說明為「"TypeError: can only concatenate str (not "int") to str"」。 您可能需要稍候片刻,接著重新整理頁面才能看到錯誤:

  2. 在瀏覽器中重新載入應用程式,以再次產生相同錯誤。

    由於新錯誤的堆疊追蹤與第一個錯誤的情況類似,因此 Error Reporting 會透過更新錯誤「Occurrences」(發生) 次數和時間圖表,將這兩個錯誤分成一個批次:

  3. 如要查看該錯誤的詳細資料頁面,其中含有所有與錯誤相關的可用資訊 (包含前往原始碼的連結),請按一下錯誤名稱:

設定通知

您可以設定 Error Reporting,讓它在出現新型錯誤時通知您。若是先前已出現過的錯誤,系統就不會傳送通知:

  1. 前往 Error Reporting:

    前往 Error Reporting

  2. 如要啟用電子郵件通知,請按一下 [More] (更多)、[more_vert],然後從下拉式清單選取 [Turn on new error notifications for project] (專案發生新錯誤時接收通知)。

  3. main.py 中,將

     return 'Hello World!` + 1000
    

    改成

     return 'Hello World!'.punctuate()
    

    執行時,這項變更會導致 Python AttributeError 例外狀況,因為 punctuate() 屬性不存在。

  4. 上傳修改後的檔案至 App Engine:

     gcloud app deploy
    
  5. 在瀏覽器中重新載入應用程式以產生新錯誤。

    • 瀏覽器會顯示「Internal Server Error」訊息。

    • Error Reporting 資訊主頁會顯示錯誤,說明為「"AttributeError: 'str' object has no attribute 'punctuate'」。

    • 您的電子郵件內含一個 Stackdriver 通知,其中包含錯誤的詳細資料,包括:

      • 專案 ID
      • 錯誤說明,在這個範例中包含的是 "AttributeError: 'str' object has no attribute 'punctuate'
      • 服務
      • 應用程式版本

清除所用資源

如何避免系統向您的 GCP 帳戶收取您在本快速入門中所用資源的相關費用:

  1. 前往 GCP 主控台的「Projects」(專案) 頁面。

    前往專案頁面

  2. 在專案清單中選取要刪除的專案,然後按一下 [Delete] (刪除)
  3. 在對話方塊中輸入專案 ID,按一下 [Shut down] (關閉) 即可刪除專案。

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Stackdriver 錯誤報告說明文件