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 价格。
下表列出了 create 和 update 命令的 --logging
标志支持的值。
日志源 | --logging 值 |
收集的日志 |
---|---|---|
无 | NONE |
未向 Cloud Logging 发送任何日志;集群中未安装任何日志收集代理。GKE Autopilot 集群不支持此值。 |
系统 | SYSTEM |
从以下来源收集日志:
此外,还会收集 Kubernetes 事件。所有集群类型都需要此值。 |
工作负载 | WORKLOAD |
由用户节点上运行的非系统容器生成的所有日志。 此值默认情况下处于启用状态,但对于所有集群类型都是可选的。 |
API 服务器 | API_SERVER |
由 kube-apiserver 生成的所有日志。 此值对于所有集群类型都是可选的。 |
调度器 | SCHEDULER |
由 kube-scheduler 生成的所有日志。 此值对于所有集群类型都是可选的。 |
控制器管理器 | CONTROLLER_MANAGER |
由 kube-controller-manager 生成的所有日志。 此值对于所有集群类型都是可选的。 |
可用指标
如果您选择将指标发送到 Cloud Monitoring,则必须发送系统指标,并可以选择性地发送其他指标。
了解 Cloud Monitoring 价格,包括哪些指标是免费的。
下表列出了 create 和 update 命令的 --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 的项目中创建和注册新集群时,系统会默认启用哪些日志和指标:
日志
日志名称 | 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 集群:
在 Autopilot 集群创建页面的导航窗格中,点击高级设置。
在操作列表中,选择要收集的日志和指标。
在 Cloud Logging 的组件列表中,选择要收集日志的组件。
在 Cloud Monitoring 的组件列表中,选择要从中收集指标的组件。
Autopilot 集群始终使用 Google 的遥测收集最佳实践,这意味着系统和工作负载日志记录始终处于启用状态,并且系统监控始终处于启用状态。
点击创建。
对于 Standard 集群:
在 Standard 集群创建页面的导航窗格中,点击集群下的功能。
在操作列表中,选择要收集的日志和指标。
在 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
对于新集群,Cloud Logging 和 Cloud Monitoring 默认处于启用状态。如需创建集群,请运行以下命令:
gcloud container clusters create CLUSTER_NAME \ --location=COMPUTE_LOCATION
替换以下内容:
CLUSTER_NAME
:您的集群的名称。COMPUTE_LOCATION
:集群的 Compute Engine 位置。
或者,您也可以将以英文逗号分隔的值列表传递给
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
同样,您可以将以英文逗号分隔的值列表传递给
--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
您可以使用
--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_config
和monitoring_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 集成设置,请按照以下步骤操作:
-
在 Google Cloud 控制台中,转到 Kubernetes 集群页面:
如果您使用搜索栏查找此页面,请选择子标题为 Kubernetes Engine 的结果。
在集群的详细信息面板中,查看 Cloud Logging、Cloud Monitoring 和 Google Cloud Managed Service for Prometheus 的状态。
修改集群
如需更改现有集群的 Cloud Logging 或 Cloud Monitoring 集成设置,请按照以下步骤操作:
控制台
-
在 Google Cloud 控制台中,转到 Kubernetes 集群页面:
如果您使用搜索栏查找此页面,请选择子标题为 Kubernetes Engine 的结果。
点击集群的名称。
如需修改将哪些日志发送到 Cloud Logging、将哪些指标发送到 Cloud Monitoring,或者是否启用 Google Cloud Managed Service for Prometheus,请点击 Cloud Logging、Cloud Monitoring 或 Google Cloud Managed Service for Prometheus 旁边的修改 edit。
点击保存。
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_config
和monitoring_config
块。如需启用从 API 服务器、调度器和控制器管理器收集日志的功能,您需要使用 Terraform Google Cloud 提供程序 4.44.0 版或更高版本。如需了解有关将 Google Cloud 与 Terraform 搭配使用的一般信息,请参阅将 Terraform 与 Google Cloud 搭配使用。
已弃用的配置参数
如果您之前使用过旧版配置参数为 GKE 集群配置日志记录和监控支持,则这些参数将被弃用。下表显示了用于替换已弃用标志的等效配置参数。
旧版配置 | 旧版 create 参数 |
旧版 update 参数 |
新版 create 和 update 参数 |
---|---|---|---|
已停用 | --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 相关的费用。