mcpField
A
alibabacloud-ecs-diagnose

alibabacloud-ecs-diagnose

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

alibabacloud-ecs-diagnose について

Alibaba Cloud ECS の運用担当者やエージェント向けのトラブルシューティングスキルです。クラウド側の状態、ネットワーク、セキュリティ、監視の確認に、Cloud Assistant による任意のゲスト OS 診断を組み合わせます。基本・詳細の二段階で、接続障害や性能低下、ディスク問題などを調べます。

主な機能

  1. 01基本・詳細の診断フローを実行
  2. 02ECSの状態とシステムイベントを確認
  3. 03VPC、セキュリティグループ、IP情報を確認
  4. 04Cloud Monitorのメトリクスを確認
  5. 05Cloud AssistantでゲストOSを診断
  6. 06任意のディスク性能診断に対応

活用シーン

  1. 01アクセスできないECSインスタンスを調査
  2. 02高遅延やネットワーク接続の問題を追跡
  3. 03CPU、メモリ、ディスク使用率の上昇を診断
  4. 04異常なインスタンス状態やシステムアラートを確認

インストール

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

$npx skills add https://github.com/aliyun/alibabacloud-aiops-skills --skill alibabacloud-ecs-diagnose

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

同梱ファイル

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

references/
acceptance-criteria.md
cli-installation-guide.md
ebs-diagnosis-events.md
ebs-disk-performance-diagnose-design.md
manifest.json
ram-policies.md
related-commands.md
remote-connection-diagnose-design.md
verification-method.md
scripts/
diagnose_ebs_disk.py
requirements.txt

詳細

ECS インスタンス診断スキル

Alibaba Cloud ECS インスタンスの体系的なトラブルシューティングを担当する、プロフェッショナルな運用診断アシスタントです。2 段階の診断ワークフロー(基本+詳細)に厳密に従ってください。

シナリオの説明

このスキルは、運用上の問題が発生している Alibaba Cloud ECS インスタンスを包括的に診断します。クラウドプラットフォーム側の監視と検査に加え、Cloud Assistant を介したオプションの詳細なゲスト OS 診断を組み合わせます。

アーキテクチャ:ECS + VPC + セキュリティグループ + Cloud Monitor(CMS)+ Cloud Assistant

ユースケース:

  • インスタンスに到達できない/アクセスできない
  • SSH 接続がタイムアウトする、または拒否される
  • インスタンスのパフォーマンス低下/遅延
  • ディスク容量の枯渇
  • ネットワーク接続の問題/高遅延
  • インスタンスのステータス異常(Stopped、Locked など)
  • CPU/メモリ使用率の高さ
  • システムイベントのアラート

前提条件

事前確認:Aliyun CLI >= 3.3.3 が必要です aliyun version を実行して、バージョンが 3.3.3 以上であることを確認してください。未インストール、またはバージョンが古い場合は、 references/cli-installation-guide.md の署名済みパッケージを使う方法を優先してください (公式の汎用バイナリをダウンロードして検証し、ユーザーディレクトリにインストールします。リモートスクリプトも sudo も使わず、システムレベルへの書き込みもありません。実行前に変更の全容を確認できます)。 1 行で実行するリモートインストーラー curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash は手動での代替手段に限ります。リモートスクリプトを bash にパイプし、sudo を介してシステムディレクトリに書き込む可能性があるため、内容を確認し、そのリスクを明示的に受け入れた場合を除き、実行しないでください。

テスト済み: Aliyun CLI 3.5.0 および 3.3.3、プラグインバージョン ecs/vpc/cms 0.9.x。 必要な CLI の最小バージョン:3.3.3。

事前確認:Alibaba Cloud の認証情報とリージョンが必要です(プラグインのセットアップ前に実施)

セキュリティルール:

  • AK/SK の値を読み取ったり、エコーしたり、表示したりすることは絶対にしないでください(例:echo $ALIBABA_CLOUD_ACCESS_KEY_ID は禁止です)
  • 会話中またはコマンドラインで、ユーザーに AK/SK を直接入力するよう求めることは絶対にしないでください
  • リテラルの認証情報を指定して aliyun configure set を使うことは絶対にしないでください
  • 認証情報のステータス確認には aliyun configure list のみを使用してください
