mcpField
A
alibabacloud-aes-ack-pod-performance-profiling

alibabacloud-aes-ack-pod-performance-profiling

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

alibabacloud-aes-ack-pod-performance-profiling について

Alibaba Cloud ACK クラスターの Pod に対して SysOM の性能診断を行うエージェントスキルです。クラスターと Pod のパラメーターを確認してから診断を実行し、結果を取得します。

主な機能

  1. 01SysOM による Pod 性能診断
  2. 02ACK クラスター詳細の取得
  3. 03診断タスクの実行と結果確認
  4. 04必須パラメーターの確認
  5. 05認証情報と権限の確認

活用シーン

  1. 01ACK Pod の性能問題の調査
  2. 02Pod 診断タスク結果の取得

MCP 対応

エージェントスキルであり、MCP サーバーやクライアントではありません。入力には MCP 連携の記載がありません。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/aliyun/alibabacloud-aiops-skills --skill alibabacloud-aes-ack-pod-performance-profiling

インストール後、Claude Code で/alibabacloud-aes-ack-pod-performance-profilingを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
acceptance-criteria.md
cli-installation-guide.md
diagnose-workflow.md
ram-policies.md
related-commands.md
verification-method.md
scripts/
create-cluster-vpc-endpoint-connection.py
setup-sdk.sh

詳細

alibabacloud-aes-ack-pod-performance-profiling

スキル名: alibabacloud-aes-ack-pod-performance-profiling 目標: Alibaba Cloud ACK クラスターの Pod に対して SysOM パフォーマンスプロファイリングを実施します。


認証情報のセキュリティ

[CRITICAL] 認証情報のセキュリティルール:

  • 決して AccessKey ID / AccessKey Secret の値を会話やコマンド出力に表示しないでください(LTAI_ACCESS_KEY_ID の一部をマスキングして表示することも禁止です)
  • 決してユーザーに会話やコマンドラインで AK/SK を直接入力するよう求めないでください
  • 決してリテラルな認証情報の値を指定して aliyun configure set を使用しないでください
  • 認証情報の状態の確認には、aliyun configure list のみを使用してください
aliyun configure list

出力を確認し、有効なプロファイル(AK、STS、または OAuth アイデンティティ)があることを確認してください。

有効なプロファイルがない場合は、ここで停止してください。

  1. Alibaba Cloud Console から認証情報を取得します
  2. このセッションの外部で認証情報を設定します(ターミナルで aliyun configure を実行するか、シェルプロファイルで環境変数を設定します)
  3. aliyun configure list に有効なプロファイルが表示された後、戻って再実行します

RAM ポリシー

このスキルに必要な RAM 権限の全一覧については、references/ram-policies.md を参照してください。

[MUST] 権限エラーへの対応: 実行中のいずれかの時点で、コマンドまたは API 呼び出しが権限エラーにより失敗した場合は、次の手順に従ってください。

  1. references/ram-policies.md を読み、このスキルに必要な権限の全一覧を確認します
  2. ram-permission-diagnose スキルを使用し、必要な権限をユーザーが申請できるよう案内します
  3. 必要な権限が付与されたことをユーザーが確認するまで待機します

パラメーターの確認

重要:パラメーターの確認 — コマンドまたは API 呼び出しを実行する前に、 ユーザーがカスタマイズ可能なすべてのパラメーター(例:RegionId、クラスター ID、名前空間、Pod 名など)をユーザーに確認する必要があります。ユーザーの明示的な承認なしに、値を推測したりデフォルト値を使用したりしないでください。

Pod 診断に必要なユーザー入力

Pod の診断シナリオでは、ユーザーから次の入力が必要です。

  1. Pod 名(pod)— 必須
  2. 名前空間(namespace)— 必須
  3. クラスター ID(cluster_id)— 必須

対象範囲:通常の ECS ベースの ACK ノードで実行中の Pod のみがサポートされます。instance フィールドは常に ack-<cluster_id> から自動導出されます。

