为 GKE 配置 Logging 和 Monitoring


Google Kubernetes Engine (GKE) 包含与 Cloud Logging 和 Cloud Monitoring 的集成,包括 Google Cloud Managed Service for Prometheus

通过这一集成,您可以利用高级分析和跟踪功能,监控正在运行的 GKE 集群、管理系统和调试日志以及分析系统性能。

此集成还提供了用于观察 GKE 集群的信息中心

安全日志(包括基本审核日志)可用于 GKE 和大多数其他 Google Cloud 服务,即使没有为 GKE 集群启用 Cloud Logging 也是如此。如需了解详情,请参阅 Cloud Audit Logs

本页面介绍了如何执行以下操作:

  • 创建新集群并配置 Cloud Logging、Cloud Monitoring 和 Google Cloud Managed Service for Prometheus。

  • 选择要收集的日志和指标。

  • 为集群停用 Cloud Logging、Cloud Monitoring 和 Google Cloud Managed Service for Prometheus。

对于 GKE Autopilot 集群,您无法停用 Cloud Logging 和 Cloud Monitoring 集成。

准备工作

在开始之前,请确保您已执行以下任务:

  • 启用 Google Kubernetes Engine API。
  • 启用 Google Kubernetes Engine API
  • 如果您要使用 Google Cloud CLI 执行此任务,请安装初始化 gcloud CLI。 如果您之前安装了 gcloud CLI,请运行 gcloud components update 以获取最新版本。
  • 确保您是包含您集群的项目的 Owner

  • 确保您已启用 Cloud Logging API。 您可以从概览页面中查看 Cloud Logging API 的状态。

日志和指标

您可以选择是否将日志和指标从 GKE 集群发送到 Cloud Logging 和 Cloud Monitoring。以下部分介绍了哪些日志和指标可用,以及在创建集群时系统会默认启用哪些日志和指标。

可用日志

如果您选择将日志发送到 Cloud Logging,则必须发送系统日志,并且可以选择性地发送其他来源的日志。

了解 Cloud Logging 价格

下表列出了 createupdate 命令的 --logging 标志支持的值。

日志源 --logging 收集的日志
NONE 未向 Cloud Logging 发送任何日志;集群中未安装任何日志收集代理。GKE Autopilot 集群不支持此值。
系统 SYSTEM 从以下来源收集日志:
  • 在命名空间 kube-systemistio-systemknative-servinggke-systemconfig-management-system 中运行的所有 Pod。
  • 未容器化的关键服务,包括 docker/containerd 运行时、kubeletkubelet-monitornode-problem-detectorkube-container-runtime-monitor
  • 节点的串行端口输出(如果虚拟机实例元数据 serial-port-logging-enable 设置为 true)。

此外,还会收集 Kubernetes 事件。所有集群类型都需要此值。

工作负载 WORKLOAD 由用户节点上运行的非系统容器生成的所有日志。 此值默认情况下处于启用状态,但对于所有集群类型都是可选的。
API 服务器 API_SERVER kube-apiserver 生成的所有日志。 此值对于所有集群类型都是可选的。
调度器 SCHEDULER kube-scheduler 生成的所有日志。 此值对于所有集群类型都是可选的。
控制器管理器 CONTROLLER_MANAGER kube-controller-manager 生成的所有日志。 此值对于所有集群类型都是可选的。

可用指标

如果您选择将指标发送到 Cloud Monitoring,则必须发送系统指标,并可以选择性地发送其他指标。

了解 Cloud Monitoring 价格,包括哪些指标是免费的。

下表列出了 createupdate 命令的 --monitoring 标志支持的值。

