为工作负载配置自动应用监控


通过为受支持的工作负载启用自动应用监控,您可以节省配置和维护在 Google Kubernetes Engine (GKE) 上运行的监控应用的时间和精力。

自动应用监控功能的运作方式

启用自动应用监控后,GKE 会检测受支持的工作负载的已部署实例,并为每个检测到的工作负载实例部署 PodMonitoring 资源

自动应用监控功能还会安装用于监控应用的开箱即用信息中心。这些指标由 Google Cloud Managed Service for Prometheus 收集。

支持的工作负载

自动应用监控支持以下工作负载:

如需详细了解您可以手动配置的其他开箱即用可观测性解决方案,请参阅 Google Cloud 可观测性文档中的导出程序配置简介

准备工作

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

  • 启用 Google Kubernetes Engine API。
  • 启用 Google Kubernetes Engine API
  • 如果您要使用 Google Cloud CLI 执行此任务,请安装初始化 gcloud CLI。 如果您之前安装了 gcloud CLI,请运行 gcloud components update 以获取最新版本。

自动应用监控的要求

如需启用自动应用监控,您的 GKE 集群必须满足以下要求:

启用自动应用监控

您可以使用 Google Cloud 控制台、Google Cloud CLI 或 GKE API 为新的或现有的 GKE 集群启用自动应用监控。

在您部署新工作负载或为集群启用自动应用监控后,系统最多需要 10 分钟才能开始为受支持的工作负载抓取指标。

控制台

如需为新集群启用自动应用监控,请执行以下操作:

  1. 前往 Google Cloud 控制台中的 Google Kubernetes Engine 页面。

    转到 Google Kubernetes Engine

  2. 点击 创建,然后在Standard 或 Autopilot 部分中点击配置

  3. 对于 Autopilot 模式集群,请点击高级设置。 对于标准模式集群,点击功能

  4. 操作部分中,选择启用自动应用监控

  5. 点击创建

您还可以通过更新集群详情标签页的操作部分中的启用自动应用监控字段,为现有集群启用自动应用监控。

gcloud

如需为新集群启用自动应用监控,请使用选项 --auto-monitoring-scope=ALL

gcloud beta container clusters create-auto CLUSTER_NAME \
    --location=COMPUTE_LOCATION \
    --auto-monitoring-scope=ALL

替换以下内容:

您还可以使用 gcloud beta container clusters update 命令更新现有集群。

API

如需为新集群启用自动应用监控,请向 clusters.create 方法发出 POST 请求:

POST https://container.googleapis.com/v1/projects/PROJECT_ID/locations/COMPUTE_LOCATION/clusters

{
  "cluster": {
    "name": CLUSTER_NAME
    "initialNodeCount": 1,
    "monitoringConfig": {
      "managedPrometheusConfig": {
        "enabled": true,
        "autoMonitoringConfig": {
          "scope": ALL
        }
      }
    }
  }
}

替换以下内容:

  • PROJECT_ID:您的 Google Cloud 项目 ID。
  • CLUSTER_NAME:新集群的名称。
  • COMPUTE_LOCATION:集群的 Compute Engine 位置

确定是否已启用自动应用监控

您可以使用 Google Cloud 控制台、gcloud CLI 或 GKE API 确定集群是否启用了自动应用监控。

控制台

执行以下操作:

  1. 前往 Google Cloud 控制台中的 Google Kubernetes Engine 页面:

    转到 Google Kubernetes Engine

  2. 在集群列表中,点击集群的名称。

  3. 功能部分,自动应用监控字段会指示自动应用监控功能处于启用还是停用状态。

gcloud

描述集群:

gcloud container clusters describe CLUSTER_NAME \
    --location=COMPUTE_LOCATION \
    --format='value(monitoringConfig.managedPrometheusConfig.autoMonitoringConfig.scope)'

替换以下内容:

输出类似于以下内容:

autoMonitoringConfig.scope: ALL

在输出中,如果 autoMonitoringConfig.scope 字段的值为 ALL,则表示自动应用监控已启用。否则,系统会停用自动应用监控。

API

clusters.get 方法发出 GET 请求:

GET https://container.googleapis.com/v1/projects/PROJECT_ID/locations/COMPUTE_LOCATION/clusters/CLUSTER_NAME

替换以下内容:

  • PROJECT_ID:您的 Google Cloud 项目 ID。
  • CLUSTER_NAME:集群的名称。
  • COMPUTE_LOCATION:集群的 Compute Engine 位置

输出类似于以下内容:

autoMonitoringConfig.scope: ALL

在输出中,如果 autoMonitoringConfig.scope 字段的值为 ALL,则表示自动应用监控已启用。否则,系统会停用自动应用监控。

查看信息中心

启用自动应用监控后,GKE 会安装开箱即用的信息中心,以便监控部署到集群的受支持的工作负载的应用。您不会看到从未在集群上运行过的受支持工作负载的信息中心。

如需在 Google Kubernetes Engine 页面中查看包含自动监控的工作负载遥测信息的信息中心,请执行以下操作:

  1. 前往 Google Cloud 控制台中的 Google Kubernetes Engine 页面:

    转到 Google Kubernetes Engine

  2. 点击您要查看自动监控的工作负载信息中心的集群名称。

  3. 点击可观测性标签页。集成部分会显示为在集群上运行的受支持的工作负载配置的信息中心。

