mcpField
H
huawei-cloud-cce-metric-analyzer

huawei-cloud-cce-metric-analyzer

github.com/huaweicloudクラウド・DevOps59165 回インストール2 日前に更新
リポジトリ

huawei-cloud-cce-metric-analyzer について

Huawei Cloud CCEの運用担当者向けの読み取り専用メトリクス分析スキルです。ワークロード、ノード、関連クラウドリソースを照会し、TopN表示、しきい値による状態分類、クラスター単位の異常集計を行います。

主な機能

  1. 01PodとNodeのCPU、メモリ、ディスクを分析
  2. 02GPU、CoreDNS、Ingressのメトリクスを照会
  3. 03オートスケーラーとコントロールプレーンを確認
  4. 04ECS、ELB、EIP、NATのメトリクスを照会
  5. 05クラスター監視を集約して異常を検出
  6. 06しきい値でメトリクス状態を分類

活用シーン

  1. 01使用率の高いPodやノードを特定
  2. 02GPU、DNS、Ingressの稼働状況を確認
  3. 03オートスケーラーやコントロールプレーンを調査
  4. 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.yaml
references/
acceptance-criteria.md
cli-installation-guide.md
iam-policies.md
kubectl-cce.md
output-schema.md
risk-rules.md
verification-method.md
workflow.md
scripts/
huawei-cloud.py
scripts/huawei_cloud/
__init__.py
aom.py
cce_cluster_monitoring.py
cce_metrics.py
cce.py
common.py
dispatcher.py
ecs.py
elb.py
kubectl_client.py
network.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 メトリクス → しきい値による分類 → 異常検知

実行方法:クラウドサービスのクエリは、ローカルの hcloud CLI を通じて実行します。例外は AOM Prometheus query_range 呼び出しのみで、必要な Prometheus の範囲クエリパスが hcloud に対応していないため、署名付き HTTPS リクエストを使用します。バンドルされたディスパッチャーの外部から、Huawei Cloud SDK、curl IAM フロー、openstack、または手書きのクラウド API を呼び出さないでください。

関連スキル:追加の診断や明示的に要求された修復には、Pod/Node 診断ツール、Kubernetes イベントアナライザー、容量/コスト関連スキル、自動修復ランナーを使用します。

機能:

  • Pod の CPU/メモリ TopN ランキング、および単一 Pod の時系列メトリクス
  • Node の CPU/メモリ/ディスク TopN ランキング、および単一 Node の時系列メトリクス
  • GPU 使用率、メモリ、温度、電力、スケジュールポリシー、xGPU 割り当て、使用状況、ヘルスを含む Node の GPU/xGPU メトリクス
  • CoreDNS の QPS、NXDOMAIN を除くエラー率、NXDOMAIN 率、P95 レイテンシ、レプリカ数、Pod ごとの CPU/メモリメトリクス
  • nginx-ingress の QPS、4xx/5xx 率、成功率、P95 レイテンシ、アクティブ接続数、Pod ごとの CPU/メモリ、Ingress TLS 証明書の有効期限ステータス
  • Autoscaler のスケジュール不能 Pod、Node の状態別数、スケールアップ/ダウンイベント、エラー、Node グループ、HPA の現在/目標レプリカ数、Pod ごとの CPU/メモリメトリクス
  • apiserver、etcd、controller-manager、scheduler の Kubernetes コントロールプレーンメトリクス
  • 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 以降
  • CCE/ECS/ELB/VPC/EIP/NAT/CES/IAM のクラウドサービスクエリに hcloud(KooCLI)7.2.2 以降
  • kubectl は、Pod の label_selector フィルタリング、Ingress TLS 証明書の確認、ELB/EIP の関連付けに必要な LoadBalancer Service の検出など、AOM/hcloud から導出できない Kubernetes リソースの読み取りに限り使用します。外部 EIP を使用しないクラスターでは、kubectl-cce-plugin/README.md にある kubectl cce プラグインが必要です
  • Prometheus 関連の監視データは、署名付き HTTPS リクエストを使用して AOM Prometheus からクエリします。クラスターで Prometheus アドオンが AOM と統合されていない場合、これらのツールは空のメトリクス系列を返すことがあります
  • controller-manager、scheduler、etcd のメトリクスには、kube-controller-manager、kube-scheduler、etcd-server の ServiceMonitor を AOM で個別に有効にする必要があります。有効になっていない場合、これらのツールは空のメトリクス系列を返すことがあります
  • Autoscaler、ingress-controller、NVIDIA GPU のメトリクスには、対応する autoscaler、ingress-controller、nvidia-gpu-device-plugin の PodMonitor を AOM で個別に有効にする必要があります。Ingress リクエストのメトリクスには、ingress-controller の PodMonitor で nginx_ingress_controller_requests を明示的に許可することも必要です
  • 初回使用前に環境チェックを実行します(「検証」セクションを参照)
  • references/kubectl-cce.md に従って kubectl-cce をインストールして使用します