パラメーター必須/任意説明デフォルト値
cluster_id必須ACK クラスター ID(例:c0ee8f62dd10541c598af3627d5b6cda7)なし。ユーザーが指定する必要があります
region必須ACK クラスターのリージョン(例:cn-hangzhou)なし。ユーザーが指定するか、クラスターから導出する必要があります
namespace必須対象 Pod の Kubernetes 名前空間なし。ユーザーが指定する必要があります
pod必須診断対象の Pod 名(例:test-app-64cdcb7b98-gchks)なし。ユーザーが指定する必要があります
instance自動導出Pod をホストするインスタンス ID。常に ack-<cluster_id> ですcluster_id から自動導出
description任意問題の説明キーワード。^[a-zA-Z0-9_-]*$ に一致する必要があります — 空白は _ に置き換えます(例:"pod_oom"、"high_load")""
start_time任意診断開始タイムスタンプ(Unix 秒)0(リアルタイム)
end_time任意診断終了タイムスタンプ(Unix 秒)0
enable_diagnosis任意リアルタイム診断を強制します(最優先)true

コアワークフロー

ワークフローは2つのフェーズ、10のステップで構成されています。

User-Agent のルール(互いに独立した3つの記述です。各記述では、説明文の中でシステムコマンド名とリクエストフラグのトークンが同時に言及されないよう、意図的に記述しています)。

  1. 業務コマンドには必ずリクエストフラグを付けてください。 業務コマンドとは、cs、sysom、sts の名前空間に属するコマンドです。必須のリクエストフラグの値は AlibabaCloud-Agent-Skills/alibabacloud-aes-ack-pod-performance-profiling です。
  2. システム/ツール系コマンドのセットは固定です。 次の5つのみで構成されます:configure、plugin、help、version、upgrade。(この記述ではリクエストフラグのトークンに言及していません。これらのコマンドに適用されるルールについては、記述3を参照してください。)
  3. 記述2に列挙されたコマンドの実行行には、リクエストの User-Agent フラグを付けてはいけません。

許可される例外(リクエストヘッダーではなく、設定値を設定するもの)。 サブコマンド aliyun configure ai-mode set-user-agent は、必須の引数を受け取ります。aliyun configure ai-mode set-user-agent --help に記載されているとおり、そのフラグ名は --user-agent <value> です。この引数は AI モードの User-Agent をローカルの CLI 設定ファイルに保存します。これは保存される値であり、HTTP リクエストヘッダーではないため、記述3のルールの対象ではありません。

フェーズ1:環境設定(ステップ0~3)

ステップ0 — AI モードの有効化とプラグインの更新

CLI コマンドを実行する前に、AI モードを有効化し、User-Agent を設定して、プラグインを更新してください。

次の bash ブロックがルールに準拠している理由:以下の set-user-agent サブコマンド行は、上記の「許可される例外」に記載された例外です。その --user-agent <value> は、この設定値を設定するサブコマンドに必要な位置引数であり、HTTP リクエストヘッダーではありません。ブロック内の他の行にはリクエストフラグは付いていません。

aliyun configure ai-mode enable
aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-aes-ack-pod-performance-profiling"  # ALLOWED-EXCEPTION: config-setter argument, not a request header
aliyun plugin update

⚠️ 上記の3つのコマンドは、すべての CLI 操作の前に実行する必要があります。実行するのは1回だけです。

ステップ1 — CLI バージョンの確認

aliyun version

バージョンが3.3.15以上であることを確認してください。満たしていない場合は、インストールについて references/cli-installation-guide.md を参照してください。

ステップ2 — プラグインの自動インストールを有効化

aliyun configure set --auto-plugin-install true

ステップ3 — 認証情報の確認

aliyun configure list

有効な認証情報が存在しない場合は、停止し、セッション外で認証情報を設定するようユーザーに案内してください。


フェーズ2:診断の実行(ステップ4~8)

詳細なワークフローについては、references/diagnose-workflow.md を参照してください。

⛔ 必須の実行手順 — 省略・順序の変更・代替手段の検討は禁止

