Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Deploy an application
/ 30
Create a logs-based metric
/ 30
Create an alerting policy
/ 40
Deploy an application
/ 30
Create a logs-based metric
/ 30
Create an alerting policy
/ 40
Cloud Logging 和輔助工具 Cloud Monitoring 都是功能完整的產品,且與 Google Kubernetes Engine (GKE) 深度整合。本實驗室將說明 Cloud Logging 如何與 GKE 叢集和應用程式搭配運作,並透過常見的記錄用途,介紹收集記錄的最佳做法。
本實驗室將帶您瞭解如何執行下列工作:
接下來將透過具體實例,為部署於 GKE 叢集的微服務示範應用程式排解問題。這個應用程式包含許多微服務,且彼此之間有依附關係。您將使用 loadgenerator 產生流量,接著透過 Logging、Monitoring 和 GKE 偵測錯誤 (警告/指標),並使用 Logging 找出根本原因,然後修正問題,再透過 Logging 和 Monitoring 確認問題已解決。
請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。
您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。
為了順利完成這個實驗室,請先確認:
按一下「Start Lab」按鈕。如果實驗室會產生費用,請在開啟的對話方塊中選取付款方式。右側的「Lab setup and access」面板會顯示下列項目:
請注意,實驗室計時器位於頁面頂端附近,會顯示剩餘時間。
按一下「Open Google Cloud console」。如果使用 Chrome 瀏覽器,也可以按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」。
接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。
提示:您可以在不同的視窗並排開啟分頁。
如有必要,請將下方的 Username 貼到「登入」對話方塊。
您也可以在「Lab setup and access」面板找到「Username」。
點選「下一步」。
複製下方的 Password,並貼到「歡迎使用」對話方塊。
您也可以在「Lab setup and access」面板找到「Password」。
點選「下一步」。
繼續點按後續頁面:
Google Cloud 控制台稍後會在這個分頁開啟。
Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。
點按 Google Cloud 控制台頂端的「啟用 Cloud Shell」圖示 。
系統顯示視窗時,請按照下列步驟操作:
連線建立完成即代表已通過驗證,而且專案已設為您的 Project_ID:
gcloud 是 Google Cloud 的指令列工具,已預先安裝於 Cloud Shell,並支援 Tab 鍵自動完成功能。
輸出內容:
輸出內容:
gcloud 的完整說明,請前往 Google Cloud 參閱 gcloud CLI 總覽指南。
請連線至 Google Kubernetes Engine 叢集,並確認該叢集已正確建立。
叢集狀態會顯示為「PROVISIONING」。
稍候片刻,然後再次執行上方指令,直到狀態變成「RUNNING」。這可能需要幾分鐘的時間。
確認名為 central 的叢集已建立。
您也可以依序前往「導覽選單」>「Kubernetes Engine」>「叢集」,在 Cloud 控制台監控進度。
輸出內容:
輸出內容應大致如下。
輸出內容:
接下來要將名為 Hipster Shop 的微服務應用程式部署至叢集,建立可監控的工作負載。
microservices-demo 目錄:kubectl 安裝應用程式:輸出內容應大致如下。
輸出內容:
點選「Check my progress」,確認目標已達成。
確認結果應大致如下。
輸出內容:
應用程式部署完成後,您也可以前往 Cloud 控制台查看狀態。
在「Kubernetes Engine」>「工作負載」頁面,您會看到所有 Pod 均正常運作。
應用程式應該會開啟,並顯示類似下方的頁面:
在這項工作,您將設定 Cloud Logging 來建立記錄指標,也就是 Cloud Monitoring 中根據記錄項目建立的自訂指標。這類指標適合用來計算記錄項目數量,以及追蹤記錄中特定值的分布情形。
在本例中,您將使用記錄指標計算前端服務的錯誤數量。之後,您就可以在資訊主頁和警告中使用這項指標。
您使用的這項查詢可找出前端 Pod 的所有錯誤。不過目前還沒有錯誤,所以您應該不會看到任何結果。
現在,您會在「記錄指標」頁面的「使用者定義的指標」下方看到該指標。
點選「Check my progress」,確認目標已達成。
警告可讓您及時掌握雲端應用程式中的問題,以便快速解決。
在這項工作,您要使用 Cloud Monitoring,根據先前建立的前端錯誤記錄指標,建立警告政策來監控前端服務可用性。當符合警告政策的條件時,Cloud Monitoring 會建立事件,並在 Cloud 控制台中顯示。
依序點選「導覽選單」圖示 >「監控」>「警告」。
工作區建立後,請點選頂端的「建立政策」。
點選「選取指標」,並取消勾選「Active」核取方塊。
在「按照資源或指標名稱篩選」欄位中,輸入 Error_Rate。
依序點選「Kubernetes Container」>「記錄指標」,然後選取「logging/user/Error_Rate_SLI」,再點選「套用」。
畫面應如下所示:
將「滾動週期函式」設為 Rate。
點選「繼續」。
將「門檻值」設為 0.5。
如預期,沒有任何失敗,應用程式符合可用性服務水準目標 (SLO)。
再次點選「繼續」。
停用「使用通知管道」。
提供警告名稱,例如 Error Rate SLI,然後點選「繼續」。
檢查警告是否設定妥當,然後點選「建立政策」。
點選「Check my progress」,確認目標已達成。
在本節中,您將使用負載產生器,為網頁應用程式產生一些流量。由於這個版本的應用程式刻意加入錯誤,因此當流量達到一定程度時,就會觸發錯誤。您將逐步找出並修正這個錯誤。
在「導覽選單」中,依序選取「Kubernetes Engine」>「閘道、Service 與 Ingress」,然後點選「服務」分頁標籤。
找出 loadgenerator-external 服務,然後點選端點連結。
您也可以開啟新的瀏覽器分頁或視窗,將 IP 複製並貼到網址欄位,例如:http://\[loadgenerator-external-ip\]。
此時畫面上應會開啟 Locust 負載產生器頁面:
Locust 是開放原始碼的負載產生器,可讓您對網頁應用程式執行負載測試。這項工具能以特定速率,模擬多位使用者同時存取應用程式端點。
模擬 300 名使用者以 30 的產生率存取應用程式。Locust 會以每秒 30 名使用者的速度新增使用者,直到達到 300 名為止。
在「Host」欄位輸入 frontend-external 服務的網址。請從「閘道、Service 與 Ingress」頁面複製網址,且務必去除通訊埠的部分。例如:
同時,如果在首頁點選任何產品,速度可能會明顯變慢,也可能會收到下列錯誤訊息:
在控制台依序點選「導覽選單」圖示、「監控」和「警告」。您應該很快就會看到 logging/user/Error_Rate_SLI 的相關事件。若未立即顯示,請稍候一兩分鐘再重新整理頁面。警告最多可能需要 5 分鐘才會觸發。
點選事件連結:
系統會將您導向詳細資料頁面。
還有另一種做法,就是點選「查詢預覽」欄位來顯示查詢建立工具,然後點選「嚴重性」下拉式選單,將「錯誤」新增至查詢。點選「新增」按鈕,然後點選「執行查詢」。您可以透過下拉式選單加入多個嚴重性值。
無論採用哪種方式,結果都是在查詢中加入 severity=ERROR。完成後,您應該會看到 recommendationservice Pod 的所有錯誤。
展開 textPayload。
點選錯誤訊息,然後選取「在摘要行中新增欄位」,即可讓錯誤訊息顯示為摘要欄位:
從這裡可以確認 RecommendationService 服務確實發生許多錯誤。根據錯誤訊息,RecommendationService 似乎無法連線至部分下游服務,因此無法取得產品或推薦內容。不過,目前仍不清楚錯誤的根本原因。
再次查看架構圖,可以看到 RecommendationService 會向 Frontend 服務提供推薦內容清單。然而,Frontend 服務和 RecommendationService 都會叫用 ProductCatalogService 來取得產品清單。
在下個步驟中,您將查看主要懷疑對象 ProductCatalogService 的指標,確認是否有任何異常狀況。無論結果如何,您都可以深入查看記錄,從中找出一些線索。
您可以先前往 Monitoring 控制台的「Kubernetes Engine」專區查看指標。請依序點選「導覽選單」圖示 >「監控」>「資訊主頁」>「GKE」。
查看「工作負載」專區。
依序前往「Kubernetes Engine」>「工作負載」>「productcatalogservice」。您會發現服務的 Pod 不斷異常終止並重新啟動。
接著,請查看記錄中是否有任何值得注意的內容。
有 2 種簡單的方法可開啟容器記錄:
您再次來到「Logs Explorer」頁面,現在頁面中已預先定義查詢,專門篩選您在 GKE 查看的容器記錄。
在記錄檢視器中,記錄訊息和直方圖都顯示容器在短時間內重複剖析產品目錄。這似乎非常沒有效率。
查詢結果底部也可能出現執行階段錯誤,像是:
這可能正是導致 Pod 異常終止的原因。
請在程式碼中搜尋記錄訊息,進一步瞭解原因。
輸出內容應大致如下,其中包含來源檔案名稱和行號。
輸出內容:
microservices-demo/src/productcatalogservice/server.go 檔案,向下捲動至第 237 行,您會看到 readCatalogFile 方法記錄了下列訊息:再深入查看,您會發現如果布林變數 reloadCatalog 為 true,服務每次收到叫用要求時,都會重新載入並剖析產品目錄,這似乎沒有必要。
在程式碼中搜尋 reloadCatalog 變數,即可看到該變數是由環境變數 ENABLE_RELOAD 控制,而且系統會記錄狀態訊息。
請將這則訊息新增至查詢,再次查看記錄,確認是否有任何相符的項目。
查詢建立工具中的完整查詢應如下所示:
這時您就能確定,每次收到要求時都必須載入目錄,造成額外負擔,因而引發前端錯誤。負載增加時,這項額外負擔就會導致服務失敗並產生錯誤。
根據程式碼和記錄內容,您可以試著停用目錄重新載入功能來修正問題。
在這項工作,您要移除產品目錄服務的 ENABLE_RELOAD 環境變數。完成變更後,再重新部署應用程式,確認這麼做是否解決先前發現的問題。
如果 Cloud Shell 終端機已關閉,請點選「開啟終端機」按鈕返回。
執行下列指令:
輸出內容會顯示資訊清單檔案中環境變數的行號。
輸出內容:
您應該會發現只有 productcatalogservice 顯示為「configured」,其他服務則是「unchanged」。
successfully parsing the catalog json 訊息已消失:重新前往網頁應用程式網址,然後點選首頁上的產品,您會發現回應速度快很多,而且應該不會再出現任何 HTTP 錯誤。
返回負載產生器,點選右上方的「Reset Stats」按鈕。失敗百分比已重設,應該不會再上升。
所有檢查結果都顯示問題已修正。如果仍看到 500 錯誤,請再稍候幾分鐘,然後再次點選產品。
您已使用 Cloud Logging 和 Cloud Monitoring,在刻意設定錯誤的微服務示範應用程式中找出錯誤。這項疑難排解程序,與您在正式環境中縮小 GKE 應用程式問題範圍時所採取的做法類似。
首先,您將應用程式部署至 GKE,然後針對前端錯誤設定指標和警告,接著在產生負載後,發現警告已觸發。您根據警告提供的線索,透過 Cloud Logging 將問題範圍縮小到特定服務,然後使用 Cloud Monitoring 和 GKE UI 查看 GKE 服務的指標。為了修正問題,您將更新後的設定部署至 GKE,並確認記錄中的錯誤已解決。
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2026 年 7 月 13 日
實驗室上次測試日期:2026 年 7 月 13 日
Copyright 2026 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。
This content is not currently available
We can notify you via email when it becomes available
Great!
We can contact you via email if it becomes available
One lab at a time
Confirm to end all existing labs and start this one