来源 --monitoring 收集的指标
NONE 未向 Cloud Monitoring 发送任何指标;集群中未安装任何指标收集代理。 GKE Autopilot 集群不支持此值。
系统 SYSTEM 来自 Kubernetes 需要的基本系统组件的指标。如需查看指标的完整列表,请参阅 Kubernetes 指标
API 服务器 API_SERVER 来自 kube-apiserver 的指标。 如需查看指标的完整列表,请参阅 API 服务器指标
调度器 SCHEDULER 来自 kube-scheduler 的指标。 如需查看指标的完整列表,请参阅调度器指标
控制器管理器 CONTROLLER_MANAGER 来自 kube-controller-manager 的指标。 如需查看指标的完整列表,请参阅控制器管理器指标
永久性卷(存储空间) STORAGE 来自 kube-state-metrics 的存储指标。 包括永久性卷和永久性卷声明的指标。如需查看指标的完整列表,请参阅存储空间指标
Pod POD 来自 kube-state-metrics 的 pod 指标。如需查看指标的完整列表,请参阅 Pod 指标
Deployment DEPLOYMENT 来自 kube-state-metrics 的部署指标。如需查看指标的完整列表,请参阅部署指标
StatefulSet STATEFULSET 来自 kube-state-metrics 的 StatefulSet 指标。如需查看指标的完整列表,请参阅 StatefulSet 指标
DaemonSet DAEMONSET 来自 kube-state-metrics 的 DaemonSet 指标。如需查看指标的完整列表,请参阅 DaemonSet 指标
HorizonalPodAutoscaler HPA 来自 kube-state-metrics 的 HPA 指标。 查看 HorizonalPodAutoscaler 指标的完整列表。
cAdvisor CADVISOR cAdvisor/Kubelet 指标包中提供的 cAdvisor 指标。如需查看指标的完整列表,请参阅 cAdvisor 指标
Kubelet KUBELET cAdvisor/Kubelet 指标包中提供的 Kubelet 指标。如需查看指标的完整列表,请参阅相关指标包。Kubelet 指标

此外,您还可以使用 Google Cloud Managed Service for Prometheus 来收集任何 GKE 工作负载公开的 Prometheus 样式指标,这样您就可以使用 Prometheus 针对工作负载进行监控和提醒,而不必大规模地手动管理和操作 Prometheus。

默认启用的日志和指标

在 Google Cloud 上创建新的 GKE 集群时,系统会在创建集群期间默认启用某些日志和指标。

  • 系统日志和指标对于所有类型的集群都处于启用状态,并且无法停用。
  • 默认情况下,工作负载日志对于所有 Autopilot 集群都处于启用状态,但可以停用。我们不建议停用工作负载日志,因为这会影响可支持性。
  • 对于 GKE Enterprise 版项目,如果您在创建集群时注册到舰队,则系统会默认启用其他有用的日志和指标。如果您想在创建集群后启用这些日志和指标,请参阅修改集群

在下表中,对勾标记 () 表示在启用了 GKE Enterprise 的项目中创建和注册新集群时,系统会默认启用哪些日志和指标:

日志

日志名称 Autopilot 标准
系统
Workloads -
API 服务器
调度器
控制器管理器

控制平面日志(API 服务器、调度器和控制器管理器)会产生 Cloud Logging 费用。

指标

指标名称 Autopilot 标准
系统
API 服务器
调度器
控制器管理器
永久性卷(存储空间)
Pod
Deployment
StatefulState
DaemonSet
HorizonalPodAutoscaler
cAdvisor
Kubelet

如果项目启用了 GKE Enterprise,则项目中所有已注册的集群都可以使用以下指标包:控制平面指标Kube State Metrics 指标cAdvisor/Kubelet 指标,且无需任何额外的费用;否则,这些指标会产生 Cloud Monitoring 费用。

您可以选择在创建集群期间在创建集群后停用默认日志和指标。

为新集群配置监控和日志记录功能

本部分中的集群创建说明仅涵盖与 Cloud Logging 和 Cloud Monitoring 相关的选项。如需查看有关创建 GKE 集群的完整说明,请参阅关于创建标准Autopilot 集群的文档。

如需在创建 GKE 集群时手动配置日志记录和监控,请完成以下步骤:

控制台

对于 Autopilot 集群

  1. 在 Autopilot 集群创建页面的导航窗格中,点击高级设置

    创建 Autopilot 集群

  2. 操作列表中,选择要收集的日志和指标。

    • 在 Cloud Logging 的组件列表中,选择要收集日志的组件。

    • 在 Cloud Monitoring 的组件列表中,选择要从中收集指标的组件。

    Autopilot 集群始终使用 Google 的遥测收集最佳实践,这意味着系统和工作负载日志记录始终处于启用状态,并且系统监控始终处于启用状态。

  3. 点击创建