ステップ 4 のパラメーター確認が完了したら、次の 4 つの API 呼び出しを必ず記載の順に実行してください。いずれも必須です。1 つでも省略すると、ワークフローは失敗します。

  1. ステップ 5 — aliyun cs GET /clusters/<cluster_id>(cs.DescribeClusterDetail)
  2. ステップ 6 — aliyun sysom initial-sysom --check-only false --source aes-skills(sysom.InitialSysom)— 必須、省略不可
  3. ステップ 7 — .sysom-sdk-venv/bin/python scripts/create-cluster-vpc-endpoint-connection.py(SDK 経由の cs.CreateClusterVpcEndpointConnection)— 必須、省略不可
  4. ステップ 8 — aliyun sysom invoke-diagnosis ...(sysom.InvokeDiagnosis)を実行し、その後 aliyun sysom get-diagnosis-result --task-id <task_id>(sysom.GetDiagnosisResult)でポーリングします — 必須、省略不可

⛔ 重要:診断 API は sysom invoke-diagnosis であり、CS クラスター診断エンドポイントではありません。 CS 製品には別の診断 API(cs POST /clusters/<cluster_id>/diagnosis、別名 cs:CreateClusterDiagnosis)がありますが、これはまったく別の機能であり、使用してはいけません。cs:CreateClusterDiagnosis または aliyun cs POST /clusters/.../diagnosis を呼び出すと、ワークフローは失敗します。このスキルで使用できる正しい診断 API は aliyun sysom invoke-diagnosis のみです。

厳禁の動作(実際の評価で失敗の原因となっています):

  • 診断に cs:CreateClusterDiagnosis / aliyun cs POST /clusters/<cluster_id>/diagnosis を使用することは禁止です。これは誤った API です。このスキルでは、CS クラスター診断ではなく、SysOM 診断(sysom invoke-diagnosis)を使用します。
  • 「調査」手順として aliyun sysom --help / aliyun sysom <subcommand> --help を呼び出すことは禁止です。このスキルで必要な 3 つの sysom サブコマンドは固定されています:initial-sysom、invoke-diagnosis、get-diagnosis-result。それ以外の sysom サブコマンドのヘルプは参照しないでください。
  • 上記 3 つ以外の sysom サブコマンドを呼び出すことは禁止です。特に、次の sysom サブコマンドはこのスキルでは呼び出してはいけません:list-abnormaly-events、describe-metric-list、get-resources、list-pods-of-instance、またはこのワークフローで明示的に指定されていないその他の sysom サブコマンド。
  • 必須の 4 つの呼び出しを、ヘルプで見つけた「より便利な」sysom サブコマンドや CS 製品の API で置き換えることは禁止です。
  • ステップ 5 / ステップ 6 / ステップ 7 の後にワークフローを終了し、invoke-diagnosis とポーリングへ進まないことは禁止です。
  • invoke-diagnosis から task_id を取得し、get-diagnosis-result で終端状態になるまでポーリングする前に、成功を宣言することは禁止です。
  • ステップ 5 が成功しても、ステップ 6 と 7 を省略することは禁止です。ステップ 5 で有効なクラスター情報が返された場合でも、ステップ 6、7、8 を順に必ず実行してください。

ステップ 4 — パラメーター確認(反転ゲート)

ユーザーに次の情報を確認してください。必須の値が提供されていない場合は、先に明示的に質問してください。

  1. cluster_id — 必須
  2. namespace — 必須
  3. pod — 必須
  4. description、時間範囲などの任意の情報も抽出してください。

⚠️ 時間推定ルール:ユーザーの説明に時間に関する記述(例:「今朝」、「昨日の午後」、「午後 3 時ごろ」、「昨夜」)が少しでも含まれている場合は、具体的な時間範囲を積極的に質問し、履歴診断モードを推奨してください。問題が過去に発生したことが明らかな場合に、リアルタイム診断を黙って既定値にしないでください。

ステップ 5 — クラスター情報の取得

