すべてのプロダクト
Search
ドキュメントセンター

Cloud Monitor:Live-Debug Agent スキルによる Python アプリケーションの診断

最終更新日:Aug 08, 2026

Live-Debug Agent 機能により、Application Real-Time Monitoring Service (ARMS) に接続された Python アプリケーションに対して、ビジネスコードの変更、新バージョンのリリース、プロセスの再起動を行うことなく、ランタイム診断を実行できます。診断の意図を自然言語で記述すると、AI エージェントが自動的にエージェントの作成、Simple Log Service (SLS) を通じた結果のクエリ、および Cloud Monitor (CMS) の ServiceTask API を用いたエージェントのクリーンアップをオーケストレーションします。

ターゲットメソッドが呼び出されると、動的ログ、メソッドスナップショット、一時的なメトリック、およびトレース情報を収集できます。

重要

AI エージェントは大規模言語モデルによって動作しており、対象モジュールやメソッドの識別にバイアスが生じたり、式が誤って生成されたりするリスクがあります。エージェントを作成する前に、エージェントが表示する構成および対象リソースを慎重に確認してください。本番環境で使用する前に、テスト環境でエージェントがパフォーマンスおよび安定性に与える影響を検証してください。診断が完了したら、残差が残らないよう速やかにエージェントを削除してください。

利用シーン

診断要件

推奨される機能

典型的な文

関数の呼び出しと入力パラメーターの妥当性確認

動的ログ (LOG)

関数 X の終了位置に動的ログを追加します。

パラメーター、戻り値、ローカル変数、および呼び出しスタックの表示

メソッドスナップショット (SNAPSHOT)

関数 X のスナップショットを取得し、キャプチャします。

例外がスローされた際に自動でシーンをキャプチャ

メソッドスナップショット(例外)

関数 X が例外をスローした際にスナップショットを取得します。

ビジネス量またはレイテンシの分布を一時的に観測

動的メトリック (METRIC)

関数 X にメトリックを追加します。

ビジネス属性を一時的にスパンに追加する、または既存のスパンにタグ付けする

SPAN_TAG

スパンの追加 / 現在のスパンへのタグ付け

サポートされる診断機能

機能

エージェントタイプ

タスクタイプ

説明

ダイナミックログ

LOG

live_debug_log_probe

テンプレートに基づく診断ログの出力 オブジェクトグラフや呼び出しスタックはキャプチャしません。

メソッドスナップショット

SNAPSHOT

live_debug_snapshot_probe

ARGS、RETURN、LOCALS、STACK などのデータをキャプチャします。

動的メトリック

METRIC

live_debug_metric_probe

COUNTER、GAUGE、HISTOGRAM、および SUMMARY のメトリクスタイプをサポートしています。

ダイナミックスパン

入力が「SPAN」とのみ記載されており、実際の英文原文が提供されていません。 そのため、翻訳および処理を実行できません。 ただし、指示に従い、中間説明やエラーメッセージを出力せず、**最終出力のみ**を返す必要があります。 原文が存在しない場合でも、形式に従って空の結果と終了マークを出力します。

live_debug_span_probe

関数レベルの OTel スパンの作成

タグ付け

タグ

live_debug_span_tag_probe

現在アクティブなスパンに属性を追加します。

ワークフロー

診断セッションのオーケストレーション 以下では、Skill が診断セッションをどのようにオーケストレーションするかについて説明します。

  1. 診断要件(観測対象の関数、キャプチャ内容、およびオプションのフィルター条件と持続時間)を記述します。

  2. エージェントは、コマンドラインインターフェイス (CLI) 環境をチェックし、.arms-info を読み取ります(ファイルが存在しない場合は確認を求めます)。

  3. エージェントはエージェント構成を生成し、タスクを作成して、taskId を返します。

  4. 関連するサービストラフィックをトリガーします。

  5. エージェントは、インストール状態およびコレクション結果を照会し、それらを解釈します。

  6. 診断が完了したことを確認すると、エージェントはエージェントを削除(またはすべてのエージェントをクリア)します。

前提条件

条件

説明

Alibaba Cloud アカウント (root ユーザー)

対象のワークスペースおよびアプリケーションに対して、Live-Debug (CMS ServiceTask) および Simple Log Service のクエリ権限を付与します。

ターゲットアプリケーション

Python アプリケーションが ARMS に接続され、Live-Debug が有効になっています。