如需在 Cloud Monitoring 页面中查看包含自动监控的工作负载遥测信息的信息中心,请执行以下操作:

  1. 前往信息中心页面。

    转到“信息中心”

  2. 点击信息中心列表标签页。

  3. 选择集成类别。

  4. 点击信息中心的名称。例如,RabbitMQ Prometheus 概览

停用自动应用监控

如果您在集群上停用自动应用监控,则 GKE 创建的 PodMonitoring 资源会保持不变,并且 GKE 会继续监控现有的受支持的工作负载。GKE 会停止自动监控您部署到集群的受支持工作负载的新实例。如需停止监控现有的受支持的工作负载,您必须删除 GKE 创建的 PodMonitoring 资源。如果您为集群重新启用自动应用监控,GKE 会检测并协调之前创建的 PodMonitoring 资源。

您可以使用Google Cloud 控制台、gcloud CLI 或 GKE API 为集群停用自动应用监控。

控制台

  1. 前往 Google Cloud 控制台中的 Google Kubernetes Engine 页面:

    转到 Google Kubernetes Engine

  2. 点击集群的名称。

  3. 功能列表中,找到自动应用监控字段。

  4. 点击修改

  5. 取消选择启用自动应用监控

  6. 点击保存

gcloud

使用 --auto-monitoring-scope=NONE 选项更新集群:

gcloud beta container clusters update CLUSTER_NAME \
    --location=COMPUTE_LOCATION \
    --auto-monitoring-scope=NONE

替换以下内容:

API

clusters.update 方法发出 PUT 请求:

PUT https://container.googleapis.com/v1/projects/PROJECT_ID/locations/COMPUTE_LOCATION/clusters/CLUSTER_NAME

{
  "update": {
    "desiredMonitoringConfig": {
      "managedPrometheusConfig": {
        "autoMonitoringConfig": {
          "scope": NONE
        }
      }
    }
  }
}

替换以下内容:

  • PROJECT_ID:您的 Google Cloud 项目 ID。
  • CLUSTER_NAME:集群的名称。
  • COMPUTE_LOCATION:集群的 Compute Engine 位置

自定义对受支持的工作负载的自动监控

您可以为受支持的工作负载的各个实例自定义监控配置,也可以选择不监控受支持的工作负载的各个实例。

如需为受支持工作负载的已部署实例自定义 PodMonitoring 资源,同时不影响其他工作负载的自动应用监控,您必须从自动应用监控中排除该实例,然后更新配置或替换与目标工作负载实例关联的 PodMonitoring 资源。

如果您更新或删除 GKE 创建的 PodMonitoring 资源,但未排除关联的工作负载,GKE 会恢复 PodMonitoring 资源,以确保在监控其他受支持的工作负载时保持连续性。

查找工作负载的 PodMonitoring 资源

您可以使用 Google Cloud 控制台来识别 GKE 为工作负载创建的 PodMonitoring 资源:

  1. 前往对象浏览器页面。

    前往对象浏览器

  2. 集群字段中,输入集群的名称。

  3. 命名空间字段中,输入命名空间的名称。

  4. 对象种类过滤条件中,选择 PodMonitoring

  5. monitoring.googleapis.com 下,选择 PodMonitoring

  6. 点击对象名称可检查该对象。 元数据标签 source:gke-auto-monitoring 表示 GKE 创建了 PodMonitoring 资源。

从自动监控中排除已部署的实例

如果您不想监控受支持的工作负载的已部署实例,或者想自定义工作负载的监控配置,可以将该工作负载从自动应用监控中排除。

如需排除工作负载,您必须将元数据标签 allow-gke-auto-monitoring: false 添加到目标工作负载配置中。例如,以下清单描述了一个未由自动应用监控功能监控的 RabbitMQ StatefulSet:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: rabbitmq
  allow-gke-auto-monitoring: false
spec:
  serviceName: rabbitmq
  replicas: 3

排除工作负载实例后,您可以删除 GKE 为该工作负载创建的 PodMonitoring 资源。如果您删除或修改 PodMonitoring 资源,GKE 不会尝试恢复该资源。如果您部署了具有元数据标签 allow-gke-auto-monitoring: false 的新工作负载,GKE 不会为该工作负载创建 PodMonitoring 资源。

删除工作负载的监控配置

如果您想停止监控工作负载,或者想为工作负载部署自己的自定义 PodMonitoring 资源,可以删除监控配置。

如需删除单个工作负载的自动应用监控配置,请执行以下操作:

  1. 从自动应用监控中排除工作负载
  2. 识别 GKE 为工作负载创建的 PodMonitoring 资源。
  3. 删除 PodMonitoring 资源:

    kubectl delete podmonitoring POD_MONITORING_NAME -n NAMESPACE
    

    替换以下内容:

    • POD_MONITORING_NAMEPodMonitoring 资源的名称。
    • NAMESPACEPodMonitoring 资源的命名空间。

如需删除集群中所有工作负载的自动应用监控配置,请执行以下操作:

  1. 停用自动应用监控
  2. 删除集群中具有元数据标签 source:gke-auto-monitoring 的所有 PodMonitoring 资源:

    kubectl delete podmonitorings -l source=gke-auto-monitoring --all-namespaces
    

价格

您可以免费使用自动应用监控功能,为受支持的工作负载配置自动应用监控,并安装开箱即用的信息中心。不过,对于 Google Cloud Managed Service for Prometheus 提取指标的操作,Monitoring 会收取相应费用,具体费用详见 Monitoring 价格

后续步骤