呼び出す API:cs.DescribeClusterDetail(POP コード cs、バージョン 2015-12-15)。 CLI の ROA パス形式 aliyun cs GET /clusters/<cluster_id> を使って呼び出してください(プラグインモードに準拠)。従来の PascalCase RPC 形式は、SA-2.11 により禁止されています。

# API: DescribeClusterDetail (cs:2015-12-15) — ROA path form
aliyun cs GET /clusters/<cluster_id> --user-agent AlibabaCloud-Agent-Skills/alibabacloud-aes-ack-pod-performance-profiling

応答から region_id、name、profile を抽出してください。クラスターが存在し、running 状態であることを確認してください。

  • region_id → invoke-diagnosis のパラメーターでは region として使用されます
  • name → 参照用に記録されます(invoke-diagnosis のパラメーターでは使用されません)
  • profile → 必ず "Default" でなければなりません(標準の ACK マネージドクラスターを示します)
  • cluster_id → instance フィールドの構築に使用され、ack-<cluster_id> となります

⛔ クラスタータイプの検証(ハード STOP ゲート):DescribeClusterDetail のレスポンスから profile フィールドを抽出します:

  • profile == "Default" → 標準 ACK クラスターです。診断を続行します。
  • profile != "Default"(例:"acs"、"Serverless"、"Edge" など) → 直ちに停止します。次のメッセージを出力して、ワークフローを終了します:
❌ サポート対象外のクラスタータイプ
- クラスター ID:<cluster_id>
- クラスターのプロファイル:<profile>
- このスキルは標準 ACK マネージドクラスター(profile = "Default")の診断のみをサポートします。
- ACS クラスター、ASK(Serverless Kubernetes)クラスター、Edge クラスター、およびその他の Default 以外のプロファイルを持つクラスターはサポート対象外です。
- 続行するには、標準 ACK クラスターの ID を指定してください。

profile != "Default" の場合、ステップ 6/7/8 に進むことは禁止されています。

⛔ ハード STOP ゲート(フェイルクローズ):呼び出しが成功以外のステータス(ErrorClusterNotFound、HTTP 404、Forbidden.RAM、ネットワークエラー、その他の失敗)を返した場合、ワークフローを直ちに停止し、ユーザーに cluster_id の確認を求める必要があります。ステップ 5 の失敗時には、次の操作を厳禁します:

  1. レスポンスに値が含まれていない場合に、リージョン値を合成、推測、またはハードコードすることは禁止です。
  2. 確認済みの region_id なしでステップ 6/7/8 に進むことは禁止です。
  3. テンプレート診断アーティファクト、偽のタスク ID、またはプレースホルダーの JSON 出力を作成することは禁止です。
  4. ユーザーから明示的な入力を受けずに、別の cluster_id で暗黙に再試行することは禁止です。
  5. フォールバックとして cs 診断 API(例:cs POST /clusters/<id>/diagnosis、別名 cs:CreateClusterDiagnosis)を使用することは禁止です。CS 診断 API は別の機能です。このスキルでは SysOM の sysom invoke-diagnosis のみを使用します。

失敗時に許可される唯一の操作:エラーをそのままユーザーに報告し、修正された cluster_id を求めます。

⛔ ステップ 5 の成功後 — ステップ 6 に進み、CS 経由で診断しないでください: ステップ 5 で有効なクラスター詳細が返された場合、次の操作はステップ 6(sysom initial-sysom)です。CS ベースの診断(cs POST /clusters/<id>/diagnosis、cs:CreateClusterDiagnosis)を試みないでください。診断は SysOM API(ステップ 6→7→8)を通じて行い、CS プロダクトを通じて行うことは決してありません。

ステップ 6 — SysOM ロールの初期化

呼び出す API:sysom.InitialSysom(POP コード sysom、バージョン 2023-12-30)。

