Cloud Monitoring

本页面介绍如何使用 Cloud Monitoring 监控 Google Kubernetes Engine (GKE) 集群。

概览

您可以使用 Monitoring 来监控 GKE 集群中的信号和构建操作。

Cloud Monitoring 可监控系统指标和自定义指标。系统指标用于衡量集群的基础架构,例如 CPU 或内存用量。自定义指标是指您自己定义的应用特有指标,例如,活跃用户会话总数或呈现的网页总数。

对于系统指标,Cloud Monitoring 会创建一个 Deployment,用于定期连接到每个节点并收集其 Pod 和容器的相关指标,然后将收集到的指标发送到 Monitoring。

系统会从以下来源中收集系统资源用量指标:

  • CPUcontainer/cpu/usage_time
  • 内存container/memory/bytes_used(从 cgroup 中的 memory.usage_in_bytes收集)
  • 可逐出内存container/memory/bytes_used(从 memory.stattotal_inactive_file 字段中收集)
  • 不可逐出内存:按 memory.usage_in_bytes - memory.total_inactive_file 测量
  • 磁盘container/disk/bytes_used

如需查看从 GKE 收集的其他系统指标列表,请参阅指标列表

如需了解如何设置自定义指标,请参阅使用自定义指标或遵循使用自定义指标自动扩缩部署教程。

准备工作

请执行以下步骤为此任务做好准备:

  • 确保您已启用 Google Kubernetes Engine API。
  • 启用 Google Kubernetes Engine API
  • 确保您已安装 Cloud SDK
  • 设置默认项目 ID
    gcloud config set project [PROJECT_ID]
  • 如果您使用的是地区级集群,请设置默认计算地区
    gcloud config set compute/zone [COMPUTE_ZONE]
  • 如果您使用的是区域级集群,请设置默认计算区域
    gcloud config set compute/region [COMPUTE_REGION]
  • gcloud 更新到最新版本:
    gcloud components update
  • 确保您已创建工作区。如需了解详情,请参阅管理工作区

启用 Monitoring

您可以创建已启用 Monitoring 的集群,也可以在现有集群中启用 Monitoring。

