将 GPU 指标发送到 Cloud Monitoring

如果您的集群中有使用 NVIDIA GPU 的节点,您可以通过将集群配置为将 NVIDIA 数据中心 GPU 管理器 (DCGM) 指标发送到 Cloud Monitoring,来监控 GPU 利用率、性能和健康状况。此解决方案使用 Google Cloud Managed Service for Prometheus 从 NVIDIA DCGM 收集指标。

本页面适用于管理底层技术基础架构生命周期的 IT 管理员和运维人员。如需详细了解我们在 Google Cloud 内容中提及的常见角色和示例任务,请参阅常见的 GKE Enterprise 用户角色和任务

准备工作

如需使用 Google Cloud Managed Service for Prometheus 从 DCGM 收集指标,您的 Google Distributed Cloud 部署必须满足以下要求:

配置 PodMonitoring 资源

为 Google Cloud Managed Service for Prometheus 配置 PodMonitoring 资源以收集导出的指标。如果您因为限制性安全或组织政策而无法安装应用或导出器,则我们建议您查阅开源文档以获取支持。

为了注入 DCGM 导出器 Pod (nvidia-dcgm-exporter) 发出的指标数据,Google Cloud Managed Service for Prometheus 使用目标抓取。目标抓取和指标注入使用 Kubernetes 自定义资源进行配置。代管式服务使用 PodMonitoring 自定义资源。

PodMonitoring 自定义资源仅会爬取在其中进行部署的命名空间中的目标。如需抓取多个命名空间中的目标,请在每个命名空间中部署相同的 PodMonitoring 自定义资源。

  1. 创建一个具有以下配置的清单文件:

    清单中的 selector 部分指定了 DCGM 导出器 Pod nvidia-dcgm-exporter 已被选中进行监控。在您安装 NVIDIA GPU Operator 时,系统会部署此 Pod。

    apiVersion: monitoring.googleapis.com/v1
    kind: PodMonitoring
    metadata:
      name: dcgm-gmp
    spec:
      selector:
        matchLabels:
          app: nvidia-dcgm-exporter
      endpoints:
      - port: metrics
        interval: 30s
    
  2. 部署 PodMonitoring 自定义资源:

    kubectl apply -n NAMESPACE -f FILENAME --kubeconfig KUBECONFIG
    

    替换以下内容:

    • NAMESPACE:您要部署 PodMonitoring 自定义资源的命名空间。

    • FILENAME:PodMonitoring 自定义资源的清单文件的路径。

    • KUBECONFIG:集群的 kubeconfig 文件的路径。

  3. 如需验证 PodMonitoring 自定义资源是否已安装在预期的命名空间中,请运行以下命令:

    kubectl get podmonitoring -n NAMESPACE --kubeconfig KUBECONFIG
    

    输出应类似如下所示:

    NAME       AGE
    dcgm-gmp   3m37s
    

验证配置

您可以使用 Metrics Explorer 验证您是否正确配置了 DCGM 导出器。Cloud Monitoring 可能需要一两分钟时间来注入您的指标。

如需验证指标是否已注入,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往  Metrics Explorer 页面:

    进入 Metrics Explorer

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

  2. 使用 Prometheus 查询语言 (PromQL) 指定要在图表上显示的数据:

    1. 在查询构建器窗格的工具栏中,点击 < > PromQL

    2. 在查询编辑器中输入查询。例如,如需绘制过去一小时内 CPU 在每个模式下所花费的平均秒数,请使用以下查询:

      DCGM_FI_DEV_GPU_UTIL{cluster="CLUSTER_NAME", namespace="NAMESPACE"}
      

    替换以下内容:

    • CLUSTER_NAME:包含使用 GPU 的节点的集群的名称。

    • NAMESPACE:您部署 PodMonitoring 自定义资源的命名空间。

    如需详细了解如何使用 PromQL,请参阅 Cloud Monitoring 中的 PromQL