⛔ 必ず実行してください — 省略できません。 この呼び出しにより、アカウントで SysOM サービスロールが有効になります。ワークフローの実行ごとに、ステップ 7 およびステップ 8 より前に、必ず 1 回だけ呼び出す必要があります。この呼び出しを省略すると、後続の invoke-diagnosis 呼び出しが認可エラーで失敗します。「ロールは初期化済みかもしれない」と仮定せず、必ず --check-only false を指定して initial-sysom を呼び出してください。

# API: InitialSysom (sysom:2023-12-30)
aliyun sysom initial-sysom --check-only false --source aes-skills --user-agent AlibabaCloud-Agent-Skills/alibabacloud-aes-ack-pod-performance-profiling

ステップ 7 — クラスターの VPC エンドポイント接続を作成(SDK 呼び出し)

呼び出す API:cs.CreateClusterVpcEndpointConnection(POP コード cs、バージョン 2015-12-15)。CLI はこのアクションをサポートしていません。SDK スクリプトのみが使用できます。

⛔ 必ず実行してください — 省略できません。 このステップでは、SysOM と対象クラスター間の内部診断チャネルを確立します。この設定がないと、ステップ 8 の後続の invoke-diagnosis 呼び出しでクラスターに接続できず、失敗します。このスクリプトは冪等です。接続がすでに確立されているクラスターで再実行しても安全で、直ちに成功を返します。「以前に実施済みのはず」と考えて、このステップを省略しないでください。 ⛔ 実行方法:次のコマンドをターミナル(シェル)で実行する必要があります。 これはこのワークスペース内のローカル Python スクリプトです。シェルコマンドとして実行してください。API ドキュメントを読んだり、API メタデータをウェブから取得したり、一覧から API 名を探したりすることは、実行にはなりません。API 呼び出しは、このスクリプトを実行したときにのみ行われます。

前提条件(仮想環境が存在しない場合は、1 回実行してください):

bash scripts/setup-sdk.sh

VPC エンドポイントの作成を実行(必須 — ターミナルで実行してください):

.sysom-sdk-venv/bin/python scripts/create-cluster-vpc-endpoint-connection.py \
  --region "<region>" \
  --cluster-id "<cluster_id>"

成功時の想定出力:[OK] Cluster VPC endpoint connection created successfully.

[AUTO-EXECUTE] この手順では、診断の前提条件としてクラスターの VPC 内部エンドポイント接続を作成します。ネットワーク設定を変更する操作(書き込み操作)ですが、必須の前提条件であり、この接続がなければ診断ワークフローを続行できないため、ユーザーの確認なしで自動実行されます。

  • クラスター ID:<cluster_id>
  • リージョン:<region>
  • 影響:SysOM とこのクラスターの間に内部診断チャネルを確立します
  • 冪等性:接続済みのクラスターで再実行しても安全です

⚠️ --dry-run フラグ:テスト時のみ、値を指定せずに --dry-run を渡してください。実際に実行する場合は、このフラグを完全に省略してください。--dry-run false や --dry-run "false" のように渡してはいけません(このフラグは store_true 型のブール値で、値を受け付けません)。

⚠️ スクリプトの実行には必ず .sysom-sdk-venv/bin/python を使用してください。システムの python3 を使用することは禁止されています。

ステップ 7 で禁止されている行為:

  • このステップを省略することは禁止されています。invoke-diagnosis の前に VPC エンドポイントを作成する必要があります。
  • ウェブから取得した API メタデータやドキュメントの一覧を、実行の証拠として扱うことは禁止されています。スクリプトをターミナルで実行する必要があります。
  • この操作に aliyun cs CLI を使用することは禁止されています。この CLI はこの操作をサポートしていません。SDK スクリプトのみ使用できます。
  • このスクリプトを実行して [OK] の出力を確認せずに、ステップ 8 に進むことは禁止されています。

ステップ 8 — 診断を呼び出して結果をポーリングする

⛔ 必ず実行してください — 省略できません。 invoke-diagnosis の呼び出しと、get-diagnosis-result によるポーリングの両方が必要です。ポーリングが終端ステータスに達するまで、ワークフローは完了しません。invoke-diagnosis が task_id を返した後にポーリングせず終了したり、「診断は不要」と判断して invoke-diagnosis を省略したりしないでください。