aliyun configure list

出力を確認し、有効なプロファイル(AK、STS、または OAuth ID)と空ではないリージョンがあることを確認してください。

有効なプロファイルがない場合、またはリージョンが設定されていない場合は、ここで停止してください。

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

認証情報とリージョンを最初に確認する理由: リージョンが設定されていない場合、aliyun configure set --auto-plugin-install true は region can't be empty で失敗します。プラグインのセットアップは、認証情報とリージョンの確認を必ず通過してから行ってください。先に実施してはいけません。

事前確認:Aliyun CLI プラグインの更新(認証情報とリージョンの確認後に限る) [必須] aliyun configure set --auto-plugin-install true を実行して、自動プラグインインストールを有効にしてください。 [必須] aliyun plugin update を実行し、ローカルマシン上の既存プラグインを常に最新の状態にしてください。

事前確認:EBS プラグイン(ディスクパフォーマンス診断の場合のみ) EBS 診断 API は aliyun-cli-ebs プラグインによって提供されます。このプラグインは、上記の --auto-plugin-install/aliyun plugin update の事前確認ですでに対応済みです。 シナリオを開始する前に、aliyun ebs create-diagnose-report --help で確認してください。 CLI を主な実行方法として使用してください。Python SDK(scripts/requirements.txt)は、プラグインをインストールできない環境でのオプションの代替手段に限ります。詳しくは references/ebs-disk-performance-diagnose-design.md を参照してください。


可観測性(すべての aliyun コマンドで必ず従うこと)

このスキルを読み込んだら、次の手順を実行します。

  1. セッション全体で一度だけ、ランダムなセッション ID(32 文字の小文字の 16 進数文字列)を生成します。以下の User-Agent では、これを {session-id} として使用します。
  2. references/manifest.json からスキルのバージョン(最上位の version フィールド)を読み取ります。以下の User-Agent では、これを {skill-version} として使用します。

ルール:クラウド API を呼び出すすべての aliyun CLI コマンドに、--user-agent フラグを必ず含めてください。

--user-agent "AlibabaCloud-Agent-Skills/alibabacloud-ecs-diagnose/{session-id} skill-version/{skill-version}"

コンポーネントが 2 つある理由は? {session-id} はこの診断セッションを識別します。 skill-version/{skill-version} はスキルのバージョンを識別し、プラットフォームが API 呼び出しと実行中のスキルリリースを関連付けられるようにします。

ローカルユーティリティコマンド(例:configure、plugin、version)はこのフラグに対応していないため、対象外にする必要があります。


CLI コマンドの標準

[MUST] CLI コマンドを実行する前に、コマンド形式の標準について references/related-commands.md を読んでください。

主なルール:

  • コマンド名にはケバブケースを使用します:run-command(RunCommand ではありません)
  • リージョンパラメーターは製品ごとに異なります:
    • ecs/ebs/vpc コマンド:--biz-region-id <region>(API の RegionId)を使用します。--region-id は存在せず、unknown flag エラーになります。
    • cms コマンド(プラグイン 0.9.x):--biz-region-id フラグはありません。コマンド固有のフラグ(--namespace、--metric-name、--dimensions など)のみを渡します。エンドポイントを上書きする必要がある場合は、グローバルな --region <region> フラグを使用します。
    • グローバルな --region <region> フラグはサービスのエンドポイントを上書きします。対象リージョンがプロファイルで設定されたリージョンと異なる場合は、常に --region <target> と --biz-region-id <target> の両方を渡してください(ecs/ebs/vpc の場合)。--biz-region-id のみを渡すと、InvalidOperation.NotSupportedEndpoint エラーになり、存在するインスタンスが見つからないと誤って報告されることがあります。
    • unknown flag またはパラメーターエラーが発生した場合は、aliyun <product> <command> --help を実行し、そこに記載されているフラグをそのまま使用してください。推測した別の形式で再試行してはいけません。
  • インスタンス ID の形式はコマンドごとに異なります。--instance-id.1 のインデックス付き構文はプラグイン 0.9.x で削除されました(unknown flag エラーになります)。現在の形式は次のとおりです。
    • run-command、describe-instance-status、describe-instances-full-status、describe-cloud-assistant-status:--instance-id i-xxx i-yyy(スペース区切りの値のリスト)
    • describe-instances:--instance-ids '["i-xxx"]'(JSON 配列)
    • describe-instance-attribute、describe-instance-history-events:--instance-id i-xxx(単一)
  • run-command の --command-content にはプレーンテキストのコマンド文字列を渡します(プラグインが自動的にエンコードします)。base64 で事前にエンコードしてはいけません。二重にエンコードすると、ゲストが base64 文字列をそのまま実行し、出力が空のまま返されることがあります。
  • 常に --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-ecs-diagnose/{session-id} skill-version/{skill-version}" を含めてください。

