Alibaba Cloud Container Service for Kubernetes (ACK) クラスターにデプロイされた Python アプリケーションのパフォーマンスを監視できます。これらのアプリケーションには、Django、Flask、FastAPI などのフレームワークで構築された Web アプリケーションや、LlamaIndex や Langchain で開発された人工知能 (AI) または大規模言語モデル (LLM) アプリケーションが含まれます。Application Real-Time Monitoring Service (ARMS) を使用するには、ack-onepilot コンポーネントをインストールし、Dockerfile を変更します。ARMS は、アプリケーションのトポロジー、トレース分析、API 呼び出し分析、異常検出、大規模モデルのインタラクションの詳細なトレースなど、アプリケーションパフォーマンス管理機能を提供します。
前提条件
名前空間が作成されていること。詳細については、「名前空間とリソースクォータの管理」をご参照ください。この例では、
arms-demoという名前の名前空間が使用されます。Python ランタイムがバージョン 3.8 以降であること。
ARMS は Python 3.8 以降と互換性があります。それより前のバージョンを使用すると、接続の問題が発生する可能性があります。
ARMS は Alibaba Cloud のアプリケーションパフォーマンス管理 (APM) サービスです。ARMS を使用したアプリケーション監視の詳細については、「Application Real-Time Monitoring Service とは」および「アプリケーション監視とは」をご参照ください。
ステップ 1: アプリケーション監視のために ack-onepilot コンポーネントをインストールする
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、管理するクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[アドオン] をクリックします。
[ログとモニタリング] セクションで [ack-onepilot] を見つけ、[インストール] をクリックします。表示されるダイアログボックスで、必要に応じてパラメーターを設定します。デフォルト値を使用することをお勧めします。その後、[OK] をクリックします。
説明ack-onepilot のバージョンが 3.2.4 以降であることを確認してください。デフォルトでは、ack-onepilot コンポーネントは 1,000 個の Pod をサポートします。この制限を超える 1,000 Pod ごとに、ack-onepilot の CPU リソースを 0.5 コア、メモリリソースを 512 MB 増やしてください。
ステップ 2: ARMS にリソースへのアクセスを権限付与する
addon.arms.tokenがない ACK クラスターにデプロイされたアプリケーションを監視するには、次の操作を実行して ACK クラスターに ARMS へのアクセスを権限付与します。addon.arms.tokenが既に存在する場合、追加の権限付与は必要ありません。説明ACK クラスターでは、
addon.arms.tokenにより、ARMS はパスワードなしの権限付与を自動的に実行できます。通常、ACK マネージドクラスター にはデフォルトでaddon.arms.tokenがあります。ただし、以前に作成された一部の ACK マネージドクラスター にはaddon.arms.tokenが含まれていない場合があります。クラスターに
addon.arms.tokenがあるかどうかを確認します。addon.arms.tokenが存在しない場合は、次の手順を実行して、クラスターが ARMS リソースにアクセスすることを手動で権限付与します。ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、ターゲットクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、クラスター情報 をクリックします。
[基本情報] タブをクリックします。[クラスターリソース] セクションで、[ワーカー RAM ロール] の右側にあるリンクをクリックします。
[権限] タブで、[権限を付与] をクリックします。
AliyunARMSFullAccess ポリシーを選択し、[OK] をクリックします。
Elastic Container Instance に接続されている ACK マネージドクラスター にデプロイされたアプリケーションを監視するには、RAM クイック権限付与ページに移動して権限付与を完了します。その後、ack-onepilot 用に作成された Pod を再起動します。
ステップ 3: ARMS Python エージェントを Dockerfile に統合する
Dockerfile を変更して、ARMS Python エージェントを Python アプリケーションに統合し、アプリケーションを起動します。
Python Package Index (PyPI) リポジトリからエージェントインストーラーをダウンロードします。
pip3 install aliyun-bootstrapaliyun-bootstrap を使用してエージェントをインストールします。
# Alibaba Cloud アカウントのリージョン ID。 ARMS_REGION_ID=xxx aliyun-bootstrap -a install説明特定のバージョンの Python エージェントをインストールするには、次のコマンドを実行します。
# ${version} を実際のバージョン番号に置き換えます。 aliyun-bootstrap -a install -v ${version}Python エージェントのすべてのリリースバージョンに関する詳細については、「Python エージェントのリリースノート」をご参照ください。
ARMS Python エージェントを使用してアプリケーションを起動します。
aliyun-instrument python app.pyイメージをビルドします。
次のコードは、Dockerfile の完全な例です。
ステップ 4: Python アプリケーションの ARMS アプリケーション監視を有効にする
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、管理するクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
[ステートレス] ページで、ターゲットアプリケーションの をクリックします。
YAML ファイルで、`spec.template.metadata` の下に次の
labelsを追加します。labels: aliyun.com/app-language: python # Python アプリケーションに必須です。これが Python アプリケーションであることを指定します。 armsPilotAutoEnable: 'on' armsPilotCreateAppName: "deployment-name" # ARMS でのアプリケーションの表示名。重要インストールした ack-onepilot コンポーネントのバージョンが 5.0.0 より後の場合、このステップでコンポーネントが Python エージェントパッケージを自動的にダウンロードして挿入します。これにより、完全に非侵入型のインストールが実現します。この機能を使用したくない場合、またはコンテナーに Python エージェントを手動でインストール済みの場合は、次のラベルを使用して Python の非侵入型挿入機能を無効にすることをお勧めします。
labels: aliyun.com/app-language: python # Python アプリケーションに必須です。これが Python アプリケーションであることを指定します。 armsPilotAutoEnable: 'on' armsPilotCreateAppName: "deployment-name" # ARMS でのアプリケーションの表示名。 armsAutoInstrumentationEnable: "off" # Python アプリケーションの非侵入型挿入機能を無効にします。
次のコードは、ステートレスアプリケーション (Deployment) を作成し、ARMS アプリケーション監視を有効にするための完全な YAML テンプレートです。
ステップ 5: 監視の詳細を表示する
約 1 分後、ARMS コンソールの ページで、Python アプリケーションとそのレポートされたデータを表示できます。

[アプリケーション名] をクリックして、ARMS コンソールのアプリケーション監視ページで監視の詳細を表示します。詳細については、「アプリケーション概要」をご参照ください。
(オプション) ステップ 6: リソースのリリース
ARMS を使用して Python アプリケーションを監視する必要がなくなった場合は、ARMS Python エージェントをアンインストールして監視を停止できます。詳細については、「Python エージェントのアンインストール」をご参照ください。
> [YAML の編集]