对于 Standard 集群

  1. 在 Standard 集群创建页面的导航窗格中,点击集群下的功能

    创建一个 Kubernetes 集群

  2. 操作列表中,选择要收集的日志和指标。

    • 在 Cloud Logging 的组件列表中,选择要收集日志的组件。

    • 在 Cloud Monitoring 的组件列表中,选择要从中收集指标的组件。

    • 如需停用 Cloud Logging(审核日志除外),请清除启用 Cloud Logging 复选框。

    • 如需停用 Cloud Monitoring,请清除启用 Cloud Monitoring 复选框。

    • 如需停用 Google Cloud Managed Service for Prometheus,请清除启用 Google Cloud Managed Service for Prometheus 复选框。

gcloud

  1. 对于新集群,Cloud Logging 和 Cloud Monitoring 默认处于启用状态。如需创建集群,请运行以下命令:

    gcloud container clusters create CLUSTER_NAME \
        --location=COMPUTE_LOCATION
    

    替换以下内容:

    1. 或者,您也可以将以英文逗号分隔的值列表传递给 create 命令的 --logging 标志,配置向 Cloud Logging 发送哪些日志。如果无需收集任何日志,请传递 --logging=NONE。如需收集系统、API 服务器、调度器和控制器管理器日志,请传递 --logging=SYSTEM,API_SERVER,SCHEDULER,CONTROLLER_MANAGER。如需收集系统日志和工作负载日志,请传递 --logging=SYSTEM,WORKLOAD。例如:

      gcloud container clusters create CLUSTER_NAME \
          --location=COMPUTE_LOCATION \
          --logging=SYSTEM,WORKLOAD
      
    2. 同样,您可以将以英文逗号分隔的值列表传递给 --monitoring 标志,配置向 Cloud Monitoring 发送哪些指标。如果无需收集任何指标,请传递 --monitoring=NONE。如需收集系统指标,请传递 --monitoring=SYSTEM。如需收集所有指标,请传递 --monitoring=SYSTEM,API_SERVER,SCHEDULER,CONTROLLER_MANAGER,STORAGE,POD,DEPLOYMENT,STATEFULSET, DAEMONSET,HPA,CADVISOR,KUBELET。例如:

      gcloud container clusters create CLUSTER_NAME \
          --location=COMPUTE_LOCATION \
          --monitoring=SYSTEM,API_SERVER,SCHEDULER,CONTROLLER_MANAGER,STORAGE,POD,DEPLOYMENT,STATEFULSET,DAEMONSET,HPA,CADVISOR,KUBELET
      
    3. 您可以使用 --enable-managed-prometheus 标志单独启用 Google Cloud Managed Service for Prometheus。例如:

      gcloud container clusters create CLUSTER_NAME \
          --location=COMPUTE_LOCATION \
          --enable-managed-prometheus
      

      --enable-managed-prometheus 标志会启用代管式收集器,您必须配置该收集器。

Terraform

  • 如需使用 Terraform 配置日志和指标的收集,请参阅 google_container_cluster 的 Terraform Registry 中的 logging_configmonitoring_config 块。如需启用从 API 服务器、调度器和控制器管理器收集日志的功能,您需要使用 Terraform Google Cloud 提供程序 4.44.0 版或更高版本。

  • 如需了解有关将 Google Cloud 与 Terraform 搭配使用的一般信息,请参阅将 Terraform 与 Google Cloud 搭配使用

为现有集群配置监控和日志记录功能

以下部分详细介绍了如何修改现有 GKE 集群的 Cloud Logging 和 Cloud Monitoring 集成。

更改监控和日志记录支持以及更改集群的 Kubernetes 版本是不同的操作。更改集群的 Kubernetes 版本不会更改已配置的监控和日志记录支持。

我的集群使用哪种监控和日志记录支持?

如需查看集群的 Cloud Logging 和 Cloud Monitoring 集成设置,请按照以下步骤操作:

  1. 在 Google Cloud 控制台中,转到 Kubernetes 集群页面:

    转到 Kubernetes 集群

    如果您使用搜索栏查找此页面,请选择子标题为 Kubernetes Engine 的结果。

  2. 在集群的详细信息面板中,查看 Cloud LoggingCloud MonitoringGoogle Cloud Managed Service for Prometheus 的状态。