[MUST] CLI User-Agent — aliyun CLI コマンドを実行するたびに、次を含める必要があります。 --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-ecs-diagnose/{session-id} skill-version/{skill-version}"

必要な権限

このスキルには、以下の RAM 権限が必要です。

  • ecs:DescribeInstances
  • ecs:DescribeInstanceAttribute
  • ecs:DescribeInstanceStatus
  • ecs:DescribeInstancesFullStatus
  • ecs:DescribeSecurityGroupAttribute
  • ecs:DescribeInstanceHistoryEvents
  • vpc:DescribeVpcs
  • vpc:DescribeEipAddresses
  • cms:QueryMetricLast(DescribeMetricLast API に対応する RAM アクションです。API 名と RAM アクションは異なります!)
  • cms:QueryMetricList(DescribeMetricList API に対応する RAM アクションです。時間範囲を指定したメトリクスクエリを使用する場合のみ必要です)
  • ecs:RunCommand(詳細診断に必要)
  • ecs:DescribeInvocationResults(詳細診断に必要)
  • ebs:DescribeLensMonitorDisks(任意 — ディスクパフォーマンス診断に必要)
  • ebs:CreateDiagnoseReport(任意 — ディスクパフォーマンス診断に必要)
  • ebs:DescribeDiagnoseReport(任意 — ディスクパフォーマンス診断に必要)

詳細なポリシー設定については、references/ram-policies.md を参照してください。

[MUST] 権限エラーへの対応 — 判断表: 実行中のいずれかの時点で、権限エラー(403 / Forbidden.RAM / NoPermission)が原因でコマンドまたは API 呼び出しに失敗した場合、まず失敗したチェックを分類し、該当する行に従ってください。2 種類の対応を混同しないでください。

失敗したチェック分類対応
DescribeInstances(フェーズ 0 のインスタンス特定)必須ワークフロー全体を停止します。references/ram-policies.md を読み、ユーザーが権限を申請できるよう案内します(必要に応じて ram-permission-diagnose スキルを利用できます)。再試行する前に、明示的な確認を待ってください。
該当するシナリオの必須チェックリストで使用するインスタンスのステータス/システムイベント/セキュリティグループ/VPC-EIP/CMS メトリクス必須上記と同様に、処理を停止して案内し、確認を待ちます。
必須チェックリスト外の補足証拠(例:追加の CMS メトリクス、接続に関係しないシナリオでの EIP 情報)任意の証拠エラーを記録し、レポートの該当セクションに「権限が拒否されたため未確認」と記載して、ワークフローを続行します。スキップしたチェックを「正常」として提示してはいけません。

いずれの場合も、診断レポートには実行できなかったチェックとその理由を必ず記載してください。権限の不足を黙って無視したり、正常な結果として報告したりしてはいけません。

パラメーターの確認

重要:パラメーターの確認 — コマンドまたは API 呼び出しを実行する前に、ユーザーが変更できるすべてのパラメーター(例:RegionId、インスタンス名、インスタンス ID、IP アドレスなど)をユーザーに確認する必要があります。ユーザーの明示的な承認なしに、値を推測したり、デフォルト値を使用したりしてはいけません。

パラメーター名必須/任意説明デフォルト値
InstanceId必須診断対象の ECS インスタンス IDなし
RegionId必須インスタンスが配置されているリージョンなし
InstanceName任意インスタンス名(InstanceId の代替)なし
PrivateIpAddress任意プライベート IP(InstanceId の代替)なし
PublicIpAddress任意パブリック IP(InstanceId の代替)なし

フェーズ 0:インスタンスの特定(シナリオ別の振り分けより前に必ず実行)

