
准备工作
- 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
- 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
- 在屏幕左上角,点击开始实验即可开始
Deploy an application
/ 30
Create a logs-based metric
/ 30
Create an alerting policy
/ 40
Cloud Logging 和其輔助工具 Cloud Monitoring 都是功能完整的產品,且與 Google Kubernetes Engine 深度整合。本實驗室將說明 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 總覽指南。
某些 Compute Engine 資源專屬於特定的區域和可用區。「區域」是您可以執行資源的特定地理位置,每個區域中會有一或多個「可用區」。
請在 Cloud 控制台中執行下列 gcloud 指令,設定研究室的預設區域和可用區:
請連線至 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 控制台中顯示。
在「導覽選單」中開啟「監控」,然後點選「警告」。
工作區建立完成後,點選頂端的「Create Policy」(建立政策)。
按一下「選取指標」下拉式選單。取消勾選「Active」。
在「依據資源或指標名稱篩選」欄位中,輸入 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
控制,而且系統會記錄其狀態訊息。
將這則訊息新增至查詢,再次檢查記錄,判斷是否有任何項目存在。
因此,查詢建立工具中的完整查詢如下:
這時您就能確定,前端錯誤是因為每次要求都必須載入目錄造成的。這個問題增加了額外的負荷,導致服務失敗並產生錯誤。
根據程式碼和記錄內容,您可以停用目錄重新載入功能,嘗試藉此解決問題。您現在要移除產品目錄服務的 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 年 2 月 21 日
實驗室上次測試日期:2025 年 2 月 21 日
Copyright 2025 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。
此内容目前不可用
一旦可用,我们会通过电子邮件告知您
太好了!
一旦可用,我们会通过电子邮件告知您
一次一个实验
确认结束所有现有实验并开始此实验