Cloud Logging

本文說明 GKE on AWS 如何與 Cloud Logging 整合,並示範如何存取記錄。

總覽

GKE on AWS 支援工作負載的 Cloud Logging,以及在控制層和節點集區節點上執行的系統元件。

GKE on AWS 包含以 Fluentbit 為基礎的記錄代理程式。在控制層節點上,記錄代理程式會以系統元件的形式執行;在節點集區節點上,則會以 Daemonset 的形式執行。如要管理及刪除記錄代理程式收集的資料,請參閱 Cloud Logging 說明文件,瞭解如何管理及刪除其他指標和記錄資料。

我們會蒐集哪些資料

GKE on AWS 會記錄下列資訊:

  • 每個控制層副本上的系統元件記錄。
  • 每個節點集區節點上系統服務的記錄。
  • 工作負載記錄 (選用)

啟用工作負載記錄功能

如要啟用工作負載記錄,您必須建立新的 Kubernetes 叢集,版本為 1.22 以上。

根據預設,在 AWS 上建立叢集時,GKE 會啟用系統記錄。如要啟用工作負載記錄功能,請使用 --logging 旗標建立叢集。您可以選擇為系統元件、工作負載或兩者啟用記錄。

舉例來說,如要在新叢集上同時啟用系統和工作負載記錄,請按照建立叢集的說明操作,但請在 gcloud 指令中加入 --logging 標記:

gcloud container aws clusters create CLUSTER_NAME
...
--logging=SYSTEM,WORKLOAD

更新現有叢集

gcloud container aws clusters update CLUSTER_NAME
...
--logging=SYSTEM,WORKLOAD

存取記錄

您可以使用下列幾種方式,在 Cloud Logging 中存取 GKE on AWS 記錄:

  • 記錄檔探索工具:您可以使用記錄篩選器選取 Kubernetes 資源 (例如叢集、節點、命名空間、Pod 或容器記錄),直接從記錄檔探索工具查看記錄。

  • Google Cloud CLI - 使用 gcloud logging read 指令,選取適當的叢集、節點、Pod 和容器記錄。

瞭解記錄檔

Cloud Logging 中的記錄是記錄項目的集合,每個記錄項目都對應到一個特定類型的記錄資源

資源類型

以下是 GKE on AWS 專屬的資源類型:

資源類型 顯示名稱
k8s_control_plane_component 控制層元件記錄檔
k8s_node 節點集區記錄
k8s_container 工作負載容器記錄

當 GKE on AWS 寫入叢集記錄時,每個記錄項目都會包含資源類型。瞭解記錄檔的顯示位置,有助於在需要時輕鬆找到記錄檔。

控制層記錄檔

控制層記錄使用 k8s_control_plane_component 資源類型。包括在控制層副本上執行的系統元件記錄檔,例如 kube-apiserver

節點記錄檔

節點記錄屬於 k8s_node 資源類型。包括在工作節點上執行的重要系統元件記錄,例如 kubeletcontainerd

系統應用程式記錄

系統應用程式記錄檔屬於 k8s_container 資源類型。包括 GKE on AWS 安裝在工作站節點上的 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 中建構搜尋查詢。這個部分會顯示指定記錄檔欄位的記錄項目數量,並依數量遞減排序。使用記錄檔欄位探索工具查看 GKE on AWS 記錄檔特別實用,因為您可以輕鬆選取資源的 Kubernetes 值。舉例來說,您可以選取特定叢集、命名空間、Pod 名稱和容器名稱的記錄。

詳情請參閱「使用記錄檔探索工具」。

查詢範例

本節包含您可在記錄檔探索工具中執行的查詢範例。

範例 1:取得 AWS 叢集 CLUSTER_NAME 控制層節點上 kube-apiserver 的記錄:

resource.type="k8s_control_plane_component"
resource.labels.cluster_name="awsClusters/CLUSTER_NAME"
resource.labels.component_name="apiserver"

範例 2:在 AWS 叢集 CLUSTER_NAME的工作者節點上取得 kubelet 的記錄:

resource.type="k8s_node"
resource.labels.cluster_name="awsClusters/CLUSTER_NAME"
log_name="projects/PROJECT_ID/logs/kubelet"

範例 3:取得 AWS 叢集 CLUSTER_NAMEcilium-agent 容器記錄:

resource.type="k8s_container"
resource.labels.cluster_name="awsClusters/CLUSTER_NAME"
resource.labels.container_name="cilium-agent"

後續步驟