[必須] このフェーズは、すべてのシナリオで最初に実行します。 インスタンスの場所を正常に特定するまでは、シナリオベースのルーティング表に進まないでください(以下のディスクスコープのルールのみ例外です)。後続のワークフローはすべて、有効なインスタンスがすでに存在することを前提としています。

ステップ A — インスタンスを特定します。ecs:DescribeInstances を使用します。RegionId が不明な場合、または最初の検索結果が空の場合は、候補リージョンを順に調べます。 リージョンを調べる方法については、references/remote-connection-diagnose-design.md §1.2 を参照してください。

ステップ B — 結果を確認します。 TotalCount / Instances.Instance を確認します。

TotalCount > 0 の場合 → シナリオベースのルーティングに進みます。

TotalCount = 0(ECS インスタンスが見つからない)の場合 → 以下のディスクスコープの例外が適用されない限り、以下の空の検索結果に対するプロトコルを実行します。

[必須] 例外 — ディスクを対象とするディスクパフォーマンス/IO ボトルネック ユーザーが明示的な DiskId(d-xxx)を指定した場合、またはインスタンスを対象外とするディスクレベルの診断を明示的に指定した場合(例:「インスタンスはなくなったので、ディスクだけを診断してください」)、診断対象はインスタンスではなくディスクです。そのため、インスタンスの場所を特定できなくても、シナリオを中止してはいけません。

  • 明示的な DiskId がある場合 — 終了せずにディスクを確認します。

    aliyun ecs describe-disks --biz-region-id <region> --disk-ids '["d-xxx"]' \
      --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-ecs-diagnose/{session-id} skill-version/{skill-version}"
    
    • ディスクが見つかった場合 → シナリオベースのルーティングの ディスクパフォーマンス/IO ボトルネックの行に進みます。【Basic Information】にインスタンスを「未特定」と記録して、インスタンスレベルの確認をスキップします。確認済みのディスクに対して EBS ディスクパフォーマンス診断ワークフロー(CreateDiagnoseReport → DescribeDiagnoseReport)を実行し、見出しを厳密に 【Disk Performance Diagnostics】 とする独立したセクションを出力します。
    • ディスクが見つからない場合 → 以下の空の検索結果に対するプロトコルを適用します。メッセージテンプレートでは、インスタンス識別子の代わりにディスク識別子を使用します。
  • DiskId が指定されていない(ディスクスコープのリクエスト)場合 — インスタンスが見つからないことに対して、空の検索結果に対するプロトコルを適用してはいけません。【Basic Information】にインスタンスを「未特定」と記録し、インスタンスレベルの確認をスキップして、シナリオベースのルーティングの ディスクパフォーマンス/IO ボトルネックの行に進みます。この行では、そのリージョンのディスクを列挙し(describe-lens-monitor-disks、失敗した場合は describe-disks)、ユーザーが選択を許可している場合にそのうちの 1 つを選択します。

[必須] 空の検索結果に対するプロトコル

  1. 停止します。 診断ワークフローを終了します。ルーティングや診断の手順に進んではいけません。検索結果が空であることは、システムが正常であることを意味しません。処理を続けると、誤った陰性診断になります。
  2. [禁止] アカウント内の他のインスタンスを列挙または一覧表示してはいけません。 [禁止] ユーザーに「利用可能なインスタンスから 1 つ選ぶ」よう提案してはいけません。 [禁止] ユーザーが指定していないインスタンスに切り替えてはいけません。 理由:ユーザーはインスタンス A の診断を求めています。B を診断するのは誤った回答であり、実際の結論(A はハイブリッドクラウドにある/解放済みである/別のアカウントにある)を隠してしまいます。
  3. 以下の固定メッセージテンプレートをそのまま出力します(ID/リージョン/リージョン数を適宜調整してください)。
  4. 許可される追加の質問は、元の InstanceId / RegionId に誤記がないか再確認するよう求めるか、別の明示的で有効な標準 ECS インスタンスを提示するよう求めることだけです。

空の検索結果メッセージテンプレート:

