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
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 Details」窗格會顯示下列項目:
點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」。
接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。
提示:您可以在不同的視窗中並排開啟分頁。
如有必要,請將下方的 Username 貼到「登入」對話方塊。
您也可以在「Lab Details」窗格找到 Username。
點選「下一步」。
複製下方的 Password,並貼到「歡迎使用」對話方塊。
您也可以在「Lab Details」窗格找到 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 控制台監控進度。
輸出內容:
輸出內容應該會顯示如下:
輸出內容:
您可以在 Cloud Shell 等整合式開發環境 (IDE) 中使用 Gemini Code Assist,取得程式碼相關指引或解決程式碼問題。Gemini Code Assist 必須先啟用,才能開始使用。
點選畫面底部狀態列中的「Cloud Code - No Project」。
依指示授權外掛程式。如果系統未自動選取專案,請點按「選取 Google Cloud 專案」,然後選擇
確認狀態列的 Cloud Code 狀態訊息中已顯示 Google Cloud 專案 (
接著,將名為 Hipster Shop 的微服務應用程式部署至叢集,建立可監控的工作負載。
microservices-demo 目錄:您可以使用 Gemini Code Assist 的 AI 功能,直接在程式碼編輯器中變更程式碼。在這個範例中,您決定請 Gemini Code Assist 協助說明 kubernetes-manifests.yaml 檔案,以利新進團隊成員熟悉工作。
開啟 kubernetes-manifests.yaml 檔案。這項動作會啟用 Gemini Code Assist,編輯器右上角出現 圖示時,代表該工具已啟用。
點選「Gemini Code Assist: Smart Actions」 圖示,然後選取「Explain this」。
Gemini Code Assist 會開啟對話窗格,並預先填入提示詞 Explain this。在 Code Assist 對話的內嵌文字方塊中,將預先填入的提示詞改成下列內容,然後點按「Send」:
kubernetes-manifests.yaml 檔案中程式碼的說明會顯示在 Gemini Code Assist 對話視窗。
kubectl 安裝應用程式:輸出內容大致如下。
輸出內容:
點按「Check my progress」,確認目標已達成。
確認訊息應該會類似下列輸出內容。
輸出內容:
應用程式部署完成後,您也可以前往 Cloud 控制台查看狀態。
在「Kubernetes Engine」>「工作負載」頁面,您會看到所有 pod 均正常運作。
應用程式應該會開啟,並顯示類似下方的頁面:
在這項工作中,您將設定 Cloud Logging,建立記錄指標。記錄指標是 Cloud Monitoring 中的自訂指標,由記錄項目組成。記錄指標適合用來計算記錄項目數量,以及追蹤記錄中值的分布情形。
在本例中,您將使用記錄指標計算前端服務中的錯誤數量。接著,您就能在資訊主頁和警告中使用這個指標。
您使用的查詢可找出前端 Pod 的所有錯誤。不過,由於目前沒有錯誤,因此您應該不會看到任何結果。
現在,您會在「記錄指標」頁面的「使用者定義的指標」下方看到該指標。
點按「Check my progress」,確認目標已達成。
警告可讓您及時瞭解雲端應用程式中的問題,以便您快速解決。
在這項工作中,您要使用 Cloud Monitoring,根據先前建立的前端錯誤記錄指標,建立警告政策來監控前端服務可用性。當符合警告政策的條件時,Cloud Monitoring 會建立事件,並在 Cloud 控制台中顯示。
在「導覽選單」中開啟「監控」,然後點選「警告」。
工作區建立完成後,點選頂端的「Create Policy」(建立政策)。
點按「選取指標」下拉式選單,並取消勾選「已啟用」核取方塊。
在「filter by resource and metric name」欄位中,輸入「Error_Rate」。
依序點按「Kubernetes Container」>「記錄指標」。選取「logging/user/Error_Rate_SLI」,然後點選「套用」。
畫面應如下所示:
將「滾動週期函式」設為 Rate。
點按「Next」。
將「門檻值」設為 0.5。
如預期,沒有任何失敗,應用程式符合可用性服務水準目標 (SLO)。
再次點按「Next」。
停用「使用通知管道」。
提供警告名稱,例如 Error Rate SLI,然後點按「Next」。
檢查警告是否設定妥當,然後點選「建立政策」。
點按「Check my progress」,確認目標已達成。
在本節中,您將使用負載產生器,為網頁應用程式建立一些流量。由於這個版本的應用程式刻意導入錯誤,因此當流量達到一定程度時,就會觸發錯誤。您將逐步找出並修正錯誤。
在「導覽選單」中,依序選取「Kubernetes Engine」>「閘道、Service 與 Ingress」,然後點按「服務」分頁標籤。
找出 loadgenerator-external 服務,然後點按端點連結。
或者,您也可以開啟新的瀏覽器分頁或視窗,將 IP 複製/貼到網址欄位,例如:http://\[loadgenerator-external-ip\]。
您現在應該會位於 Locust 負載產生器頁面:
Locust 是開放原始碼的負載產生器,可讓您對網頁應用程式進行負載測試。這項工具能以特定速率,模擬多位使用者同時存取應用程式端點。
模擬 300 名使用者以 30 的產生率存取應用程式。Locust 會以每秒 30 名使用者的速度新增使用者,直到達到 300 名為止。
在「主機」欄位中,請使用 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」部分 (依序點選「導覽選單」>「Monitoring」>「資訊主頁」>「GKE」)。
查看「工作負載」部分。
依序前往「Kubernetes Engine」>「工作負載」>「productcatalogservice」。您會發現服務的 pod 不斷異常終止並重新啟動。
接著,查看記錄中是否有任何值得注意的內容。
有 2 種簡單的方法可取得容器記錄:
您再次來到「Logs Explorer」頁面,現在頁面中已預先定義查詢,專門篩選您在 GKE 中查看的容器記錄。
從記錄檢視器中,記錄訊息和直方圖都顯示容器在短時間內重複剖析產品目錄。這似乎非常沒有效率。
查詢結果底部也可能出現執行階段錯誤,像是:
這實際上可能會導致 Pod 異常終止。
如要進一步瞭解原因,請在程式碼中搜尋記錄訊息。
輸出內容應如下所示,其中包含來源檔案名稱和行號:
輸出內容:
microservices-demo/src/productcatalogservice/server.go 檔案,向下捲動至第 237 行,您會看到 readCatalogFile 方法記錄了以下訊息:再多花點心思,您會發現如果布林變數 reloadCatalog 為 true,服務每次叫用時都會重新載入並剖析產品目錄,這似乎沒有必要。
在程式碼中搜尋 reloadCatalog 變數,即可看到該變數是由環境變數 ENABLE_RELOAD 控制,而且系統會記錄其狀態訊息。
server.go 檔案,在 IDE 中啟用 Gemini Code Assist 後,編輯器右上角會出現 在這個範例中,您決定請 Gemini Code Assist 協助向新團隊成員說明伺服器實作方式。
點選「Gemini Code Assist: Smart Actions」 圖示,然後選取「Explain this」。
Gemini Code Assist 會開啟對話窗格,並預先填入提示詞 Explain this。在 Code Assist 對話的內嵌文字方塊中,將預先填入的提示詞改成下列內容,然後點按「Send」:
server.go 檔案中程式碼的說明會顯示在 Gemini Code Assist 對話視窗。
將這則訊息新增至查詢,再次檢查記錄,判斷是否有任何項目存在。
因此,查詢建立工具中的完整查詢如下:
這時您就能確定,前端錯誤是因為每次要求都必須載入目錄造成的。這個問題增加了額外的負荷,導致服務失敗並產生錯誤。
根據程式碼和記錄內容,您可以停用目錄重新載入功能,嘗試藉此解決問題。
在這項工作中,您要移除產品目錄服務的 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 技術方面的技能和專業知識。
使用手冊上次更新日期:2025 年 8 月 26 日
實驗室上次測試日期:2025 年 10 月 14 日
Copyright 2026 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。
This content is not currently available
We will notify you via email when it becomes available
Great!
We will contact you via email if it becomes available
One lab at a time
Confirm to end all existing labs and start this one