Alibaba Cloud CLI

aliyun configure を通じてインストールおよび認証済みである必要があります。cms2(CMS CLI プラグイン aliyuncms2)および sls を呼び出せることを確認してください。インストール手順については、以下ステップ 1をご参照ください。

AI エージェント

QoderWork、Cursor、Claude Code、または Agent Skills をサポートする他のツールがインストールされていること。スキルのインストール手順については、以下に示す ステップ 2 をご参照ください。

アプリケーション接続情報

workspaceserviceIdregionId、および slsProject が準備されています(ステップ 3 をご参照ください)。

Alibaba Cloud CLI のインストールと設定

Live-Debug Skill は、aliyun CLI を通じて、CMS(aliyun cms2 apm service-task を使用してタスクの作成、リスト表示、削除を実行)および Simple Log Service(コレクション結果のクエリに使用)を呼び出します。事前に CLI のインストールと認証情報の構成を完了してください。

CLI のインストール

CLI がインストールされていない場合は、「Install Alibaba Cloud CLI」をご参照ください。ご利用のオペレーティングシステム(Linux、macOS、または Windows)に適したインストールメソッドを選択します。

インストール後、CLI が利用可能であることを確認します。

aliyun version

アクセス認証情報の設定

aliyun configure

プロンプトに従って、AccessKey ID、AccessKey Secret、およびデフォルトリージョンを入力します。RAM ユーザーを使用し、対象の Simple Log Service プロジェクトに対して CMS ServiceTask 権限および読み取り・書き込み・クエリ権限を付与してください。詳細については、「認証情報の設定と管理」をご参照ください。

説明

Live-Debug がクエリを実行する際には、明示的に regionId.arms-info から取得)を指定します。aliyun configure のデフォルトリージョンを唯一のソースとして依存しないでください。デフォルトリージョンが Simple Log Service プロジェクトと一致しない場合、ProjectNotExist エラーが発生する可能性があります。

CMS CLI (aliyuncms2) のインストールと可用性の確認

CMS ServiceTask の機能は、aliyuncms2 プラグインバイナリによって提供されます。aliyuncms2 を取得し、~/.aliyun/ ディレクトリ(または PATH)に配置します。その後、aliyun cms2 を通じて呼び出すことができ、認証情報は aliyun configure の構成から再利用されます。

# CMS ServiceTask 機能の確認
aliyun cms2 apm service-task --help

# SLS クエリの可用性確認
aliyun sls --help

cms2 が利用できない場合は、aliyuncms2 バイナリが ~/.aliyun/(または PATH)に存在し、実行権限が付与されていることを確認します。

ls -l ~/.aliyun/aliyuncms2
chmod +x ~/.aliyun/aliyuncms2
aliyun cms2 apm service-task --help

問題が解消しない場合は、Alibaba Cloud CLI をアップグレードして、再度お試しください。

aliyun upgrade -y

Live-Debug エージェントスキルのインストール

  1. Live-Debug Agent スキルを取得し、alibabacloud-livedebug を通じてワンクリックでご利用の AI エージェントにインストールします。

  2. AI ツールの指示に従い、QoderWork、Cursor、Claude Code またはその他の環境に Skill をインストールします。

  3. インストール後、AI アシスタントを再起動するか、会話によってスキルがロードされていることを確認します(例:「Live-Debug スキルはロードされていますか?」と尋ねます)。

以下のセクションでは、${LIVE_DEBUG_SKILL_ROOT} はスキルのインストール ルートディレクトリを表します。補助スクリプトは ${LIVE_DEBUG_SKILL_ROOT}/scripts/ に配置されています。

アプリケーション接続情報の準備

診断対象のプロジェクトのルートディレクトリに、Agent が自動的に読み取るための .arms-infokey=value

workspace=default-cms-xxxxxxxxxxxxxxxxxx-cn-hangzhou
serviceId=ggxw4lnjuz@f2fd3a6265a254a052afb
regionId=cn-hangzhou
targetIp=*
slsProject=proj-xtrace-xxxxxxxxxxxxxxxxxxxxxx-cn-hangzhou

パラメーター

必須

説明

workspace

はい

ARMS ワークスペース ID。

serviceId

はい

アプリケーションまたはサービス ID。

regionId

はい

アクセスリージョン(例:cn-hangzhou)。

slsProject

はい

