关于 huawei-cloud-cce-metric-analyzer
面向 Huawei Cloud CCE 运维人员的只读指标分析技能,可查询集群工作负载、节点及相关云资源指标。它提供 TopN、阈值状态分类和集群级异常检测汇总。
主要功能
- 01分析 Pod 和 Node CPU、内存及磁盘
- 02查询 GPU、CoreDNS 与 ingress 指标
- 03查看自动扩缩容及控制平面指标
- 04查询 ECS、ELB、EIP 和 NAT 指标
- 05汇总集群监控并检测异常
- 06按阈值分类指标状态
适用场景
- 01定位资源使用率较高的 Pod 或节点
- 02检查 GPU、DNS 或 ingress 运行状况
- 03排查自动扩缩容及控制平面指标
- 04汇总集群和关联云资源的监控数据
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ huaweicloud/ huaweicloud-skills --skill huawei-cloud-cce-metric-analyzer安装后在 Claude Code 中输入/huawei-cloud-cce-metric-analyzer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
skill-profile.yamlreferences/acceptance-criteria.mdcli-installation-guide.mdiam-policies.mdkubectl-cce.mdoutput-schema.mdrisk-rules.mdverification-method.mdworkflow.mdscripts/huawei-cloud.pyscripts/huawei_cloud/__init__.pyaom.pycce_cluster_monitoring.pycce_metrics.pycce.pycommon.pydispatcher.pyecs.pyelb.pykubectl_client.pynetwork.py详细介绍
Huawei Cloud CCE 指标分析器
概览
查询和分析 CCE 集群(Pod/Node CPU/内存/磁盘)及云资源(ECS、ELB、EIP、NAT)的指标。支持基于阈值的异常检测、状态分类(严重/警告/正常)和全集群监控汇总。
架构:python3 scripts/huawei-cloud.py 分发器 → hcloud(KooCLI)云服务查询 + 已签名的 AOM Prometheus HTTP 查询 + 仅在需要 Kubernetes 资源关系时进行有限的 kubectl 读取 → Pod/Node 指标、ECS/ELB/EIP/NAT 指标 → 阈值分类 → 异常检测
执行方式:云服务查询通过本地
hcloudCLI 执行。AOM Prometheusquery_range调用是唯一例外,因所需的 Prometheus 范围查询路径与 hcloud 不兼容,所以使用已签名的 HTTPS 请求。除随附的分发器外,不要调用 Huawei Cloud SDK、curl IAM 流程、openstack 或手写云 API。
相关技能:使用 Pod/Node 诊断器、Kubernetes 事件分析器、容量/成本技能或自动修复运行器进行后续诊断,或执行明确要求的修复。
功能:
- Pod CPU/内存 TopN 排名及单个 Pod 的时间序列指标
- Node CPU/内存/磁盘 TopN 排名及单个 Node 的时间序列指标
- Node GPU 和 xGPU 指标,包括 GPU 利用率、内存、温度、功耗、调度策略、xGPU 分配、使用情况和健康状况
- CoreDNS QPS、排除 NXDOMAIN 的错误率、NXDOMAIN 率、P95 延迟、副本数以及每个 Pod 的 CPU/内存指标
- nginx-ingress QPS、4xx/5xx 率、成功率、P95 延迟、活动连接数、每个 Pod 的 CPU/内存,以及 Ingress TLS 证书过期状态
- Autoscaler 无法调度的 Pod、节点状态计数、扩缩容事件、错误、节点组、HPA 当前/目标副本数以及每个 Pod 的 CPU/内存指标
- Kubernetes 控制平面指标,包括 apiserver、etcd、controller-manager 和 scheduler
- ECS 实例 CPU/内存/磁盘/网络指标
- ELB 连接数、带宽、QPS 指标
- EIP 带宽、流量、丢包指标
- NAT Gateway SNAT 连接指标
- 带异常检测的全集群监控汇总(80% 阈值)
- 基于阈值的状态分类(严重/警告/正常/未知)
典型用例:查询 Pod/Node TopN、GPU/xGPU、CoreDNS、nginx-ingress、autoscaler、控制平面、ECS/ELB/EIP/NAT 指标、全集群汇总以及基于阈值的异常检测。
前置条件
1. 运行时依赖
- Python 3.8+,用于分发器和结果处理
- hcloud(KooCLI)7.2.2+,用于 CCE/ECS/ELB/VPC/EIP/NAT/CES/IAM 云服务查询
kubectl仅用于读取无法从 AOM/hcloud 推导出的 Kubernetes 资源,例如按 Podlabel_selector筛选、Ingress TLS 证书检查,以及发现用于 ELB/EIP 关联的 LoadBalancer Service;没有外部 EIP 的集群需要使用kubectl-cce-plugin/README.md中的kubectl cce插件- Prometheus 相关监控数据通过已签名的 HTTPS 请求从 AOM Prometheus 查询;集群必须已将 Prometheus 插件接入 AOM,否则这些工具可能返回空指标序列
- controller-manager、scheduler 和 etcd 指标需要在 AOM 中分别启用
kube-controller-manager、kube-scheduler和etcd-serverServiceMonitor;否则这些工具可能返回空指标序列 - Autoscaler、ingress-controller 和 NVIDIA GPU 指标需要在 AOM 中分别启用对应的
autoscaler、ingress-controller和nvidia-gpu-device-pluginPodMonitor;Ingress 请求指标还要求在 ingress-controller PodMonitor 中明确允许nginx_ingress_controller_requests - 首次使用前运行环境检查(参见验证部分)
- 按照 references/kubectl-cce.md 安装并使用
kubectl-cce
2. 凭证配置
- 通过 hcloud profile 或 AK/SK 模式使用有效的 Huawei Cloud 凭证
- 安全规则:
- 🚫 切勿在代码、对话或命令中暴露 AK/SK 值
- 🚫 切勿使用
echo $HUAWEI_AK或echo $HUAWEI_SK检查凭证 - ✅ hcloud 调用的凭证优先级为:显式工具参数 > 本地 hcloud profile > 环境变量
- ✅ AOM Prometheus 签名 HTTP 和 Kubernetes 证书配置无法使用加密的 hcloud profile 材料,因此优先使用显式工具参数,并将环境变量用作签名回退方案
- ✅ 云操作优先使用 IAM 用户,而非根账户
- ✅ 为敏感操作启用 MFA
配置方法:
hcloud configure list
export HUAWEI_AK=<your-ak>
export HUAWEI_SK=<your-sk>
export HUAWEI_REGION=cn-north-4
3. IAM 权限要求
| API 操作 | 权限 | 用途 |
|---|---|---|
cce:cluster:get | 获取集群 | 查看 CCE 集群详情 |
aom:instance:list | 列出 AOM 实例 | 查找用于指标的 AOM Prometheus 实例 |
aom:metricsData:get | 获取指标数据 | 查询 Pod/Node CPU/内存/磁盘指标 |
ces:metricsData:get | 获取 CES 指标 | 查询 ECS/ELB/EIP/NAT 云资源指标 |
ecs:cloudServers:list | 列出 ECS 服务器 | 关联 ECS 实例 ID |
elb:loadbalancers:list | 列出 ELB 实例 | 关联 ELB ID |
vpc:eips:list | 列出 EIP | 关联 EIP ID |
nat:natGateways:list | 列出 NAT 网关 | 关联 NAT 网关 ID |
权限失败处理:
- 当任何命令因 IAM 权限错误而失败时,显示所需的权限列表
- 指引用户在 IAM 控制台中创建自定义策略并授予授权
- 暂停执行,等待用户确认已授予权限
核心命令
所有命令均使用 Python 分发脚本:python3 scripts/huawei-cloud.py <action> <key=value>...
KooCLI 命令格式标准
不要要求用户直接运行原始 hcloud 命令。请使用分发器格式:
python3 scripts/huawei-cloud.py <tool-name> key=value key=value
分发器会将云服务查询转换为 KooCLI 调用。AOM Prometheus 范围查询使用签名 HTTPS 请求,因为该路径与 hcloud 不兼容。除非工具明确需要 Pod 标签、Ingress TLS Secrets 或 LoadBalancer Services,否则避免读取 Kubernetes 资源。对包含空格、>、<、|、JSON 或 PromQL 的值加引号;切勿打印或持久化 AK/SK、安全令牌、kubeconfig 文件或临时载荷;将 Kubernetes/AOM PromQL 限定在 cluster="<cluster_id>" 范围内。
1. CCE Pod 指标
# Pod TopN — cluster-wide CPU/memory ranking
python3 scripts/huawei-cloud.py huawei_get_cce_pod_metrics_topN \
region=cn-north-4 cluster_id=<cluster-id> \
namespace=default top_n=10 hours=1
# Pod TopN with label selector
python3 scripts/huawei-cloud.py huawei_get_cce_pod_metrics_topN \
region=cn-north-4 cluster_id=<cluster-id> \
namespace=default label_selector="app=nginx,version=v1" top_n=10 hours=1
# Single Pod time-series
python3 scripts/huawei-cloud.py huawei_get_cce_pod_metrics \
region=cn-north-4 cluster_id=<cluster-id> \
pod_name=my-app-xxx namespace=default hours=1
# Single Pod GPU and xGPU metrics
python3 scripts/huawei-cloud.py huawei_get_cce_pod_gpu_metrics \
region=cn-north-4 cluster_id=<cluster-id> \
pod_name=my-gpu-app-xxx namespace=default hours=1
2. CCE Node 指标
# Node TopN — cluster-wide CPU/memory/disk ranking
python3 scripts/huawei-cloud.py huawei_get_cce_node_metrics_topN \
region=cn-north-4 cluster_id=<cluster-id> \
top_n=10 hours=1
# Single Node time-series
python3 scripts/huawei-cloud.py huawei_get_cce_node_metrics \
region=cn-north-4 cluster_id=<cluster-id> \
node_ip=10.0.0.1 hours=1
# Node GPU and xGPU metrics
python3 scripts/huawei-cloud.py huawei_get_cce_node_gpu_metrics \
region=cn-north-4 cluster_id=<cluster-id> \
node_ip=10.0.0.1 hours=1
3. CCE CoreDNS 指标
# CoreDNS key metrics: QPS, error rate excluding NXDOMAIN, NXDOMAIN rate, P95 latency, replicas, CPU, and memory
python3 scripts/huawei-cloud.py huawei_get_cce_coredns_metrics \
region=cn-north-4 cluster_id=<cluster-id> \
namespace=kube-system pod_regex=".*coredns.*" hours=1
4. CCE nginx-ingress 指标
# nginx-ingress request processing and Ingress TLS certificate expiration
python3 scripts/huawei-cloud.py huawei_get_cce_nginx_ingress_metrics \
region=cn-north-4 cluster_id=<cluster-id> \
namespace=kube-system pod_regex=".*nginx.*ingress.*|.*ingress.*nginx.*" \
ingress_namespace=default cert_expire_warning_days=30 hours=1
5. CCE Autoscaler 指标
# Cluster Autoscaler and HPA metrics
python3 scripts/huawei-cloud.py huawei_get_cce_autoscaler_metrics \
region=cn-north-4 cluster_id=<cluster-id> \
namespace=kube-system pod_regex=".*cluster.*autoscaler.*|.*autoscaler.*" \
include_hpa=true hours=1
6. Kubernetes 控制平面指标
python3 scripts/huawei-cloud.py huawei_get_cce_apiserver_metrics \
region=cn-north-4 cluster_id=<cluster-id> hours=1
python3 scripts/huawei-cloud.py huawei_get_cce_etcd_metrics \
region=cn-north-4 cluster_id=<cluster-id> hours=1
python3 scripts/huawei-cloud.py huawei_get_cce_controller_manager_metrics \
region=cn-north-4 cluster_id=<cluster-id> namespace=kube-system hours=1
python3 scripts/huawei-cloud.py huawei_get_cce_scheduler_metrics \
region=cn-north-4 cluster_id=<cluster-id> namespace=kube-system hours=1
7. 云资源指标
# ECS instance metrics
python3 scripts/huawei-cloud.py huawei_get_ecs_metrics \
region=cn-north-4 instance_id=<instance-id>
# ELB metrics
python3 scripts/huawei-cloud.py huawei_get_elb_metrics \
region=cn-north-4 elb_id=<loadbalancer-id> hours=1
# EIP metrics
python3 scripts/huawei-cloud.py huawei_get_eip_metrics \
region=cn-north-4 eip_id=<eip-id> hours=1
# NAT Gateway metrics
python3 scripts/huawei-cloud.py huawei_get_nat_gateway_metrics \
region=cn-north-4 nat_gateway_id=<nat-gateway-id> hours=1
8. 集群监控汇总
# Aggregate all monitoring data with anomaly detection
python3 scripts/huawei-cloud.py huawei_cce_cluster_monitoring_aggregation \
region=cn-north-4 cluster_id=<cluster-id> \
start_time="2026-05-30 00:00:00" end_time="2026-05-30 23:59:59" \
namespace=default top_n=10
此工具汇总:Pod CPU/内存 TopN、Node CPU/内存/磁盘 TopN、ELB 指标(通过 kubectl 获取的 LoadBalancer Services 进行匹配)、NAT 网关指标、EIP 指标(带宽、丢包率),以及使用 80% 阈值进行的异常检测。
其中还包含 CoreDNS、nginx-ingress 和 autoscaler 汇总。当可以确认关联关系时,云资源会限定在当前集群范围内:ELB 通过 LoadBalancer Service IP/EIP 匹配,NAT 网关按集群 VPC 过滤,EIP 则限定为关联的 ELB/NAT/Service IP。
LoadBalancer Service 发现通过 kubectl 使用生成的 kubeconfig,并在外部访问可用时经由集群 EIP 进行。如果集群没有 EIP,则使用 kubectl cce 插件。如果这两种方式都不可用,则汇总会失败。
风险级别
此技能为只读技能,不会创建、更新、删除、重启、扩缩容或修改华为云或 Kubernetes 资源。
| 级别 | 含义 | 执行指南 |
|---|---|---|
| R3 | 无风险的只读查询或本地分析 | 可自动运行 |
| R2 | 低风险变更,例如创建监控配置,但不删除资源或增加服务容量/成本 | 当前工具未使用 |
| R1 | 有风险的操作,例如产生类似重启的影响、停用防护,或可能增加成本或降低可观测性的变更 | 当前工具未使用 |
| R0 | 关键操作,例如删除集群、应用或影响范围广的监控防护 | 当前工具未使用 |
| 工具 | 操作类型 | 风险级别 | 描述 |
|---|---|---|---|
huawei_get_cce_pod_metrics_topN | 查询 | R3 | 从 AOM Prometheus 读取 Pod CPU/内存/磁盘指标 TopN |
huawei_get_cce_pod_metrics | 查询 | R3 | 读取单个 Pod 的 CPU/内存/磁盘时间序列指标 |
huawei_get_cce_node_metrics_topN | 查询 | R3 | 从 AOM Prometheus 读取 Node CPU/内存/磁盘指标 TopN |
huawei_get_cce_node_metrics | 查询 | R3 | 读取单个 Node 的 CPU/内存/磁盘时间序列指标 |
huawei_get_cce_node_gpu_metrics | 查询 | R3 | 从 AOM Prometheus 读取单个 Node 的 GPU 和 xGPU 指标 |
huawei_get_cce_pod_gpu_metrics | 查询 | R3 | 从 AOM Prometheus 读取单个 Pod 的 GPU 和 xGPU 指标 |
huawei_get_cce_coredns_metrics | 查询 | R3 | 读取 CoreDNS QPS、不含 NXDOMAIN 的错误率、NXDOMAIN 速率、P95 延迟、副本数以及各 Pod 的 CPU/内存指标 |
huawei_get_cce_nginx_ingress_metrics | 查询 | R3 | 读取 nginx-ingress 请求处理指标和 Ingress TLS 证书到期状态;缺少请求维度指标时,QPS 会回退到 nginx 进程请求计数器 |
huawei_get_cce_autoscaler_metrics | 查询 | R3 | 读取 Cluster Autoscaler 扩缩容指标、HPA 副本状态以及 autoscaler Pod 的 CPU/内存指标 |
huawei_get_cce_apiserver_metrics | 查询 | R3 | 读取 kube-apiserver 的 QPS、错误率、延迟和进行中请求指标 |
huawei_get_cce_etcd_metrics | 查询 | R3 | 读取 etcd 的领导者、提案、数据库大小、磁盘延迟、CPU 和内存指标 |
huawei_get_cce_controller_manager_metrics | 查询 | R3 | 读取控制平面工作队列深度、添加次数、重试次数、队列延迟和工作持续时间指标 |
huawei_get_cce_scheduler_metrics | 查询 | R3 | 读取调度器尝试次数、待调度 Pod、调度延迟和队列指标 |
huawei_get_ecs_metrics | 查询 | R3 | 通过 hcloud/CES 读取 ECS 监控数据 |
huawei_get_elb_metrics | 查询 | R3 | 通过 hcloud/CES 读取 ELB 监控数据 |
huawei_get_eip_metrics | 查询 | R3 | 通过 hcloud/CES 读取 EIP 监控数据 |
huawei_get_nat_gateway_metrics | 查询 | R3 | 通过 hcloud/CES 读取 NAT Gateway 监控数据 |
huawei_cce_cluster_monitoring_aggregation | 查询 + 本地分析 | R3 | 汇总 Pod/Node/云资源指标并在本地分类异常 |
参数参考
通用参数
| 参数 | 必填/可选 | 描述 | 默认值 |
|---|---|---|---|
region | 必填 | 华为云区域 | HUAWEI_REGION |
cluster_id | 必填 | CCE 集群 ID | N/A |
namespace | 建议填写 | Kubernetes 命名空间 | default |
ak | 可选 | 显式指定 AK;对所有调用具有最高优先级 | 回退到 profile/env |
sk | 可选 | 显式指定 SK;对所有调用具有最高优先级 | 回退到 profile/env |
project_id | 可选 | 显式指定 Project ID;hcloud 优先使用 profile,其次回退到 env | 从 IAM/profile 自动获取 |
huawei_get_cce_pod_metrics_topN 参数
| Parameter | Required | Description | Default |
|---|---|---|---|
namespace | No | 命名空间筛选器 | all |
label_selector | No | 标签选择器(例如 app=web) | N/A |
top_n | No | 排名前列的项目数量 | 10 |
hours | No | 指标回溯时长(小时) | 1 |
node_ip | No | 筛选特定节点上的 Pod | N/A |
cpu_query | No | 自定义 CPU PromQL | Auto |
memory_query | No | 自定义内存 PromQL | Auto |
disk_query | No | 自定义磁盘 PromQL | Auto |
huawei_get_cce_pod_metrics 参数
| Parameter | Required | Description | Default |
|---|---|---|---|
pod_name | Yes | 目标 Pod 名称 | N/A |
namespace | No | 命名空间 | default |
hours | No | 指标回溯时长(小时) | 1 |
cpu_query | No | 自定义 CPU PromQL | Auto |
memory_query | No | 自定义内存 PromQL | Auto |
disk_query | No | 自定义磁盘 PromQL | Auto |
huawei_get_cce_pod_gpu_metrics 参数
| Parameter | Required | Description | Default |
|---|---|---|---|
pod_name | Yes | 目标 Pod 名称 | N/A |
namespace | No | 目标 Pod 命名空间 | all |
hours | No | 指标回溯时长(小时) | 1 |
gpu_selector | No | 自定义 GPU 指标标签选择器。如果 GPU 指标未使用 pod 或 namespace 标签,请使用此参数 | pod="<pod_name>",namespace="<namespace>" |
支持通过可选的自定义 PromQL 覆盖 GPU 利用率、内存、调度策略、xGPU 分配/使用情况以及 xGPU 健康指标。
huawei_get_cce_node_metrics_topN 参数
| Parameter | Required | Description | Default |
|---|---|---|---|
top_n | No | 排名前列的项目数量 | 10 |
hours | No | 指标回溯时长(小时) | 1 |
huawei_get_cce_node_metrics 参数
| Parameter | Required | Description | Default |
|---|---|---|---|
node_ip | Yes | 目标节点 IP | N/A |
hours | No | 指标回溯时长(小时) | 1 |
huawei_get_cce_node_gpu_metrics 参数
| Parameter | Required | Description | Default |
|---|---|---|---|
node_ip | Yes | 目标节点 IP 或节点名称 | N/A |
hours | No | 指标回溯时长(小时) | 1 |
gpu_selector | No | 自定义 GPU 指标标签选择器。如果 GPU 指标未使用 node 标签,请使用此参数 | `node=~"<node_ip> |
支持通过可选的自定义 PromQL 覆盖 GPU 利用率、内存、温度、功耗、调度策略、xGPU 分配/使用情况以及 xGPU 健康指标。
huawei_get_cce_coredns_metrics 参数
| Parameter | Required | Description | Default |
|---|---|---|---|
namespace | No | CoreDNS 命名空间 | kube-system |
pod_regex | No | 用于匹配 CoreDNS Pod 的正则表达式 | .*coredns.* |
hours | No | 指标回溯时长(小时) | 1 |
支持通过可选的自定义 PromQL 覆盖 QPS、错误率、NXDOMAIN 速率、P95 延迟、CPU、内存和副本数。
huawei_get_cce_nginx_ingress_metrics 参数
| 参数 | 必填 | 描述 | 默认值 |
|---|---|---|---|
namespace | 否 | nginx-ingress 控制器 Pod 的命名空间。使用空值可查询所有命名空间 | kube-system |
pod_regex | 否 | 用于匹配 nginx-ingress 控制器 Pod 的正则表达式 | `.*nginx.ingress. |
ingress_namespace | 否 | 用于 Ingress TLS 证书检查的命名空间筛选条件 | all |
hours | 否 | 指标回溯小时数 | 1 |
cert_expire_warning_days | 否 | 将证书标记为警告状态的到期前天数 | 30 |
check_certificates | 否 | 是否检查 Ingress TLS Secret 的到期状态 | true |
Ingress 控制器指标依赖对应的 AOM PodMonitor。必须在 ingress 控制器 PodMonitor 中显式允许 nginx_ingress_controller_requests 指标;否则,4xx/5xx QPS、成功率和延迟等请求维度指标可能为空,并且只有在可用时,QPS 才会使用 nginx_ingress_controller_nginx_process_requests_total 作为回退指标。
支持为 QPS、4xx/5xx、成功率、P95 延迟、活动连接数、CPU 和内存自定义 PromQL 覆盖值。
huawei_get_cce_autoscaler_metrics 参数
| 参数 | 必填 | 描述 | 默认值 |
|---|---|---|---|
namespace | 否 | Cluster Autoscaler Pod 的命名空间。使用空值可查询所有命名空间 | kube-system |
pod_regex | 否 | 用于匹配 autoscaler Pod 的正则表达式 | `.*cluster.autoscaler. |
hpa_namespace | 否 | 用于筛选 HPA 副本指标的命名空间 | all |
hours | 否 | 指标回溯小时数 | 1 |
include_hpa | 否 | 是否查询 HPA 当前副本数和期望副本数指标 | true |
支持为无法调度的 Pod、节点状态、扩缩容事件、错误、节点组、HPA 副本数、CPU 和内存自定义 PromQL 覆盖值。
Kubernetes 控制平面工具参数
适用于 huawei_get_cce_apiserver_metrics、huawei_get_cce_etcd_metrics、huawei_get_cce_controller_manager_metrics 和 huawei_get_cce_scheduler_metrics。
huawei_get_cce_apiserver_metrics 默认使用 cluster="<cluster_id>",component="apiserver",且不会添加命名空间或 Pod 标签。其默认 P95 延迟会排除 WATCH|CONNECT 请求,并且还会返回 latency_p95_by_verb_ms 以供诊断。仅当 Prometheus 标签不同时,才使用 metric_selector。
huawei_get_cce_etcd_metrics 默认使用 cluster="<cluster_id>",且不会添加命名空间或 Pod 标签。仅当 Prometheus 标签不同时,才使用 metric_selector。
huawei_get_cce_controller_manager_metrics 默认使用 cluster="<cluster_id>",因为 CCE AOM 工作队列指标可能不会提供稳定的 controller-manager Pod 标签。它会同时返回聚合工作队列指标和按队列 name 拆分的指标。
huawei_get_cce_scheduler_metrics 默认使用 cluster="<cluster_id>",并返回聚合指标以及按 result、profile/result 和 queue 拆分的指标。
Controller-manager、scheduler 和 etcd 指标依赖于为对应的 kube-controller-manager、kube-scheduler 和 etcd-server 端点启用 AOM ServiceMonitor 采集。如果未启用 ServiceMonitor,工具仍可成功运行,但返回的时间序列为空。
| 参数 | 必填 | 描述 | 默认值 |
|---|---|---|---|
namespace | 否 | 控制平面 Pod 的命名空间。使用空值可查询所有命名空间 | kube-system |
pod_regex | 否 | 用于匹配目标组件 Pod 的正则表达式 | 因组件而异 |
metric_selector | 否 | 自定义 apiserver/etcd/controller-manager/scheduler 指标标签选择器 | apiserver:cluster="<cluster_id>",component="apiserver";etcd/controller-manager/scheduler:cluster="<cluster_id>" |
hours | 否 | 指标回溯小时数 | 1 |
云资源工具参数
| 工具 | 必需 ID 参数 | 可选参数 |
|---|---|---|
huawei_get_ecs_metrics | instance_id | 无 |
huawei_get_elb_metrics | elb_id | hours |
huawei_get_eip_metrics | eip_id | hours |
huawei_get_nat_gateway_metrics | nat_gateway_id | hours |
huawei_cce_cluster_monitoring_aggregation 参数
| 参数 | 必需 | 描述 | 默认值 |
|---|---|---|---|
start_time | 是 | 开始时间(YYYY-MM-DD HH:MM:SS) | 不适用 |
end_time | 是 | 结束时间(YYYY-MM-DD HH:MM:SS) | 不适用 |
namespace | 否 | 命名空间筛选条件 | default |
top_n | 否 | 排名前列的项目数量 | 10 |
security_token | 否 | AK/SK 会话凭证的临时安全令牌 | 回退到环境变量 |
输出格式
完整的 JSON 响应结构请参阅输出架构。
主要输出字段:
success— 布尔值,查询完成时为 trueregion— 华为云区域cluster_id/cluster_name— CCE 集群标识aom_instance_id— 用于查询指标的 AOM Prometheus 实例metrics— 包含各资源 CPU、内存和磁盘数据(含状态分类)的字典certificate_check— 启用证书检查时,nginx-ingress Ingress TLS 证书到期时间摘要time_series— 历史数据点,包含timestamp、time、average、min、maxstatus— 阈值分类:critical(CPU >80%,内存/磁盘 >85%)、warning(CPU/内存 >50%,磁盘 >70%)、normal(低于警告阈值)、unknown(无数据)
工作流
- 按照文档说明的优先级解析区域、集群 ID 和凭证。
- 从 CCE 集群插件绑定中发现 AOM Prometheus 实例。
- 从 Pod/Node TopN 或聚合开始,然后深入查看某个 Pod、Node、组件或云资源。
- 使用
cluster="<cluster_id>"限定 PromQL 范围;仅添加命名空间、Pod 或资源筛选条件以减少干扰。 - 将状态分类作为调查线索,再将异常与事件或告警历史关联起来。
验证
- 运行
python3 scripts/huawei-cloud.py huawei_get_cce_pod_metrics_topN region=cn-north-4 cluster_id=<cluster-id> namespace=default top_n=5,验证 Pod 指标查询 - 运行
python3 scripts/huawei-cloud.py huawei_get_cce_node_metrics_topN region=cn-north-4 cluster_id=<cluster-id> top_n=5,验证 Node 指标查询 - 运行
python3 scripts/huawei-cloud.py huawei_get_ecs_metrics region=cn-north-4 instance_id=<instance-id>,验证 CES 指标连通性
最佳实践
- 先查看 Pod/Node TopN,再深入检查单个资源。
- 最近的分析将
hours设为较小值(1-4);历史回顾最多不超过 24 小时。 - 提供
namespace以减少 Pod 干扰,同时保留集群筛选条件。 - 优先关注
critical和warning资源。 - 使用
huawei_cce_cluster_monitoring_aggregation检查整个集群的运行状况。 - 将指标异常与
huawei-cloud-cce-kubernetes-event-analyzer关联起来。 - 不要在公开摘要中泄露生产环境的 Pod 名称、节点 IP 或集群 ID。
注意事项
- 此技能严格只读,绝不会修改资源或配置。
- 阈值是预定义基线;在据此做出运维决策前,应根据工作负载的 SLO 进行调整。
- 绝不能将 AK/SK 硬编码;常规 hcloud 调用请使用 hcloud 配置文件,签名 AOM/Kubernetes 调用请使用环境变量回退。
scripts/huawei-cloud.py是唯一面向用户的执行方式- AOM Prometheus 实例会自动发现;无需手动指定
aom_instance_id - 云资源指标(ECS/ELB/EIP/NAT)使用 CES(Cloud Eye Service),而非 AOM
- 不要仅根据指标分析做出自动扩缩容或修复决策。
故障排查
| 陷阱 | 症状 | 快速修复 |
|---|---|---|
缺少 cluster_id | 操作立即失败 | 从集群列表中获取 cluster_id 并提供 |
| 找不到 AOM Prometheus 实例 | 指标查询返回空结果 | 确保已为集群创建 AOM Prom 实例;检查 aom:instance:list 权限 |
| 时间范围较大且未筛选命名空间 | 响应缓慢,结果过多 | 将 hours 缩小至 1-4,并添加 namespace 筛选 |
| 找不到云资源 ID | ECS/ELB/EIP/NAT 查询返回错误 | 验证资源 ID 和 CES IAM 权限 |
| 自定义 PromQL 语法错误 | 自定义查询返回空结果 | 除非熟悉 AOM PromQL,否则使用默认 PromQL |
| 聚合查询缺少时间范围 | 缺少 start_time / end_time | 提供开始和结束时间 |
限制
- AOM Prometheus 数据要求集群 Prometheus 插件已与 AOM 集成。
- 必须启用控制平面 ServiceMonitor 和组件 PodMonitor,相关指标才会显示。
- 查询结果仅反映已采集的监控数据;缺少时间序列并不能证明工作负载运行正常。
- 此技能不会修复、扩缩容、重启、创建、更新或删除云资源或 Kubernetes 资源。
参考资料
| 文档 | 描述 |
|---|---|
| 工作流 | 指标查询顺序、阈值检测、后续步骤交接 |
| 风险规则 | 只读限制、数据脱敏、时间范围限制、阈值注意事项 |
| 输出架构 | 指标和状态输出的 JSON 响应架构 |
| CLI 安装指南 | hcloud、kubectl、kubectl-cce 和 dispatcher 设置 |
| IAM 策略 | 所需的只读 Huawei Cloud 和 Kubernetes 权限 |
| 验证方法 | 静态检查和冒烟测试 |
| 验收标准 | 功能、安全、文档和质量门槛 |