alibabacloud-aes-ack-pod-performance-profiling
alibabacloud-aes-ack-pod-performance-profiling について
Alibaba Cloud ACK クラスターの Pod に対して SysOM の性能診断を行うエージェントスキルです。クラスターと Pod のパラメーターを確認してから診断を実行し、結果を取得します。
主な機能
- 01SysOM による Pod 性能診断
- 02ACK クラスター詳細の取得
- 03診断タスクの実行と結果確認
- 04必須パラメーターの確認
- 05認証情報と権限の確認
活用シーン
- 01ACK Pod の性能問題の調査
- 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.mdcli-installation-guide.mddiagnose-workflow.mdram-policies.mdrelated-commands.mdverification-method.mdscripts/create-cluster-vpc-endpoint-connection.pysetup-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 アイデンティティ)があることを確認してください。
有効なプロファイルがない場合は、ここで停止してください。
- Alibaba Cloud Console から認証情報を取得します
- このセッションの外部で認証情報を設定します(ターミナルで
aliyun configureを実行するか、シェルプロファイルで環境変数を設定します)aliyun configure listに有効なプロファイルが表示された後、戻って再実行します
RAM ポリシー
このスキルに必要な RAM 権限の全一覧については、references/ram-policies.md を参照してください。
[MUST] 権限エラーへの対応: 実行中のいずれかの時点で、コマンドまたは API 呼び出しが権限エラーにより失敗した場合は、次の手順に従ってください。
references/ram-policies.mdを読み、このスキルに必要な権限の全一覧を確認しますram-permission-diagnoseスキルを使用し、必要な権限をユーザーが申請できるよう案内します- 必要な権限が付与されたことをユーザーが確認するまで待機します
パラメーターの確認
重要:パラメーターの確認 — コマンドまたは API 呼び出しを実行する前に、 ユーザーがカスタマイズ可能なすべてのパラメーター(例:RegionId、クラスター ID、名前空間、Pod 名など)をユーザーに確認する必要があります。ユーザーの明示的な承認なしに、値を推測したりデフォルト値を使用したりしないでください。
Pod 診断に必要なユーザー入力
Pod の診断シナリオでは、ユーザーから次の入力が必要です。
- Pod 名(
pod)— 必須 - 名前空間(
namespace)— 必須 - クラスター 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つの記述です。各記述では、説明文の中でシステムコマンド名とリクエストフラグのトークンが同時に言及されないよう、意図的に記述しています)。
- 業務コマンドには必ずリクエストフラグを付けてください。 業務コマンドとは、
cs、sysom、stsの名前空間に属するコマンドです。必須のリクエストフラグの値はAlibabaCloud-Agent-Skills/alibabacloud-aes-ack-pod-performance-profilingです。 - システム/ツール系コマンドのセットは固定です。 次の5つのみで構成されます:
configure、plugin、help、version、upgrade。(この記述ではリクエストフラグのトークンに言及していません。これらのコマンドに適用されるルールについては、記述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 つでも省略すると、ワークフローは失敗します。
- ステップ 5 —
aliyun cs GET /clusters/<cluster_id>(cs.DescribeClusterDetail)- ステップ 6 —
aliyun sysom initial-sysom --check-only false --source aes-skills(sysom.InitialSysom)— 必須、省略不可- ステップ 7 —
.sysom-sdk-venv/bin/python scripts/create-cluster-vpc-endpoint-connection.py(SDK 経由の cs.CreateClusterVpcEndpointConnection)— 必須、省略不可- ステップ 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 — パラメーター確認(反転ゲート)
ユーザーに次の情報を確認してください。必須の値が提供されていない場合は、先に明示的に質問してください。
cluster_id— 必須namespace— 必須pod— 必須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 の失敗時には、次の操作を厳禁します:
- レスポンスに値が含まれていない場合に、リージョン値を合成、推測、またはハードコードすることは禁止です。
- 確認済みの
region_idなしでステップ 6/7/8 に進むことは禁止です。- テンプレート診断アーティファクト、偽のタスク ID、またはプレースホルダーの JSON 出力を作成することは禁止です。
- ユーザーから明示的な入力を受けずに、別の
cluster_idで暗黙に再試行することは禁止です。- フォールバックとして
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 csCLI を使用することは禁止されています。この 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 のみが含まれます)。したがって:
- 30 秒待ってから、
invoke-diagnosisを再試行します(再試行は合計最大 3 回)。 - 再試行が成功した場合は、成功応答から
task_idを抽出し、ポーリングに進みます。 - 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
⛔ ポーリング中の行動制約(必ず遵守すること):
診断結果を待つポーリング中は、次の行為が厳格に禁止されています(実行することも、ユーザーに提案することも禁止)。
- クラスターで kubectl コマンドを実行することは禁止です。
- ECS モニタリング、CloudMonitor、その他の API を呼び出すことは禁止です。
- 「代替の診断方法」を試みたり、新しい診断タスクを開始したりすることは禁止です。
- このスキルのコマンド表に記載されていないコマンドを呼び出すことは禁止です。
- 上記の行為を「代替案」や「フォールバック」としてユーザーに提案することは禁止です。
許可されている唯一の操作:
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 を参照してください。
ベストプラクティス
- 診断の前にクラスターの存在と標準 ACK クラスターであることを確認する:必ず
GET /clusters/<cluster_id>を呼び出してクラスターのステータスを確認し、リージョンを取得して、profile == "Default"であることを検証します。profileが"Default"でない場合(例:acs、Serverless)、直ちに停止します。サポート対象は標準 ACK クラスターのみです。 - デフォルトでリアルタイム診断モードを使用する:ユーザーが時間範囲を明示的に指定しない限り、デフォルトで
enable_diagnosis=trueにします。 - Description フィールドの形式制約:
descriptionフィールドは正規表現^[a-zA-Z0-9_-]*$(ASCII の英字、数字、_、-のみ)に一致する必要があります。スペースは_に置き換えます(例:"pod oom"→"pod_oom")。漢字、ピリオド、チルダ、その他の記号を使用するとSysom.InvalidParameterが発生します。 - target フィールドに設定する UID を取得する:
targetフィールドにはアカウント UID が必要です。必ずsts get-caller-identity(プラグインモード)を使って取得します。 - 認証情報のセキュリティ:会話中に AK/SK の値を表示したり、エコーしたりしないでください。
- 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 の補完として規定されています。)
- 6a. すべての業務用 CLI コマンド(
- 修復の提案には高リスクな操作が含まれる場合があります: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 がインストールされていない | ModuleNotFoundError | bash scripts/setup-sdk.sh を実行するようユーザーに促します |
参考リンク
| 参考資料 | 説明 |
|---|---|
| references/cli-installation-guide.md | Aliyun CLI のインストールおよび設定ガイド |
| references/ram-policies.md | RAM 権限ポリシーの一覧 |
| references/related-commands.md | CLI コマンドの全一覧 |
| references/verification-method.md | 各フェーズの成功確認方法 |
| references/diagnose-workflow.md | 詳細な診断ワークフロー(ステップ 4~8) |
| references/acceptance-criteria.md | スキルのテストに関する受け入れ基準(正しい/誤ったコマンドパターン) |