[必須] 自動検証のための言語要件: このテンプレートは、会話の言語が英語でなくても、英語のまま一字一句変えずに出力してください。翻訳してはいけません。固定された英語のフレーズ not found と -> Diagnostic workflow terminated. は、自動評価で完全一致する形で照合されます。ユーザーの言語が英語でない場合は、テンプレートの後に短い説明をその言語で追加してもかまいませんが、上記の英語のテンプレート行は完全に同じ表記で含めてください。

Instance <InstanceId> not found (region <RegionId>, searched <N> regions). Possible causes:
1. Non-standard Alibaba Cloud ECS: hybrid-cloud / third-party managed (TRIPARTITE) servers
   are not covered by DescribeInstances and cannot be diagnosed by this skill;
2. InstanceId / RegionId was entered incorrectly;
3. The instance has been released or belongs to another account.
This skill only supports troubleshooting of standard Alibaba Cloud ECS instances. Please
re-check the identifier and region and retry, or provide a valid standard ECS instance ID.
-> Diagnostic workflow terminated.

シナリオに基づく振り分け

重要:診断を開始する前に、問題のシナリオを特定し、適切な診断方法に従ってください。

重大:診断コマンドを実行する前に、診断ワークフローのドキュメントを必ず読んでください。 これは任意ではありません。この手順を省略すると、診断結果が正しくなくなります。

ユーザーの問題の説明に基づいて、適切な診断方法に振り分けてください。

問題のシナリオトリガーキーワード診断方法
リモート接続の失敗/サービスにアクセスできない"cannot connect", "SSH timeout", "RDP failure", "connection refused", "port unreachable", "website inaccessible", "service unavailable", "HTTP/HTTPS not working", "workbench"STEP 1: references/remote-connection-diagnose-design.md を読みます。
STEP 2: その階層型診断モデル(レイヤー 1 → レイヤー 2 → レイヤー 3 → レイヤー 4)に厳密に従います。
[必須] セキュリティグループのインバウンドルールの確認(DescribeSecurityGroupAttribute)を最優先で行います(接続問題の約 70% に該当)。この手順は絶対に省略しないでください。
禁止: いずれかのレイヤーを省略したり、ゲスト OS の診断に直接進んだりしないでください。
パフォーマンスの問題"slow", "lag", "high CPU", "high memory", "unresponsive"STEP 0: 以下の CPU/メモリのパフォーマンス診断手順に従います。
STEP 1: references/verification-method.md を読みます(ステップ 6 のメトリクスと、ステップ 7~11 の詳細な診断)。
STEP 2: references/related-commands.md のコマンドを使用します(CMS/Cloud Assistant)。
ディスクの問題"disk full", "cannot write", "storage exhausted"STEP 0: 以下の ディスク容量不足/ディスク空き容量の診断手順に従います。
STEP 1: references/verification-method.md を読みます(ステップ 6 のディスクメトリクスと、ステップ 8 のディスク使用量)。
STEP 2: references/related-commands.md のコマンドを使用します。
ディスクのパフォーマンス/IO ボトルネック"disk IO slow", "IOPS insufficient", "IO latency", "throughput bottleneck", "IO hang", "disk performance"STEP 1: references/ebs-disk-performance-diagnose-design.md を読みます。
STEP 2: aliyun ebs CLI コマンドを使用して、5 ステップの EBS 診断ワークフローに従います。
前提条件: aliyun-cli-ebs プラグイン(上記の事前チェックを参照)
インスタンスのステータス異常"stopped", "locked", "expired", "system event"STEP 1: references/verification-method.md を読みます(ステップ 2 のステータスと、ステップ 3 のシステムイベント)。
STEP 2: references/related-commands.md のコマンドを使用します。

区別 — ディスクの問題とディスクのパフォーマンス: ユーザーがディスクが 「満杯/空き容量がない/書き込めない」と報告した場合は、ディスクの問題の行に振り分けます(容量の問題)。 「IO パフォーマンス/IO レイテンシー/IOPS またはスループットのスロットリング」と報告した場合は、 ディスクのパフォーマンス/IO ボトルネックの行に振り分けます(パフォーマンスの問題)。

シナリオに基づく振り分け:必須の実行チェックリスト

重大:以下のチェックリストは必須です。自動評価では、特定の API 呼び出しが行われたかを確認します。 該当するシナリオの手順を省略すると、診断の検証に失敗します。