修改集群

如需更改现有集群的 Cloud Logging 或 Cloud Monitoring 集成设置,请按照以下步骤操作:

控制台

  1. 在 Google Cloud 控制台中,转到 Kubernetes 集群页面:

    转到 Kubernetes 集群

    如果您使用搜索栏查找此页面,请选择子标题为 Kubernetes Engine 的结果。

  2. 点击集群的名称。

  3. 如需修改将哪些日志发送到 Cloud Logging、将哪些指标发送到 Cloud Monitoring,或者是否启用 Google Cloud Managed Service for Prometheus,请点击 Cloud Logging、Cloud Monitoring 或 Google Cloud Managed Service for Prometheus 旁边的修改

  4. 点击保存

gcloud

以下 gcloud 说明介绍了如何使用 gcloud container clusters update 命令升级集群的监控和日志记录支持。请注意,您将使用 update 命令,而不是 upgrade 命令。

  • 通过将以英文逗号分隔的值列表传递给 gcloud container clusters update 命令的 --logging 标志,配置向 Cloud Logging 发送哪些日志。查看可用日志源的完整列表。例如,如需收集系统日志和工作负载日志,请传递 --logging=SYSTEM,WORKLOAD。如需仅收集系统日志,请传递 --logging=SYSTEM。或者,如果无需收集任何日志,请传递 --logging=NONE

    gcloud container clusters update CLUSTER_NAME \
        --location=COMPUTE_LOCATION \
        --logging=NONE
    
  • 通过将以英文逗号分隔的值列表传递给 gcloud container clusters update 命令的 --monitoring 标志,配置向 Cloud Monitoring 发送哪些指标。查看可用指标来源的完整列表。例如,如需收集系统指标,请传递 --monitoring=SYSTEM。或者,如果无需收集任何指标,请传递 --monitoring=NONE

    gcloud container clusters update CLUSTER_NAME \
        --location=COMPUTE_LOCATION \
        --monitoring=NONE
    
  • 使用 --enable-managed-prometheus--disable-managed-prometheus 标志配置是否启用 Google Cloud Managed Service for Prometheus。例如:

    gcloud container clusters update CLUSTER_NAME \
        --location=COMPUTE_LOCATION \
        --enable-managed-prometheus
    

Terraform

  • 如需使用 Terraform 配置日志和指标的收集,请参阅 google_container_cluster 的 Terraform Registry 中的 logging_configmonitoring_config 块。如需启用从 API 服务器、调度器和控制器管理器收集日志的功能,您需要使用 Terraform Google Cloud 提供程序 4.44.0 版或更高版本。

  • 如需了解有关将 Google Cloud 与 Terraform 搭配使用的一般信息,请参阅将 Terraform 与 Google Cloud 搭配使用

已弃用的配置参数

如果您之前使用过旧版配置参数为 GKE 集群配置日志记录和监控支持,则这些参数将被弃用。下表显示了用于替换已弃用标志的等效配置参数。

旧版配置 旧版 create 参数 旧版 update 参数 新版 createupdate 参数
已停用 --no-enable-stackdriver-kubernetes --no-enable-stackdriver-kubernetes --logging=NONE
--monitoring=NONE
仅启用系统监控(停用日志记录) --enable-stackdriver-kubernetes
--no-enable-cloud-logging
--logging-service=none
--monitoring-service=monitoring.googleapis.com/kubernetes
--logging=NONE
--monitoring=SYSTEM
仅启用系统与工作负载日志记录(停用监控) --enable-stackdriver-kubernetes
--no-enable-cloud-monitoring
--logging-service=logging.googleapis.com/kubernetes
--monitoring-service=none
--logging=SYSTEM,WORKLOAD
--monitoring=NONE
仅系统日志记录和监控(测试版) --enable-logging-monitoring-system-only --enable-logging-monitoring-system-only --logging=SYSTEM
--monitoring=SYSTEM
系统与工作负载日志记录和监控 --enable-stackdriver-kubernetes --enable-stackdriver-kubernetes --logging=SYSTEM,WORKLOAD
--monitoring=SYSTEM

后续步骤

  • 请参阅价格页面,了解与 Cloud Logging、Cloud Monitoring 和 Google Cloud Managed Service for Prometheus 相关的费用。