2. 認証情報の設定
  • hcloud プロファイルまたは AK/SK モードで有効な Huawei Cloud 認証情報を使用します
  • セキュリティルール:
    • 🚫 AK/SK の値をコード、会話、コマンドに含めないでください
    • 🚫 認証情報の確認に echo $HUAWEI_AK や echo $HUAWEI_SK を使用しないでください
    • ✅ hcloud 呼び出しにおける認証情報の優先順位は、明示的なツールパラメーター > ローカルの hcloud プロファイル > 環境変数です
    • ✅ AOM Prometheus の署名付き HTTP と Kubernetes 証明書の設定では、暗号化された hcloud プロファイルの情報を使用できないため、明示的なツールパラメーターを優先し、署名のフォールバックとして環境変数を使用します
    • ✅ クラウド操作にはルートアカウントより 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:listAOM インスタンスの一覧表示メトリクス用の AOM Prometheus インスタンスを検出
aom:metricsData:getメトリクスデータの取得Pod/Node の CPU/メモリ/ディスクメトリクスを照会
ces:metricsData:getCES メトリクスの取得ECS/ELB/EIP/NAT クラウドリソースのメトリクスを照会
ecs:cloudServers:listECS サーバーの一覧表示ECS インスタンス ID を照合
elb:loadbalancers:listELB インスタンスの一覧表示ELB ID を照合
vpc:eips:listEIP の一覧表示EIP ID を照合
nat:natGateways:listNAT ゲートウェイの一覧表示NAT ゲートウェイ ID を照合

権限エラーへの対応:

  1. IAM 権限エラーでコマンドが失敗した場合は、必要な権限の一覧を表示します
  2. IAM コンソールでカスタムポリシーを作成し、権限を付与するようユーザーに案内します
  3. 実行を一時停止し、権限が付与されたことをユーザーが確認するまで待ちます

コアコマンド

すべてのコマンドで 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 の範囲クエリでは、hcloud と互換性のないため、署名付き HTTPS リクエストを使用します。ツールで明示的に必要とされない限り、Kubernetes リソースの読み取りは避けてください。対象となるのは Pod ラベル、Ingress TLS Secret、または LoadBalancer Service です。空白、>、<、|、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 Service を通じて照合)、NAT ゲートウェイのメトリクス、EIP メトリクス(帯域幅、パケット損失)、および 80% のしきい値を使用した異常検出を集約します。

CoreDNS、nginx-ingress、autoscaler の概要も含まれます。関連付けを確認できる場合、クラウドリソースは現在のクラスターに限定されます。ELB は LoadBalancer Service の IP/EIP を通じて照合され、NAT ゲートウェイはクラスターの VPC でフィルタリングされ、EIP は関連付けられた ELB/NAT/Service の IP に限定されます。

LoadBalancer Service の検出には、外部アクセスが可能な場合、生成した kubeconfig を使用し、クラスターの EIP 経由で kubectl を実行します。クラスターに EIP がない場合は、kubectl cce プラグインを使用します。どちらの方法も使用できない場合、集約は失敗します。