Live-Debug 結果を保存する Simple Log Service プロジェクト。

targetIp

No

ターゲットインスタンスの IP アドレス。デフォルト値:*(すべてのインスタンス)。

自然言語による診断の開始

プロジェクトのコードを Qoder などの AI コーディングツールで開き、ご利用のオンラインアプリケーションに対応するブランチに切り替えてから、AI コーディングツール上で自然言語を使用して診断を開始することを推奨します。診断要件を記述する際は、以下の情報を含めてください(いずれかが不足している場合、エージェントが確認します)。

情報

必須

対象位置

はい

OrderService.create_order in app.service.order、または特定のファイルの N 行目。

観測タイミング

推奨

エントリ、終了時、例外発生時、または特定の行(デフォルトは通常、終了時)。

観測内容

はい

入力パラメーター、戻り値、レイテンシー、ローカル変数、または呼び出しスタック。

フィルター条件

いいえ

amount > 10000 の場合のみ。

期間または回数

いいえ

30 分間、または 50 回キャプチャ後に停止。

タスクが作成されると、エージェントから taskId が返されます。リファレンス構成 の内容と照合し、対象モジュール、メソッド、location、テンプレート、または capture フィールドが正しいことを確認してから、サービストラフィックをトリガーします。

トラフィックのトリガー、結果の検証、およびクリーンアップ

  1. 構成の確認:エージェントが送信する taskConfig が、ターゲットの場所およびコレクション内容の点でリファレンス構成と一致していることを確認します。

  2. サービストラフィックのトリガー:ターゲットのコードパスに到達するインターフェイスに対して、1 つ以上のリクエストを送信します。

  3. クエリ結果:エージェントに次の指示を出します。

    直前のタスク ID のキャプチャ結果を表示し、プローブがインストールされたかどうかと、何がキャプチャされたかを教えてください。
    • タスクステータス:エージェントが正常にインストールされたかどうか、ファネルメトリック、その他のステータス情報。

    • キャプチャ結果:ログやスナップショットなど、実際に収集されたコンテンツです。

  4. クリーンアップ(必ずこのステップを実行してください):

    前のプローブを削除します。
    現在のサービスにアタッチされているすべての Live-Debug エージェントをクリアしてください。
    現在のサービスにまだアタッチされている Live-Debug エージェントを表示してください。

参照構成

次のリファレンス構成を使用して、エージェントが生成する taskConfig を検証します。各サブセクションは、「サポートされている診断機能」テーブル内のエージェントタイプに対応しています。

動的ログ (LOG)

例文:

/alibabacloud-livedebug スキルを使用して、app.service.order 内の OrderService.create_order の終了位置に動的ログを追加し、order_id、amount、戻り値、レイテンシを出力します。30 分間保持します。

参照構成:taskType = live_debug_log_probe

{
  "probeType": "LOG",
  "language": "python",
  "target": {
    "typeName": "app.service.order",
    "methodName": "OrderService.create_order",
    "location": "exit",
    "instanceIds": ["*"]
  },
  "action": {
    "type": "LOG",
    "template": "create_order id={order_id} amount={amount} ret={@return} cost={@duration}ms"
  },
  "ttl": "30m",
  "captureCount": 100
}

条件付きの行レベル

app/service/order.py の 42 行目にログを追加します。amount >= 1000 の場合にのみ、注文 ID と金額を出力します。

参照構成:taskType = live_debug_log_probe

{
  "probeType": "LOG",
  "language": "python",
  "target": {
    "sourceFile": "app/service/order.py",
    "location": "line:42",
    "instanceIds": ["*"]
  },
  "trigger": {
    "condition": "amount >= 1000"
  },
  "action": {
    "type": "LOG",
    "template": "big order id={order_id} amount={amount}"
  },
  "ttl": "30m"
}

メソッドスナップショット (SNAPSHOT)

例文:

/alibabacloud-livedebug スキルを使用して、OrderService.create_order の終了位置でスナップショットを取得します。入力パラメーター、ローカル変数、戻り値、呼び出しスタックをキャプチャします。最大 20 回キャプチャします。

参照構成:taskType = live_debug_snapshot_probe