シナリオに振り分けた後、該当するチェックリストのすべての手順を順番に実行してください。 手順を省略したり、必須の API を呼び出さずに要約したり、必須の読み取り専用チェックを完了する前に追加の確認を求めたりしないでください。

リモート接続の失敗/サービスにアクセスできない
  1. references/remote-connection-diagnose-design.md を読みます。
  2. aliyun ecs describe-instances — インスタンスを特定して検証します。
  3. aliyun ecs describe-security-group-attribute --direction ingress — インスタンスに関連付けられているすべての セキュリティグループを調べます。ユーザーの症状に関連するポートを確認します。
    • SSH がタイムアウトする/接続できない → ポート 22 が許可されていることを確認します。
    • HTTP/HTTPS/ウェブサイト/ポート 80/443 のサービス → ポート 80 と 443 が許可されていることを確認します。
    • その他のサービス → 対象ポートが許可されていることを確認します。
  4. aliyun ecs describe-instance-status — 実行時のステータスを確認します。
  5. aliyun ecs describe-instance-history-events — 現在または最近のシステムイベントを確認します。
  6. 必要に応じて、references/remote-connection-diagnose-design.md に記載されているレイヤー 2~4 の確認(ネットワーク到達性、Cloud Assistant など)を続けます。
  7. このスキルで必要とされる診断レポートのセクションを作成します。
パフォーマンスの問題(CPU/メモリ使用率が高い/動作が遅い/ラグ)
  1. aliyun ecs describe-instances — インスタンスを特定して検証します。
  2. aliyun cms describe-metric-last --metric-name CPUUtilization — CPU 使用率をクエリします(必須)。ユーザーがメモリについて言及している場合は、memory_usedutilization もクエリします。
  3. メトリックをしきい値と照らし合わせ、正常か高い状態かを示します。
  4. 使用率が高いことを確認した場合は、Cloud Assistant のコマンド(top -bn1、 ps aux --sort=-%cpu | head -20)を実行し、aliyun ecs describe-invocation-results で出力を取得します。
  5. このスキルで必要とされる診断レポートのセクションを作成します。
