Cloud Logging
本文說明 Azure 上的 GKE 如何與 Cloud Logging 整合,並示範如何存取記錄。
總覽
Azure 上的 GKE 支援 Cloud Logging,適用於工作負載,以及在控制層和節點集區節點上執行的系統元件。
Azure 上的 GKE 包含以 Fluentbit 為基礎的記錄代理程式。在控制層節點上,記錄代理程式會以系統元件的形式執行;在節點集區節點上,則會以 Daemonset 的形式執行。如要管理及刪除記錄代理程式收集的資料,請參閱 Cloud Logging 說明文件,瞭解如何管理及刪除其他指標和記錄資料。
我們會蒐集哪些資料
Azure 中的 GKE 會記錄下列資訊:
- 每個控制層副本上的系統元件記錄。
- 每個節點集區節點上系統服務的記錄。
- 工作負載記錄 (選用)
啟用工作負載記錄功能
如要啟用工作負載記錄,您必須建立新的 Kubernetes 叢集,版本為 1.22 以上。
根據預設,在 Azure 上建立 GKE 叢集時,系統會啟用系統記錄。如要啟用工作負載記錄功能,請使用 --logging
旗標建立叢集。您可以選擇為系統元件、工作負載或兩者啟用記錄。
舉例來說,如要在新叢集上同時啟用系統和工作負載記錄,請按照建立叢集的說明操作,但請在 gcloud
指令中加入 --logging
標記:
gcloud container azure clusters create CLUSTER_NAME ... --logging=SYSTEM,WORKLOAD
或更新現有叢集:
gcloud container azure clusters update CLUSTER_NAME ... --logging=SYSTEM,WORKLOAD
存取記錄
您可透過下列幾種方式,在 Cloud Logging 中存取 GKE on Azure 記錄:
記錄檔探索工具:您可以使用記錄篩選器選取 Kubernetes 資源 (例如叢集、節點、命名空間、Pod 或容器記錄),直接從記錄檔探索工具查看記錄。
Google Cloud CLI - 使用
gcloud logging read
指令,選取適當的叢集、節點、Pod 和容器記錄。
瞭解記錄檔
Cloud Logging 中的記錄是記錄項目的集合,每個記錄項目都對應到一個特定類型的記錄資源。
資源類型
以下是 GKE on Azure 專屬的資源類型:
資源類型 | 顯示名稱 |
---|---|
k8s_control_plane_component |
控制層元件記錄檔 |
k8s_node |
節點集區記錄 |
k8s_container |
工作負載容器記錄 |
當 Azure 上的 GKE 寫入叢集記錄時,每個記錄項目都會包含資源類型。瞭解記錄檔的顯示位置,有助於在需要時輕鬆找到記錄檔。
控制層記錄檔
控制層記錄使用 k8s_control_plane_component
資源類型。包括在控制層副本上執行的系統元件記錄檔,例如 kube-apiserver
。
節點記錄檔
節點記錄屬於 k8s_node
資源類型。包括在工作節點上執行的重要系統元件記錄,例如 kubelet
和 containerd
。
系統應用程式記錄
系統應用程式記錄檔屬於 k8s_container
資源類型。包括 GKE on Azure 在工作站節點上安裝的 Pod 記錄。具體來說,下列命名空間中執行的容器都會納入:
kube-system
gke-connect
gke-system
gmp-system
asm-user-auth
cnrm-system
config-management-system
gatekeeper-system
gmp-public
istio-system
knative-serving
在 Cloud Logging 使用者介面中尋找記錄
您可以在 Cloud Logging 使用者介面中,使用 Logs Explorer 查看記錄。
記錄檔探索工具
使用查詢產生器時,您可以手動新增查詢參數來建構查詢。舉例來說,如要探索系統工作負載的記錄,可以先選取或搜尋 k8s_container
資源類型,然後選取位置和叢集名稱。然後,您可以篩選容器或 Pod 名稱,縮小搜尋範圍。
您也可以使用 記錄檔欄位探索工具,在 Logs Explorer 中建構搜尋查詢。這個部分會顯示指定記錄檔欄位的記錄項目數量,並依數量遞減排序。使用記錄檔欄位探索工具特別適合用來查看 Azure 上的 GKE 記錄,因為這項工具可讓您輕鬆選取資源的 Kubernetes 值。舉例來說,您可以選取特定叢集、命名空間、Pod 名稱和容器名稱的記錄。
詳情請參閱「使用記錄檔探索工具」。
查詢範例
本節包含您可在記錄檔探索工具中執行的查詢範例。
範例 1:在 Azure 叢集 CLUSTER_NAME 的控制層節點上,取得 kube-apiserver
的記錄:
resource.type="k8s_control_plane_component"
resource.labels.cluster_name="azureClusters/CLUSTER_NAME"
resource.labels.component_name="apiserver"
範例 2:在 Azure 叢集 CLUSTER_NAME 的工作站節點上取得 kubelet
的記錄:
resource.type="k8s_node"
resource.labels.cluster_name="azureClusters/CLUSTER_NAME"
log_name="projects/PROJECT_ID/logs/kubelet"
範例 3:取得 Azure 叢集 CLUSTER_NAME 的 cilium-agent
容器記錄:
resource.type="k8s_container"
resource.labels.cluster_name="azureClusters/CLUSTER_NAME"
resource.labels.container_name="cilium-agent"