{
  "probeType": "SNAPSHOT",
  "language": "python",
  "target": {
    "typeName": "app.service.order",
    "methodName": "OrderService.create_order",
    "location": "exit",
    "instanceIds": ["*"]
  },
  "action": {
    "type": "SNAPSHOT",
    "capture": ["ARGS", "LOCALS", "RETURN", "STACK"],
    "captureConfig": {
      "maxDepth": 3,
      "maxCollectionSize": 100,
      "maxStringLength": 1024
    }
  },
  "ttl": "30m",
  "captureCount": 20
}

カスタムフィールドによる条件付きフィルタリング

create_order の終了位置でスナップショットを取得します。戻り値が空であるか、金額が 10000 を超える場合にのみトリガーします。order_id、amount * count、self.user_id、および戻り値に焦点を当てます。

参照構成:taskType = live_debug_snapshot_probe

{
  "probeType": "SNAPSHOT",
  "language": "python",
  "target": {
    "typeName": "app.service.order",
    "methodName": "OrderService.create_order",
    "location": "exit",
    "instanceIds": ["*"]
  },
  "trigger": {
    "condition": "@return is None or amount > 10000"
  },
  "action": {
    "type": "SNAPSHOT",
    "capture": ["ARGS"],
    "captureExpressions": [
      "order_id",
      "amount * count",
      "self.user_id",
      "@return"
    ]
  },
  "ttl": "30m",
  "captureCount": 50
}

例外キャプチャ:

PaymentService.process_payment が例外をスローした際にスナップショットをキャプチャします。入力パラメーター、例外情報、呼び出しスタックを含めます。2 時間保持します。

参照構成:taskType = live_debug_snapshot_probe

{
  "probeType": "SNAPSHOT",
  "language": "python",
  "target": {
    "typeName": "app.service.payment",
    "methodName": "PaymentService.process_payment",
    "location": "exception",
    "instanceIds": ["*"]
  },
  "action": {
    "type": "SNAPSHOT",
    "capture": ["ARGS", "EXCEPTION", "STACK", "LOCALS"]
  },
  "ttl": "2h",
  "captureCount": 100
}

動的メトリック (METRIC)

例文:

/alibabacloud-livedebug スキルを使用して、create_order に金額のヒストグラムメトリックを追加します。ユーザーが VIP かどうかを示すタグを含めます。1 時間保持します。

参照構成:taskType = live_debug_metric_probe

{
  "probeType": "METRIC",
  "language": "python",
  "target": {
    "typeName": "app.service.order",
    "methodName": "OrderService.create_order",
    "location": "exit",
    "instanceIds": ["*"]
  },
  "action": {
    "type": "METRIC",
    "metricName": "livedebug.order.amount",
    "metricType": "HISTOGRAM",
    "valueExpression": "amount",
    "tags": {
      "is_vip": "str(user_id == 'vip')"
    }
  },
  "ttl": "1h"
}

ダイナミックスパン (SPAN)

例文:

/alibabacloud-livedebug スキルを使用して、OrderService.create_order に一時的に dyn.create_order という名前のスパンを追加します。注文 ID と金額をスパン属性として含めます。

参照構成:taskType = live_debug_span_probe

{
  "probeType": "SPAN",
  "language": "python",
  "target": {
    "typeName": "app.service.order",
    "methodName": "OrderService.create_order",
    "location": "enter",
    "instanceIds": ["*"]
  },
  "action": {
    "type": "SPAN",
    "spanName": "dyn.create_order",
    "spanTags": {
      "order.id": "str(order_id)",
      "order.amount": "str(amount)"
    }
  },
  "ttl": "1h"
}

タグ付け (SPAN_TAG)

例文:

create_order の終了位置で、/alibabacloud-livedebug スキルを使用して現在のスパンに order.id および order.result (戻り値を使用) をタグ付けします。新しいスパンは作成しません。

参照構成:taskType = live_debug_span_tag_probe

{
  "probeType": "SPAN_TAG",
  "language": "python",
  "target": {
    "typeName": "app.service.order",
    "methodName": "OrderService.create_order",
    "location": "exit",
    "instanceIds": ["*"]
  },
  "action": {
    "type": "SPAN_TAG",
    "tags": [
      {"key": "order.id", "value": "str(order_id)"},
      {"key": "order.result", "value": "str(@return)"}
    ]
  },
  "ttl": "1h"
}