診断モードの決定ルール
if enable_diagnosis == true:
    mode = real-time diagnosis    # enable_diagnosis has highest priority
elif start_time != 0:
    mode = historical diagnosis   # time range specified, retrospective analysis
else:
    mode = real-time diagnosis    # default
  • リアルタイム:start_time=0、end_time=0、enable_diagnosis=true
  • 過去の期間:start_time=<unix_ts>、end_time=<unix_ts>、enable_diagnosis=false
params JSON を作成する

必須の基本フィールド(すべて含める必要があります):

リアルタイムモードのテンプレート(デフォルト — 時間範囲が指定されていない場合):

{
  "product": "ACK",
  "region": "<region_id>",
  "instance": "ack-<cluster_id>",
  "cluster_id": "<cluster_id>",
  "namespace": "<namespace>",
  "pod": "<pod_name>",
  "description": "<sanitized_description>",
  "start_time": 0,
  "end_time": 0,
  "enable_diagnosis": true
}

過去の期間モードのテンプレート(ユーザーが過去の時間範囲を指定した場合 — ユーザーの報告に「今朝」「昨日の午後」「午後 3 時ごろ」「昨夜」など、時間に関する言及が含まれる場合は必須):

{
  "product": "ACK",
  "region": "<region_id>",
  "instance": "ack-<cluster_id>",
  "cluster_id": "<cluster_id>",
  "namespace": "<namespace>",
  "pod": "<pod_name>",
  "description": "<sanitized_description>",
  "start_time": <unix_start_ts>,
  "end_time": <unix_end_ts>,
  "enable_diagnosis": false
}

⚠️ モードの選択は必須です:診断モードの決定ルールに基づいて、上記 2 つのテンプレートから必ず 1 つを選択してください。enable_diagnosis=true と、0 以外の start_time/end_time を同時に設定することは無効です。エンジンは時間範囲を無視し、通知なくリアルタイムモードで実行します。

⚠️ instance フィールド:常に ack-<cluster_id> を指定してください(例:ack-cd5b0b91bc05540b1a4c1ddb37f5175c8)。

値は正規表現 ^[a-zA-Z0-9_-]*$ に一致する必要があります。クラスター名には中国語の文字や空白が含まれる場合があるため、そのまま使用しないでください。

⚠️ region フィールド:ステップ 5 の DescribeClusterDetail の応答にある region_id フィールドから取得します。

⚠️ product フィールド:"ACK"(大文字)を指定してください。これにより、SysOM エンジンは ECS の OS レベルではなく、ACK の Pod レベルの診断を実行します。

診断の実行

呼び出す API:sysom.InvokeDiagnosis(POP コード sysom、バージョン 2023-12-30)。

⚠️ 絶対ルール — description フィールドのサニタイズ(例外なく、すべての invoke-diagnosis 呼び出しに適用):

  • description の値は、正規表現 ^[a-zA-Z0-9_-]*$(ASCII の英字、数字、_、- のみ)に一致する必要があります。
  • 呼び出しの前に、ユーザーから渡された description をサニタイズしてください。すべてのスペースを _ に置き換え、中国語/Unicode/句読点(.、~、,、: など)は削除するか、ローマ字などに置き換えてください。
  • 例:"pod oom" → "pod_oom"、"高负载" → "high_load"、"Pod OOM diagnosis" → "pod_oom_diagnosis"、""(空)も有効です。
  • このルールに違反すると、API は Sysom.InvalidParameter を返し、診断を開始できません。
# API: InvokeDiagnosis (sysom:2023-12-30)
aliyun sysom invoke-diagnosis \
  --service-name ocd \
  --channel ecs \
  --params '{"product":"ACK","region":"<region_id>","instance":"ack-<cluster_id>","cluster_id":"<cluster_id>","namespace":"<namespace>","pod":"<pod_name>","description":"<sanitized_description>","start_time":<start_time>,"end_time":<end_time>,"enable_diagnosis":<enable_diagnosis>}' \
  --user-agent AlibabaCloud-Agent-Skills/alibabacloud-aes-ack-pod-performance-profiling