集群的节点池(包括默认节点池)必须具有必要的 Google Cloud 范围才能与 Monitoring(https://www.googleapis.com/auth/monitoring 范围)进行交互。当您新建一个具有监控功能的集群时,GKE 会自动设置此范围;但是,现有集群可能不具备必要的权限。

创建具有监控功能的集群

gcloud

当您创建集群时,系统会自动设置 --enable-cloud-monitoring 标志,从而在集群中启用 Monitoring。

要停用此默认行为,请设置 --no-enable-cloud-monitoring 标志。

控制台

  1. 在 Cloud Console 中,转到 Kubernetes Engine > Kubernetes 集群页面:

    转到 Kubernetes 集群

  2. 点击创建集群

  3. 根据需要配置集群。

  4. 点击高级选项。 确保选中启用 Stackdriver Monitoring 服务

  5. 点击创建

为现有集群启用监控功能

gcloud

要为现有集群启用 Monitoring,请运行以下命令,其中 [CLUSTER_NAME] 是集群的名称。

gcloud beta container clusters update [CLUSTER_NAME] --monitoring-service monitoring.googleapis.com

如果您最初在创建集群时没有启用 Monitoring,并且想要稍后再启用该功能,那么集群的节点池可能不具备必要的 Google Cloud 范围。一种解决方法是新建一个具有相同节点数和必要范围的节点池,如下所示:

gcloud container node-pools create adjust-scope \
    --cluster [CLUSTER_NAME] \
    --num-nodes [NUM_NODES] \
    --scopes https://www.googleapis.com/auth/monitoring

创建新节点池后,将现有 Pod 迁移到具有正确范围的新节点池即可使用 Monitoring。如需了解详情,请参阅“在不停机的情况下升级虚拟机范围”

控制台

如果您最初在创建集群时没有启用 Monitoring,并且想要稍后再启用该功能,那么集群的节点池可能不具备必要的 Google Cloud 范围。如需查看解决方法,请参阅之前的 gcloud 部分。

  1. 在 Cloud Console 中,转到 Kubernetes Engine > Kubernetes 集群页面:

    转到 Kubernetes 集群

  2. 点击修改

  3. Stackdriver Monitoring 下拉值设置为已启用

  4. 点击保存

扩展基础架构指标

除应用指标以外,Cloud Monitoring 自定义指标还可以使用未包含在系统指标中的集群基础架构衡量指标,例如容器磁盘 I/O。您可以部署自己的基础架构 Monitoring 代理来收集这些指标并将其推送到 Cloud Monitoring。

cAdvisor

您可以使用 cAdvisor(Kubernetes 中使用的开源 Monitoring 代理)收集指标,然后使用 prometheus-to-sd 将这些指标推送到 Cloud Monitoring。

要在您自己的集群上运行 cAdvisor,请按以下步骤操作:

  1. 克隆 cAdvisor:

    git clone https://github.com/google/cadvisor.git
    cd cadvisor
    
  2. 按照 cAdvisor DaemonSet 说明安装 kustomize。如果您使用的是 Cloud Shell,请运行以下命令:

    go get github.com/kubernetes-sigs/kustomize
    
  3. 创建示例 cAdvisor 命名空间和 DaemonSet,用于导出所有容器指标:

    kustomize build deploy/kubernetes/overlays/examples | kubectl apply -f -
    

    现在,您应该会在 Cloud Monitoring 的 gke_container 资源下看到 Prometheus 指标

  4. 按照 cAdvisor kustomization 说明,根据您的需要更改提供的示例。运行以下命令以应用您的更改:

    kustomize build deploy/kubernetes/overlays/<my_custom_patches> | kubectl apply -f -
    

查看指标

您可以在 Google Cloud Console 中查看指标。

集群概览

Monitoring 提供了一个 GKE 概览菜单。此菜单用于收集有关集群的有价值信息,并将这些信息显示在实用的信息中心内。

要查看此概览菜单,请按以下步骤操作:

  1. 在 Cloud Console 中,转到 Monitoring

    转至 Monitoring

  2. 将指针悬停在资源上,然后选择 Kubernetes Engine

  3. 选择您的集群。

默认情况下,此概览菜单提供以下信息中心:

  • 突发事件:违反提醒政策
  • Events:按时间顺序列出云端帐号中发生的异常、事件、生命周期、标记、IAM 政策、部署、说明、云服务商更新和用户管理更新。
  • CPU Usage:显示每个集群的 CPU 使用量百分比。
  • Disk I/O:以 KB/s 为单位显示每个集群的磁盘 I/O 速率。
  • Network Traffic:以 KB/s 为单位显示每个集群的网络流量。
  • Pods:列出所有命名空间中的 Pod 和节点(Compute Engine 虚拟机实例)。选择任何 Pod 或节点将打开该资源的概览。

如需详细了解如何查看指标,请参阅 Monitoring 文档和监控过滤条件页面。

信息中心

您可以为 GKE 节点和容器创建自定义信息中心。

要创建信息中心,请按以下步骤操作:

  1. 在 Cloud Console 中,转到 Monitoring

    转至 Monitoring

  2. 将指针悬停在信息中心上,然后选择创建信息中心

  3. 要创建新信息中心,请点击 Add Chart

  4. Title 字段中,填充该信息中心的名称。

  5. 查找资源类型和指标 (Find resource type and metric) 字段中,搜索 instance 和/或 container,然后选择所需指标。

  6. 指标类型字段中,输入所需的指标或从自动填充菜单中选择所需的指标。

  7. (可选)使用 Filter 按特定值(例如应用、名称或版本)进行过滤。

  8. 根据需要进一步配置该信息中心。要创建信息中心,请点击 Save

Metrics Explorer

利用 Metrics Explorer,您可以选择与集群相关的特定指标并执行各种聚合。

要使用 Metrics Explorer,请按以下步骤操作:

  1. 在 Cloud Console 中,转到 Monitoring

    转至 Monitoring

  2. 将指针悬停在资源上,然后选择 Metrics Explorer

  3. 查找资源类型和指标 (Find resource type and metric) 搜索菜单中,为资源类型输入 gke_container

  4. 对于指标,请选择所需的指标。

  5. (可选)使用 Filter 菜单按资源进行过滤。

  6. 使用聚合 (Aggregation) 选项执行聚合。

最佳做法

  • 提醒:您可以设置提醒政策,以便在集群中发生可疑事件时收到通知。

停用监控功能

gcloud

要为现有集群停用监控功能,请运行以下命令,其中 [CLUSTER_NAME] 是集群的名称。

gcloud beta container clusters update [CLUSTER_NAME] --monitoring-service none

如果您在集群中运行 Cloud Operations for GKE,则必须停用监控和日志记录,方法是使用 gcloud beta 在集群中设置以下标志:

gcloud beta container clusters update [CLUSTER_NAME] --logging-service none --monitoring-service none

控制台

  1. 在 Cloud Console 中,转到 Kubernetes Engine > Kubernetes 集群页面:

    转到 Kubernetes 集群

  2. 点击修改

  3. Stackdriver Monitoring 下拉值设置为已停用

  4. 点击保存

后续步骤