ステップ 5:トラフィックの発生、結果の検証、およびリソースのクリーンアップ

  1. 構成の確認:エージェントが送信した taskConfig が、対象の場所およびキャプチャ対象コンテンツに関するリファレンス構成と一致することを確認します。

  2. トリガートラフィック:対象のコードパスを実行する API に 1 つ以上のリクエストを送信します。

  3. クエリ結果:エージェントにクエリを実行し、次の結果を取得します。

    直近のタスク ID のキャプチャ結果を表示し、プローブがインストールされたかどうか、および何がキャプチャされたかを教えてください。
    • タスクステータス:このステータスは、プローブが正常にインストールされたかどうかを示し、ファネルメトリックやその他の詳細情報を提供します。

    • キャプチャ結果:これには、ログやスナップショットなど、キャプチャされたコンテンツが含まれます。

  4. クリーンアップ(必須):

    直前のプローブを削除してください。
    現在のサービス内のすべての Live-Debug プローブを削除してください。
    現在のサービスでまだアクティブな Live-Debug プローブを表示してください。

ユースケース クイックリファレンス

診断の必要性

言い換えると

対応する taskType

関数呼び出しの迅速な確認

関数 X の終了位置に動的ログを追加し、出力します。

live_debug_log_probe

パラメーター、戻り値、またはスタックの確認

関数 X のスナップショットを取得し、収集します。

live_debug_snapshot_probe

例外発生時のみコンテキストをキャプチャ

関数 X が例外をスローした際にスナップショットを取得します。

live_debug_snapshot_probe

特定の行付近の変数を表示

ファイル X の N 行目にログを追加するか、スナップショットを取得します。

live_debug_log_probe / live_debug_snapshot_probe

一時メトリック

関数 X にメトリックをアタッチします。

live_debug_metric_probe

アドホックバックフィルとタグ付け

関数 X にスパンを追加するか、現在のスパンに ... タグを追加します。

live_debug_span_probe / live_debug_span_tag_probe

結果の表示

タスク ID が taskId=... のクエリ結果の取得と解釈

Log Service (SLS) のクエリ このトピックでは、Log Service (SLS) でのログクエリ方法について説明します。

クリーンアップ

「このエージェントを削除」または「すべてのエージェントを削除」

— (Delete)

よくある質問

エージェントから、`cms2` コマンドまたは `aliyun` コマンドが利用できないとのレポートがありました。

原因: Alibaba Cloud CLI がインストールされていない、バージョンが古すぎる、または aliyuncms2 プラグインのバイナリが準備されていません。

ソリューション:

aliyun version
aliyun upgrade -y
ls -l ~/.aliyun/aliyuncms2   # CMS CLI プラグインバイナリが存在し、実行可能であることを確認
aliyun cms2 apm service-task --help
aliyun sls --help

aliyun configure を実行して、AccessKey ペアを設定してください。

タスクは正常に作成されましたが、キャプチャ結果が表示されません。

トラブルシューティング 以下の順序でトラブルシューティングを実施します。

  1. エージェントに タスクステータス を確認させ、エージェントが正常にインストールされたかどうかを確認してください。

  2. typeName および methodName がランタイムモジュール名と __qualname__ と一致することを確認します。__main__ がメインモジュールとなるべきかどうかをチェックします。

  3. ターゲット関数に到達するリクエストをトリガーしたことを確認してください。フィルター条件が厳しすぎないかを確認します。

  4. regionIdslsProject のリージョンと一致していることを確認します。

  5. クエリのタイムウィンドウを増やして、再度お試しください。

エージェントに「データがキャプチャされませんでした。ステータスとターゲットの場所が正しいかどうかを確認してください。」と指示することもできます。

SLS が ProjectNotExist をレポートする

原因: クエリに使用されたリージョンが、Simple Log Service プロジェクトのリージョンと一致していません。

ソリューション:正しい regionId.arms-info に設定し、エージェントが LIVE_DEBUG_REGION_ID をエクスポートしていることを確認してください。CLI のデフォルトリージョンにのみ依存しないでください。

エージェントのクリーンアップ確認方法

現在のサービスにまだアタッチされている Live-Debug エージェントを表示してください。存在する場合は、すべて削除してください。

Python アプリケーションによるスレッド、メモリ、または逆コンパイルの診断は可能ですか。

いいえ。これらは Java/JVM アプリケーションでのみサポートされるコマンド機能です。Python アプリケーションの場合は、代わりにログ、スナップショット、メトリック、またはスパン診断をご利用ください。

関連ドキュメント