ディスクの問題(ディスク容量不足/ディスク使用率が高い/空き容量がない)
  1. aliyun ecs describe-instances — インスタンスを特定して検証します。
  2. aliyun cms describe-metric-last --metric-name diskusage_utilization — ディスク使用率をクエリします(必須)。
  3. aliyun ecs run-command で df -h と du -sh /var/* /tmp/* /home/* を実行します(コマンドの内容はプレーンテキストで指定してください。プラグインが自動的にエンコードします。事前にエンコードしないでください)。
  4. aliyun ecs describe-invocation-results — 出力を取得、デコードし、分析します。
  5. このスキルで必要とされる診断レポートのセクションを作成します。
ディスクのパフォーマンス/I/O ボトルネック
  1. references/ebs-disk-performance-diagnose-design.md と references/ebs-diagnosis-events.md を読みます。
  2. 対象のディスクを特定します。
    • DiskId(d-xxx)が明示されている場合は、aliyun ecs describe-disks --disk-ids '["d-xxx"]' で検証します。
    • DiskId が指定されていない場合は、aliyun ebs describe-lens-monitor-disks でディスクを一覧表示します(CloudLens が有効でない場合は aliyun ecs describe-disks に切り替えます)。ユーザーに選択してもらうか、ユーザーから明示的に許可を得ている場合は、最初の In_use ディスクを選択します。
  3. aliyun ebs create-diagnose-report --diagnose-type Performance --resource-type Disk --resource-id <disk-id> — 診断を開始します。
  4. ステータスが Running 以外になるまで、1 秒ごとに aliyun ebs describe-diagnose-report --report-ids <report-id> をポーリングします(クライアント側のタイムアウト:5 分)。
  5. ディスク ID、重大度、イベント、推奨事項を含む、【Disk Performance Diagnostics】 という見出しの独立したセクションを出力します。レポートのほかの部分が別の言語であっても、この見出しは変更してはいけません。
インスタンスのステータスが異常(停止/ロック/期限切れ/システムイベント/再起動)
  1. aliyun ecs describe-instances — インスタンスのステータスと属性を取得します。
  2. aliyun ecs describe-instance-history-events — 過去および現在のシステムイベントを確認します。特に再起動に関連するイベントを確認します。
  3. ユーザーが異常な再起動を報告しているものの、再起動イベントが見つからない場合は、次の Unicode エスケープテンプレートで表されるローカライズ済みの結論を出力します(インスタンス ID と理由を適宜変更します)。\u8bca\u65ad\u53d1\u73b0\u5b9e\u4f8b<InstanceId>\u5e76\u6ca1\u6709\u91cd\u542f\u8bb0\u5f55\uff0c<reasonable reasoning>。
  4. このスキルで必要とされる診断レポートのセクションを作成します。
ディスクフル/ディスク容量の診断手順

シナリオにディスク容量の問題(ディスクフル、ディスク使用率が高い、空き容量がない)が含まれる場合:

  1. CMS のディスク使用率メトリックを照会する — --metric-name diskusage_utilization --namespace acs_ecs_dashboard を指定して aliyun cms describe-metric-last を呼び出し、インスタンスのディスク使用率を確認します。
  2. Cloud Assistant コマンドを実行する — aliyun ecs run-command を呼び出して、インスタンス上で df -h(パーティションの使用状況を確認)および du -sh /var/* /tmp/* /home/*(容量の大きなディレクトリを特定)を実行します。
  3. コマンドの出力を取得する — aliyun ecs describe-invocation-results を呼び出して Base64 でエンコードされた出力を取得し、デコードして、ディスク容量を消費しているパーティション/ディレクトリを分析します。

これらの3つの手順は、ディスクフルの診断で必ず実行してください。Cloud Assistant コマンドを省略してはいけません。

検証対象: 自動評価では、 Cms.DescribeMetricLast(メトリック diskusage_utilization)、Ecs.RunCommand、 および Ecs.DescribeInvocationResults を呼び出したかどうかを確認します。実行ログに3つすべての呼び出しが記録されていることを確認してください。

CPU/メモリのパフォーマンス診断手順

シナリオに CPU またはメモリのパフォーマンス問題が含まれる場合:

  1. CMS の CPU/メモリメトリックを照会する — --metric-name CPUUtilization(および/または memory_usedutilization)と --namespace acs_ecs_dashboard を指定して aliyun cms describe-metric-last を呼び出し、現在の使用率を取得します。注:cms プラグイン 0.9.x には --biz-region-id フラグはありません — --namespace/--metric-name/--dimensions(およびエンドポイントの上書きが必要な場合はグローバルの --region <region>)のみを渡します。
  2. しきい値を評価する — CPU が 80%以上、またはメモリが 90%以上の場合は、使用率が高いことを示します。それ以外は正常範囲として報告します。
  3. Datapoints が空の場合は正常ではなく不明とする — CMS の応答が成功しても Datapoints が [] の場合は、「監視データがないため、CMS からは判定できません」と出力し、Cloud Assistant(top、free)を使用して GuestOS の情報を確認します。メトリックを正常と報告してはいけません。
  4. 使用率が高いことを確認した場合 — Cloud Assistant コマンド(top -bn1、ps aux --sort=-%cpu | head -20)を実行し、上位のプロセスを特定します。
  5. 結論を報告する — メトリック値と、それらが正常範囲内か高いかを明確に示します。

検証対象: 自動評価では、パフォーマンス関連のプロンプトに対して CPUUtilization(または memory_usedutilization)を指定した Cms.DescribeMetricLast の呼び出しを確認します。結論を出す前に、必ずこの API を呼び出してください。


診断レポートの出力形式

診断が完了したら、次のセクションを含むレポートを出力します。

================== ECS Diagnostic Report ==================
【Basic Information】Instance ID, Name, Status, OS, IPs, Time
【Basic Diagnostics】Instance Status, System Events, Security Group, Network, Metrics
【Deep Diagnostics】System Load, Disk, Network, Logs, Processes
【Disk Performance Diagnostics】
Required for Disk Performance / IO Bottleneck scenarios: Disk ID, Severity, Diagnosis Events, Recommendations
【Issue Summary】List all discovered issues
【Recommendations】Specific remediation steps
【Risk Warnings】Security risks requiring attention
===========================================================

成功の検証方法

各診断段階の詳細な検証手順については、references/verification-method.md を参照してください。

クリーンアップ/書き込み操作プロトコル

[必須]読み取り専用の診断と修復の実行を区別してください。

診断のみの場合は読み取り専用です:このスキルのチェック(Describe*、Query* API、uptime/df -h/ss -tlnp などの Cloud Assistant プローブ)は、課金対象のクラウドリソースを作成せず、クリーンアップも不要です。Cloud Assistant のプローブコマンドのみがインスタンスにアクセスしますが、永続的な状態は残しません。

修復はこの保証の対象外です。 references/remote-connection-diagnose-design.md(§4 ソリューションライブラリ)および references/related-commands.md(セキュリティグループの許可/取り消し、EIP の割り当て/バインド、インスタンスの起動/停止/再起動、パスワードのリセット)で参照されている修復フローは、書き込み操作です。書き込み操作を行う場合は、すべて次の手順に従ってください。

  1. 事前に確認する — 正確なコマンドとその適用範囲をユーザーに提示し、その操作について明示的な承認を得てください。複数の書き込み操作をまとめて一度の承認で実行してはいけません。
  2. 記録する — 変更を元に戻せるよう、コマンド、変更したリソース、正確なパラメーターを記録してください。
  3. ロールバックを用意する — 実行前にロールバックコマンドを提示し、対応する権限をユーザーが持っていることを確認してください(例:ecs:AuthorizeSecurityGroup には ecs:RevokeSecurityGroup が必要です。vpc:AllocateEipAddress には vpc:ReleaseEipAddress が必要です)。ロールバックできない修復は実行してはいけません。
  4. 確認してから報告する — 書き込み後、実際の効果を再確認し(リソースを再度 Describe する)、最終報告で変更内容を報告してください。

書き込み操作を実行したセッションの最後には、行ったすべての変更とロールバック状況(元に戻した/意図的に維持した)を一覧表示してください。書き込み操作を行わなかったセッションでは、「読み取り専用セッション — クリーンアップ不要」と報告してください。

ベストプラクティス

  1. まず基本診断を実施する — クラウドプラットフォームのチェックで、問題の大半(約 80%)をすばやく特定できます。
  2. 詳細診断には確認が必要です — システムコマンドを実行する前に、必ずユーザーの承認を得てください。

例外:ユーザーの最初のリクエストに、システムレベルの診断が必要な症状(例:「ディスクがいっぱい」「ディスク容量」「CPU 使用率が高い」「メモリ使用率が高い」「SSH タイムアウト」)が明記されている場合、そのリクエスト自体が詳細診断への暗黙の承認となります。この場合は、追加の確認を求めずに Cloud Assistant コマンドを実行してください。

  1. セキュリティグループを重点的に確認する — 接続の問題の約 70% は、セキュリティグループの設定ミスが原因です。
  2. Windows に適応する — Windows インスタンスでは、PowerShell コマンドと RunPowerShellScript タイプを使用してください。
  3. セキュリティに注意する — マイニングプロセスや異常な接続はすぐに報告し、AK/SK は決して公開しないでください。

参考リンク

ドキュメント説明
関連コマンドCLI コマンドの標準と全コマンドのリファレンス
RAM ポリシー必要な RAM 権限の一覧
検証方法各ステップの成功を検証する方法
CLI インストールガイドAliyun CLI のインストール手順
受け入れ基準スキルのテストに関する受け入れ基準
リモート接続診断の設計リモート接続およびサービスへのアクセスの問題に特化した診断設計
EBS ディスクパフォーマンス診断の設計ディスクパフォーマンスおよび IO ボトルネックの問題に特化した診断設計
EBS 診断イベントEBS 診断イベントコード、重大度レベル、修復に関するリファレンス

注意事項

  1. 読み取り専用 API を優先し、インスタンスの状態を変更する操作は避けてください。
  2. API エラーが発生した場合は、エラーをログに記録し、後続の診断を続行してください。
  3. 機密情報(AccessKey、パスワード)をレポートに記載してはいけません。
  4. このスキルは、ディスクパフォーマンス/IO ボトルネックのシナリオも含め、スナップショットやその他のクラウドリソースを自動作成することはありません。ユーザーが手動で実行するコマンドを推奨することのみ可能です。

コメント