リスクレベル

このスキルは読み取り専用です。Huawei Cloud または Kubernetes のリソースを作成、更新、削除、再起動、スケーリング、変更することはありません。

レベル意味実行に関するガイダンス
R3リスクのない読み取り専用クエリまたはローカル分析自動実行できます
R2リソースを削除せずに監視設定を作成する、またはサービス容量やコストを増やすなど、リスクの低い変更現在のツールでは使用しません
R1再起動に類する影響、保護の無効化、またはコスト増加や可観測性の低下につながる可能性がある変更など、リスクのある操作現在のツールでは使用しません
R0クラスター、アプリケーション、または広範囲に影響する監視保護の削除など、重大な操作現在のツールでは使用しません
ツール操作タイプリスクレベル説明
huawei_get_cce_pod_metrics_topNクエリR3AOM Prometheus から Pod の CPU/メモリ/ディスクの TopN メトリクスを読み取ります
huawei_get_cce_pod_metricsクエリR3単一 Pod の CPU/メモリ/ディスクの時系列メトリクスを読み取ります
huawei_get_cce_node_metrics_topNクエリR3AOM Prometheus から Node の CPU/メモリ/ディスクの TopN メトリクスを読み取ります
huawei_get_cce_node_metricsクエリR3単一 Node の CPU/メモリ/ディスクの時系列メトリクスを読み取ります
huawei_get_cce_node_gpu_metricsクエリR3AOM Prometheus から単一 Node の GPU および xGPU メトリクスを読み取ります
huawei_get_cce_pod_gpu_metricsクエリR3AOM Prometheus から単一 Pod の GPU および xGPU メトリクスを読み取ります
huawei_get_cce_coredns_metricsクエリR3CoreDNS の QPS、NXDOMAIN を除くエラー率、NXDOMAIN 率、P95 レイテンシ、レプリカ数、および Pod ごとの CPU/メモリメトリクスを読み取ります
huawei_get_cce_nginx_ingress_metricsクエリR3nginx-ingress のリクエスト処理メトリクスと Ingress TLS 証明書の有効期限ステータスを読み取ります。リクエストディメンションのメトリクスがない場合、QPS は nginx プロセスのリクエストカウンターにフォールバックします
huawei_get_cce_autoscaler_metricsクエリR3Cluster Autoscaler のスケーリングメトリクス、HPA のレプリカ状態、および autoscaler Pod の CPU/メモリメトリクスを読み取ります
huawei_get_cce_apiserver_metricsクエリR3kube-apiserver の QPS、エラー率、レイテンシ、および処理中リクエストのメトリクスを読み取ります
huawei_get_cce_etcd_metricsクエリR3etcd のリーダー、提案、DB サイズ、ディスクレイテンシ、CPU、およびメモリのメトリクスを読み取ります
huawei_get_cce_controller_manager_metricsクエリR3コントロールプレーンのワークキュー深度、追加数、再試行数、キューレイテンシ、および処理時間のメトリクスを読み取ります
huawei_get_cce_scheduler_metricsクエリR3スケジューラーの試行回数、保留中の Pod、スケジューリングレイテンシ、およびキューのメトリクスを読み取ります
huawei_get_ecs_metricsクエリR3hcloud/CES 経由で ECS の監視データを読み取ります
huawei_get_elb_metricsクエリR3hcloud/CES 経由で ELB の監視データを読み取ります
huawei_get_eip_metricsクエリR3hcloud/CES 経由で EIP の監視データを読み取ります
huawei_get_nat_gateway_metricsクエリR3hcloud/CES 経由で NAT Gateway の監視データを読み取ります
huawei_cce_cluster_monitoring_aggregationクエリ + ローカル分析R3Pod/Node/クラウドリソースのメトリクスを集約し、ローカルで異常を分類します

パラメーターリファレンス

