huawei-cloud-cce-metric-analyzer について
Huawei Cloud CCEの運用担当者向けの読み取り専用メトリクス分析スキルです。ワークロード、ノード、関連クラウドリソースを照会し、TopN表示、しきい値による状態分類、クラスター単位の異常集計を行います。
主な機能
- 01PodとNodeのCPU、メモリ、ディスクを分析
- 02GPU、CoreDNS、Ingressのメトリクスを照会
- 03オートスケーラーとコントロールプレーンを確認
- 04ECS、ELB、EIP、NATのメトリクスを照会
- 05クラスター監視を集約して異常を検出
- 06しきい値でメトリクス状態を分類
活用シーン
- 01使用率の高いPodやノードを特定
- 02GPU、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 の時系列メトリクス
- 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: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 の範囲クエリでは、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 | クエリ | 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 のリーダー、提案、DB サイズ、ディスクレイテンシ、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 Cloud リージョン | HUAWEI_REGION |
cluster_id | 必須 | CCE クラスター ID | N/A |
namespace | 推奨 | Kubernetes namespace | default |
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 | いいえ | Namespace | default |
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 の Namespace | all |
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 | はい | 対象ノードの IP | N/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 の Namespace | kube-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_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— 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(データなし)
ワークフロー
- ドキュメントに記載された優先順位に従って、リージョン、クラスター ID、認証情報を解決します。
- CCE クラスターのアドオンバインディングから AOM Prometheus インスタンスを検出します。
- Pod/Node TopN または集約から始め、その後 Pod、Node、コンポーネント、クラウドリソースを詳しく調査します。
- PromQL の対象を
cluster="<cluster_id>"に絞り、ノイズを減らす場合にのみ名前空間、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 時間以内にします。 - クラスターのフィルターを維持しながら Pod のノイズを減らすため、
namespaceを指定します。 - まず
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)は 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 に必要な読み取り専用権限 |
| 検証方法 | 静的チェックとスモークテスト |
| 受け入れ基準 | 機能、セキュリティ、ドキュメント、品質のゲート |