mcpField
G
gke-tpu-metrics-monitoring

gke-tpu-metrics-monitoring

github.com/google云与 DevOps21.6k816 次安装今天更新
代码仓库

关于 gke-tpu-metrics-monitoring

面向 GKE TPU 工作负载运维的监控指南,帮助 Agent 通过 GKE 系统指标检查加速器、节点和节点池状态,以分析中断或性能问题。

主要功能

  1. 01检查 TPU 运行时指标配置
  2. 02监控加速器利用率与内存
  3. 03查询节点和节点池状态
  4. 04分析节点中断及原因
  5. 05计算恢复与中断间隔指标

适用场景

  1. 01排查 TPU 工作负载中断
  2. 02检查节点是否就绪
  3. 03监控多主机 TPU 节点池可用性
  4. 04评估加速器恢复和中断情况

MCP 相关

输入未说明与 MCP 的关系。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/google/skills --skill gke-tpu-metrics-monitoring

安装后在 Claude Code 中输入/gke-tpu-metrics-monitoring确认已加载。

附带文件references/failure_signatures.mdscripts/validate_queries.sh

详细介绍

GKE TPU 指标监控指南

此技能可让 Agent 使用 GKE 系统指标监控 GKE TPU 工作负载、节点和节点池,帮助诊断工作负载中断或性能问题是否由底层基础设施导致。

步骤 0:必需的上下文

使用可用的 GKE 和 Cloud 工具独立收集所需上下文(例如集群详情或节点池名称),或使用提供的 {variable} 占位符:

  • {project_id}:GCP 项目 ID。
  • {cluster_name}:GKE 集群名称。
  • {location}:GKE 集群位置(区域或可用区)。
  • {node_name}:(可选)特定 GKE 节点的名称。
  • {node_pool_name}:(可选)GKE 节点池的名称。

诊断步骤

步骤 1:验证 TPU 运行时指标配置 [Low Risk] [Auto]

在分析运行时指标之前,请验证工作负载是否已配置为导出这些指标。

  • 操作:验证 TPU 工作负载的 Pod 规范是否包含:
    • containerPort: 8431
    • JAX 版本为 0.4.14 或更高版本(如果使用 JAX)。
    • GKE 版本为 1.27.4-gke.900 或更高版本。
    • 集群已启用 GKE 系统指标。
步骤 2:监控 TPU 运行时指标 [Low Risk] [Auto]

如果配置正确,Cloud Monitoring 中将提供以下指标(受监控资源为 k8s_node 和 k8s_container):

  • 容器指标:
    • kubernetes.io/container/accelerator/duty_cycle:过去采样周期(60 秒)内,TPU 芯片上的 TensorCore 处于活动处理状态的时间百分比。
    • kubernetes.io/container/accelerator/memory_used:已分配的加速器内存量(字节)。
    • kubernetes.io/container/accelerator/memory_total:加速器内存总量(字节)。
  • 节点指标:
    • kubernetes.io/node/accelerator/duty_cycle
    • kubernetes.io/node/accelerator/memory_used
    • kubernetes.io/node/accelerator/memory_total
步骤 3:检查节点状态条件 [Low Risk] [Auto]

查询 GKE 节点的状态条件(GKE 版本为 1.32.1-gke.1357001 或更高版本)。

  • PromQL 查询(检查特定节点是否为 Ready):
    kubernetes_io:node_status_condition{monitored_resource="k8s_node", cluster_name="{cluster_name}", node_name="{node_name}", condition="Ready", status="True"}
    
  • PromQL 查询(列出条件为 True 且状态非 Ready 的节点):
    kubernetes_io:node_status_condition{monitored_resource="k8s_node", cluster_name="{cluster_name}", condition!="Ready", status="True"}
    
  • PromQL 查询(列出状态非 Ready 的节点):
    kubernetes_io:node_status_condition{monitored_resource="k8s_node", cluster_name="{cluster_name}", condition="Ready", status="False"}
    
  • PromQL 查询(整个 Fleet 的节点状态):
    avg by (condition,status)(avg_over_time(kubernetes_io:node_status_condition{monitored_resource="k8s_node"}[5m]))
    