共通パラメーター
パラメーター必須/任意説明デフォルト
region必須Huawei Cloud リージョンHUAWEI_REGION
cluster_id必須CCE クラスター IDN/A
namespace推奨Kubernetes namespacedefault
ak任意明示的な AK。すべての呼び出しで最優先されますプロファイル/環境変数へのフォールバック
sk任意明示的な SK。すべての呼び出しで最優先されますプロファイル/環境変数へのフォールバック
project_id任意明示的な Project ID。hcloud は環境変数にフォールバックする前にプロファイルを使用しますIAM/プロファイルから自動取得
huawei_get_cce_pod_metrics_topN のパラメーター
パラメーター必須説明デフォルト
namespaceいいえNamespace フィルターall
label_selectorいいえラベルセレクター(例:app=web)N/A
top_nいいえ上位項目の数10
hoursいいえメトリクスを遡る時間数1
node_ipいいえ特定のノード上の Pod をフィルターN/A
cpu_queryいいえカスタム CPU PromQL自動
memory_queryいいえカスタムメモリ PromQL自動
disk_queryいいえカスタムディスク PromQL自動
huawei_get_cce_pod_metrics のパラメーター
パラメーター必須説明デフォルト
pod_nameはい対象の Pod 名N/A
namespaceいいえNamespacedefault
hoursいいえメトリクスを遡る時間数1
cpu_queryいいえカスタム CPU PromQL自動
memory_queryいいえカスタムメモリ PromQL自動
disk_queryいいえカスタムディスク PromQL自動
huawei_get_cce_pod_gpu_metrics のパラメーター
パラメーター必須説明デフォルト
pod_nameはい対象の Pod 名N/A
namespaceいいえ対象の Pod の Namespaceall
hoursいいえメトリクスを遡る時間数1
gpu_selectorいいえカスタム GPU メトリクスラベルセレクター。GPU メトリクスで pod または namespace ラベルが使用されていない場合に指定しますpod="<pod_name>",namespace="<namespace>"

GPU 使用率、メモリ、スケジュールポリシー、xGPU の割り当て/使用状況、および xGPU のヘルスメトリクスには、任意のカスタム PromQL オーバーライドを指定できます。