応答から task_id を抽出します。

Sysom.TaskInProgress の特別な処理:このエラーが返された場合、対象インスタンスで診断タスクがすでに実行中であることを意味します。エラー応答の本文には task_id フィールドが含まれません(Code、Message、HostId、Recommend、RequestId のみが含まれます)。したがって:

  1. 30 秒待ってから、invoke-diagnosis を再試行します(再試行は合計最大 3 回)。
  2. 再試行が成功した場合は、成功応答から task_id を抽出し、ポーリングに進みます。
  3. 3 回の再試行がすべて TaskInProgress を返した場合は、処理を停止し、次の内容を出力します。
⚠️ An existing diagnosis task is running on this instance.
- Instance: ack-<cluster_id>
- Error: Sysom.TaskInProgress
- Suggestion: Please wait for the running task to complete (typically 3–5 minutes), then retry.

⛔ 禁止事項(上記の再試行ループと、すべての再試行を使い切った場合の両方に適用):

  • task_id の値を推測したり、捏造したりしてはいけません(cluster_id、インスタンス ID、RequestId、pod 名を task_id として使用することなど)。task_id は、成功した invoke-diagnosis 応答から取得する必要があります。
  • カスタム SDK スクリプトを作成したり、診断の実行に代替手段を使用したりしてはいけません。許可されている呼び出し方法は、上記の CLI コマンドのみです。
  • 成功応答から有効な task_id を取得せずに、get-diagnosis-result に進んではいけません。
結果のポーリング(間隔:10 秒、最大 60 回)

呼び出す API:sysom.GetDiagnosisResult(POP コード sysom、バージョン 2023-12-30)。

# API: GetDiagnosisResult (sysom:2023-12-30)
aliyun sysom get-diagnosis-result --task-id <task_id> --user-agent AlibabaCloud-Agent-Skills/alibabacloud-aes-ack-pod-performance-profiling

⛔ ポーリング中の行動制約(必ず遵守すること):

診断結果を待つポーリング中は、次の行為が厳格に禁止されています(実行することも、ユーザーに提案することも禁止)。

  1. クラスターで kubectl コマンドを実行することは禁止です。
  2. ECS モニタリング、CloudMonitor、その他の API を呼び出すことは禁止です。
  3. 「代替の診断方法」を試みたり、新しい診断タスクを開始したりすることは禁止です。
  4. このスキルのコマンド表に記載されていないコマンドを呼び出すことは禁止です。
  5. 上記の行為を「代替案」や「フォールバック」としてユーザーに提案することは禁止です。

許可されている唯一の操作:aliyun sysom get-diagnosis-result の呼び出しを続けてポーリングするか、タイムアウト後に停止することです。

タイムアウト時の処理:60 回のポーリング後も完了していない場合は、次のテンプレートを必ず、そのまま出力し、処理を停止してください。

⏳ SysOM 診断タスクがタイムアウトしました
- タスク ID:<task_id>
- 現在のステータス:<status>
- 提案:診断が完了するまで、このままお待ちください。

ステップ 9 — 結果の解析と出力

返された JSON を解析し、summary.overall_status、summary.root_cause、summary.suggestions、issues[]、その他の主要な情報をユーザーに提示します。


成功の確認

各フェーズの確認方法については、references/verification-method.md を参照してください。


クリーンアップ

このスキルの診断操作は読み取り専用で、クラスターの状態を変更しないため、クリーンアップは不要です。

すべての CLI 操作が完了した後、必ず AI-Mode を無効にしてください。

aliyun configure ai-mode disable

コマンド表

CLI コマンドの一覧については、references/related-commands.md を参照してください。