步骤 4:检查节点池状态 [Low Risk] [Auto]

查询多主机 TPU 节点池的状态。

  • PromQL 查询(验证特定节点池是否正在运行):
    kubernetes_io:node_pool_status{monitored_resource="k8s_node_pool", cluster_name="{cluster_name}", node_pool_name="{node_pool_name}", status="Running"}
    
  • PromQL 查询(按状态分组监控节点池):
    count by (status)(count_over_time(kubernetes_io:node_pool_status{monitored_resource="k8s_node_pool"}[5m]))
    
    可能的状态:Provisioning、Running、Error、Reconciling、Stopping。
步骤 5:检查节点池可用性 [Low Risk] [Auto]

查询多主机 TPU 节点池中的所有节点是否都可用。

  • PromQL 查询(检查一段时间内的可用性):
    avg by (node_pool_name)(avg_over_time(kubernetes_io:node_pool_multi_host_available{monitored_resource="k8s_node_pool", cluster_name="{cluster_name}"}[5m]))
    
    值:1(True,所有节点均可用)或 0(False,部分节点不可用)。
步骤 6:分析节点中断 [Low Risk] [Auto]

查询 GKE 节点的中断次数。

  • PromQL 查询(按类型和原因细分中断):
    sum by (interruption_type,interruption_reason)(sum_over_time(kubernetes_io:node_interruption_count{monitored_resource="k8s_node"}[5m]))
    
    中断类型:TerminationEvent、MaintenanceEvent、PreemptionEvent。 中断原因:HostError、Eviction、AutoRepair。
  • PromQL 查询(筛选主机维护事件):
    sum by (interruption_type,interruption_reason)(sum_over_time(kubernetes_io:node_interruption_count{monitored_resource="k8s_node", interruption_reason="HW/SW Maintenance"}[5m]))
    
  • PromQL 查询(按节点池汇总中断次数):
    sum by (node_pool_name,interruption_type,interruption_reason)(sum_over_time(kubernetes_io:node_pool_interruption_count{monitored_resource="k8s_node_pool", interruption_reason="HW/SW Maintenance", node_pool_name="{node_pool_name}"}[5m]))
    
步骤 7:计算恢复和中断指标 [Low Risk] [Auto]

计算过去 7 天的平均恢复时间(MTTR)和平均中断间隔(MTBI)。

  • PromQL 查询(MTTR - 平均恢复时间):
    sum(sum_over_time(kubernetes_io:node_pool_accelerator_times_to_recover_sum{monitored_resource="k8s_node_pool", cluster_name="{cluster_name}"}[7d])) / sum(sum_over_time(kubernetes_io:node_pool_accelerator_times_to_recover_count{monitored_resource="k8s_node_pool",cluster_name="{cluster_name}"}[7d]))
    
  • PromQL 查询(MTBI - 平均中断间隔):
    sum(count_over_time(kubernetes_io:node_memory_total_bytes{monitored_resource="k8s_node", node_name=~"gke-tpu.*|gk3-tpu.*", cluster_name="{cluster_name}"}[7d])) / sum(sum_over_time(kubernetes_io:node_interruption_count{monitored_resource="k8s_node", node_name=~"gke-tpu.*|gk3-tpu.*", cluster_name="{cluster_name}"}[7d]))
    
步骤 8:监控 TPU 主机指标 [低风险] [自动]

对于 1.28.1-gke.1066000 或更高版本的 GKE,请监控 TPU 主机性能。

  • 容器指标:
    • kubernetes.io/container/accelerator/tensorcore_utilization:TensorCore 当前的利用率百分比。
    • kubernetes.io/container/accelerator/memory_bandwidth_utilization:加速器内存带宽当前的使用率百分比。
  • 节点指标:
    • kubernetes.io/node/accelerator/tensorcore_utilization
    • kubernetes.io/node/accelerator/memory_bandwidth_utilization

评论

支持 Markdown