huawei_get_cce_node_metrics_topN のパラメーター
パラメーター必須説明デフォルト
top_nいいえ上位項目の数10
hoursいいえメトリクスを遡る時間数1
huawei_get_cce_node_metrics のパラメーター
パラメーター必須説明デフォルト
node_ipはい対象ノードの IPN/A
hoursいいえメトリクスを遡る時間数1
huawei_get_cce_node_gpu_metrics のパラメーター
パラメーター必須説明デフォルト
node_ipはい対象ノードの IP またはノード名N/A
hoursいいえメトリクスを遡る時間数1
gpu_selectorいいえカスタム GPU メトリクスラベルセレクター。GPU メトリクスで node ラベルが使用されていない場合に指定します`node=~"<node_ip>

GPU 使用率、メモリ、温度、電力、スケジュールポリシー、xGPU の割り当て/使用状況、および xGPU のヘルスメトリクスには、任意のカスタム PromQL オーバーライドを指定できます。

huawei_get_cce_coredns_metrics のパラメーター
パラメーター必須説明デフォルト
namespaceいいえCoreDNS の Namespacekube-system
pod_regexいいえCoreDNS Pod のマッチングに使用する正規表現.*coredns.*
hoursいいえメトリクスを遡る時間数1

QPS、エラー率、NXDOMAIN 率、P95 レイテンシ、CPU、メモリ、およびレプリカ数には、任意のカスタム PromQL オーバーライドを指定できます。

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 が必要です。nginx_ingress_controller_requests メトリクスを Ingress コントローラーの PodMonitor で明示的に許可する必要があります。許可されていない場合、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いいえオートスケーラー 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 のワークキューメトリクスでは、安定したコントローラーマネージャー Pod ラベルが公開されない場合があるためです。集約されたワークキューメトリクスと、キューごとの name の内訳の両方を返します。

huawei_get_cce_scheduler_metrics のデフォルトは cluster="<cluster_id>" で、集約メトリクスに加えて、result、profile/result、queue の内訳を返します。

コントローラーマネージャー、スケジューラー、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_metricsinstance_idなし
huawei_get_elb_metricselb_idhours
huawei_get_eip_metricseip_idhours
huawei_get_nat_gateway_metricsnat_gateway_idhours
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 — ブール値。クエリが完了した場合は true
  • region — Huawei Cloud のリージョン
  • cluster_id / cluster_name — CCE クラスターの識別情報
  • aom_instance_id — メトリクスクエリに使用される AOM Prometheus インスタンス
  • metrics — リソースごとの CPU/メモリ/ディスクデータを含む辞書。ステータス分類を含みます
  • certificate_check — 証明書チェックが有効な場合の、nginx-ingress Ingress TLS 証明書の有効期限の概要
  • time_series — timestamp、time、average、min、max を含む過去のデータポイント
  • status — しきい値による分類:critical(CPU が 80% 超、メモリ/ディスクが 85% 超)、warning(CPU/メモリが 50% 超、ディスクが 70% 超)、normal(warning 未満)、unknown(データなし)

ワークフロー

  1. ドキュメントに記載された優先順位に従って、リージョン、クラスター ID、認証情報を解決します。
  2. CCE クラスターのアドオンバインディングから AOM Prometheus インスタンスを検出します。
  3. Pod/Node TopN または集約から始め、その後 Pod、Node、コンポーネント、クラウドリソースを詳しく調査します。
  4. PromQL の対象を cluster="<cluster_id>" に絞り、ノイズを減らす場合にのみ名前空間、Pod、リソースのフィルターを追加します。
  5. ステータス分類を調査の手掛かりとして使用し、異常をイベントやアラーム履歴と照合します。

検証

  1. 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 メトリクスクエリを検証します
  2. python3 scripts/huawei-cloud.py huawei_get_cce_node_metrics_topN region=cn-north-4 cluster_id=<cluster-id> top_n=5 を実行して、Node メトリクスクエリを検証します
  3. python3 scripts/huawei-cloud.py huawei_get_ecs_metrics region=cn-north-4 instance_id=<instance-id> を実行して、CES メトリクスへの接続を検証します

ベストプラクティス

  1. 個々のリソースを詳しく調査する前に、Pod/Node TopN から始めます。
  2. 最近の分析では hours を小さく(1~4)し、過去のレビューは 24 時間以内にします。
  3. クラスターのフィルターを維持しながら Pod のノイズを減らすため、namespace を指定します。
  4. まず critical と warning のリソースを優先します。
  5. クラスター全体のヘルスチェックには huawei_cce_cluster_monitoring_aggregation を使用します。
  6. メトリクスの異常を huawei-cloud-cce-kubernetes-event-analyzer と照合します。
  7. 公開する要約には、本番環境の Pod 名、ノード IP、クラスター ID を記載しないでください。

注意事項

  • このスキルは読み取り専用であり、リソースや構成を変更することはありません。
  • しきい値は事前定義された基準値です。運用上の判断を行う前に、ワークロードの SLO に合わせて調整してください。
  • AK/SK をハードコードしてはいけません。通常の hcloud 呼び出しには hcloud プロファイルを使用し、署名付き AOM/Kubernetes 呼び出しには環境変数へのフォールバックを使用してください。
  • scripts/huawei-cloud.py がユーザー向けの唯一の実行方法です
  • AOM Prometheus インスタンスは自動検出されるため、aom_instance_id を手動で指定する必要はありません
  • クラウドリソースのメトリクス(ECS/ELB/EIP/NAT)は AOM ではなく CES(Cloud Eye Service)を使用します
  • メトリクス分析だけに基づいて、自動スケーリングや修復の判断を行わないでください。

トラブルシューティング

落とし穴症状すぐにできる対処法
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、ディスパッチャーのセットアップ
IAM ポリシーHuawei Cloud と Kubernetes に必要な読み取り専用権限
検証方法静的チェックとスモークテスト
受け入れ基準機能、セキュリティ、ドキュメント、品質のゲート

コメント