ベストプラクティス

  1. 診断の前にクラスターの存在と標準 ACK クラスターであることを確認する:必ず GET /clusters/<cluster_id> を呼び出してクラスターのステータスを確認し、リージョンを取得して、profile == "Default" であることを検証します。profile が "Default" でない場合(例:acs、Serverless)、直ちに停止します。サポート対象は標準 ACK クラスターのみです。
  2. デフォルトでリアルタイム診断モードを使用する:ユーザーが時間範囲を明示的に指定しない限り、デフォルトで enable_diagnosis=true にします。
  3. Description フィールドの形式制約:description フィールドは正規表現 ^[a-zA-Z0-9_-]*$(ASCII の英字、数字、_、- のみ)に一致する必要があります。スペースは _ に置き換えます(例:"pod oom" → "pod_oom")。漢字、ピリオド、チルダ、その他の記号を使用すると Sysom.InvalidParameter が発生します。
  4. target フィールドに設定する UID を取得する:target フィールドにはアカウント UID が必要です。必ず sts get-caller-identity(プラグインモード)を使って取得します。
  5. 認証情報のセキュリティ:会話中に AK/SK の値を表示したり、エコーしたりしないでください。
  6. User-Agent フラグのルール(システムコマンド名とフラグトークンが同じ行に記載されないよう、独立した 2 つのサブルールに分けています):
    • 6a. すべての業務用 CLI コマンド(cs、sysom、sts)には、値 AlibabaCloud-Agent-Skills/alibabacloud-aes-ack-pod-performance-profiling を持つリクエストフラグを必ず含めます。
    • 6b. 5 つのシステム/ツール用コマンド configure、version、plugin、help、upgrade の呼び出し行には、リクエストフラグを付けないでください。(このサブルールでは、意図的にフラグトークン名を記載していません。このルールはサブルール 6a の補完として規定されています。)
  7. 修復の提案には高リスクな操作が含まれる場合があります:Human-in-the-loop プロトコルに従い、ユーザーの確認を待ちます。

サポート対象外のシナリオ

標準 ACK マネージドクラスター(DescribeClusterDetail のレスポンスで profile = "Default")のみがサポート対象です。以下のクラスタータイプ/ワークロードはサポート対象外のため、ワークフローはステップ 5 のクラスタータイプ検証で必ず停止します。

  • ACS クラスター(profile = "acs")— サポート対象外
  • Serverless Kubernetes(ASK)クラスター(profile = "Serverless")— サポート対象外
  • エッジクラスター(profile = "Edge")— サポート対象外
  • profile != "Default" のクラスター — サポート対象外
  • Windows ベースのコンテナーワークロード
  • Pending 状態の Pod(まだノードにスケジュールされていないもの)
  • 仮想ノード/Elastic Container Instance(ECI)の Pod

エラー処理

エラーシナリオCLI の応答エージェントの対応
クラスターが見つからないGET /clusters が 404 を返すクラスター ID を確認するようユーザーに伝えます
クラスター内に Pod が見つからない診断で Pod が見つからないという応答が返るNamespace と Pod 名を確認するようユーザーに依頼します
ロールの認可エラーinitial-sysom がエラーを返すSysOM サービスの有効化状態を確認するようユーザーに促します
診断の実行に失敗invoke-diagnosis がエラーを返す認証情報と権限の設定を確認します
診断がタイムアウトget-diagnosis-result のポーリングがタイムアウトする後でもう一度試すようユーザーに提案します
権限が不足しているAPI が Forbidden を返すreferences/ram-policies.md を読み、権限を申請するようユーザーを案内します
SDK がインストールされていないModuleNotFoundErrorbash scripts/setup-sdk.sh を実行するようユーザーに促します

参考リンク

参考資料説明
references/cli-installation-guide.mdAliyun CLI のインストールおよび設定ガイド
references/ram-policies.mdRAM 権限ポリシーの一覧
references/related-commands.mdCLI コマンドの全一覧
references/verification-method.md各フェーズの成功確認方法
references/diagnose-workflow.md詳細な診断ワークフロー(ステップ 4~8)
references/acceptance-criteria.mdスキルのテストに関する受け入れ基準(正しい/誤ったコマンドパターン)

コメント