Python アプリケーション用の ARMS エージェントを手動でインストールし、アプリケーションを SAE にデプロイすると、ARMS を使用してアプリケーションを監視できます。ARMS を使用すると、アプリケーションのトポロジー、呼び出しトレース分析、SQL パフォーマンス分析など、さまざまなモニタリングデータを表示できます。このトピックでは、Python アプリケーション用の ARMS エージェントを手動でインストールし、SAE にデプロイする方法について説明します。
前提条件
ビルド環境がインターネットまたは Alibaba Cloud 内部ネットワークに接続できることを確認してください。ビルド環境のセキュリティグループは、ポート 80 および 443 での送信 TCP トラフィックを許可する必要があります。
Python とフレームワークのバージョンを確認してください。詳細については、「ARMS アプリケーション監視でサポートされている Python コンポーネントとフレームワーク」をご参照ください。
イメージから SAE に Python プロジェクトをデプロイする場合は、Container Registry を有効化してから、Enterprise Edition インスタンスを作成するか、Personal Edition インスタンスを作成する必要があります。
注意事項
アプリケーションが uvicorn で起動する場合、次のいずれかの構成方法を選択してください。
方法 1: uvicorn エントリファイルの最初の行に次の文を追加して、Python エージェントをインポートします。
from aliyun.opentelemetry.instrumentation.auto_instrumentation import sitecustomize方法 2: uvicorn を gunicorn に置き換え、gunicorn コマンドに
aliyun-instrumentプレフィックスを追加します。例:
uvicorn app:app --workers 4 --port=9090 --host 0.0.0.0次のように変更します。
aliyun-instrument gunicorn -w 4 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000 app:app説明aliyun-instrument コマンドは、ARMS Python エージェントの初期化と自動イベントトラッキングを処理します。
アプリケーションが uWSGI で起動する場合、詳細については、「uWSGI で Django または Flask プロジェクトを起動する際に Python エージェントに接続する」をご参照ください。
gevent コルーチンを使用する場合は、
GEVENT_ENABLE=true環境変数を設定する必要があります。たとえば、プログラムに次のコードが含まれている場合:
from gevent import monkey monkey.patch_all()次のように環境変数を設定します。
GEVENT_ENABLE=true
手順
プロジェクトの準備: このトピックでは、デモプロジェクトを例として使用します。
Python プロジェクト用の Docker イメージを作成するか、プロジェクトを ZIP ファイルにパッケージングする: イメージからアプリケーションをデプロイする場合、イメージの作成時に Python エージェントをダウンロードしてインストールする必要があります。コードパッケージからアプリケーションをデプロイする場合、システムはデプロイメント中に Python エージェントを自動的にダウンロードしてインストールします。ARMS Python エージェントを使用してアプリケーションを起動するだけで済みます。
Python アプリケーションのデプロイ: SAE コンソールで Python アプリケーションをデプロイし、アプリケーション監視を有効にします。コードパッケージからアプリケーションをデプロイする場合は、ARMS Python エージェントを使用してアプリケーションを起動するための起動コマンドも設定する必要があります。
アプリケーションモニタリングデータの表示: アプリケーションによって生成されたさまざまなモニタリングデータを表示します。
1. プロジェクトの準備
プロジェクトを環境にアップロードします。
プロジェクトを実行およびテストするために必要な環境をインストールします。詳細については、「パッケージのインストール」をご参照ください。
プロジェクトをローカルでテストして、期待どおりに実行されることを確認します。
2. Docker イメージを作成するか、Python プロジェクトを ZIP ファイルにパッケージングする
Docker イメージを作成してイメージリポジトリにプッシュする
Python イメージを作成します。
このトピックでは、エージェントをダウンロードしてインストールし、ARMS Python エージェントを使用してアプリケーションを起動するコマンドのみを説明します。
... # PyPI リポジトリからエージェントインストーラーをダウンロードします。 RUN pip3 install aliyun-bootstrap # aliyun-bootstrap を使用して Python エージェントをインストールします。 RUN aliyun-bootstrap -a install ... # ARMS Python エージェントを使用してアプリケーションを起動します。 CMD ["aliyun-instrument","python","main.py"]説明Python エージェントを使用してアプリケーションを起動する必要がない場合は、
main.pyなどのアプリケーションのメインエントリファイルに Python エージェントをインポートしてから、アプリケーションを起動する必要があります。from aliyun.opentelemetry.instrumentation.auto_instrumentation import sitecustomize作成した Python イメージを Alibaba Cloud イメージリポジトリにプッシュします。詳細については、「イメージのプッシュとプル (Enterprise Edition)」または「イメージのプッシュとプル (Personal Edition)」をご参照ください。
Python プロジェクトを ZIP ファイルにパッケージングする
ローカル環境で Python プロジェクトを ZIP ファイルにパッケージングします。詳細については、「Python プロジェクトを ZIP ファイルにパッケージングする手順」をご参照ください。
3. Python アプリケーションの作成
イメージから Python アプリケーションを作成する
3.1 アプリケーションの作成
このトピックでは、主要なステップのみを説明します。詳細については、「イメージからアプリケーションをデプロイする」をご参照ください。
[イメージの設定] パネルで、[技術スタック] を [Python] に設定し、イメージのバージョンを選択します。

[詳細設定] ページで、[アプリケーション監視] セクションの [アプリケーション監視] を有効にします。

[アプリケーションの作成] をクリックします。
3.2 アクセスのテスト
パブリックエンドポイントを使用したテスト
アプリケーションにパブリックエンドポイントを追加します。詳細については、「CLB インスタンスをアプリケーションにバインドしてパブリックまたは内部エンドポイントを生成する」をご参照ください。

パブリックエンドポイントをコピーしてブラウザに貼り付け、アクセスをテストします。
Webshell でのテスト
アプリケーションの [基本情報] ページに移動し、[インスタンスリスト] タブをクリックします。

インスタンスの [アクション] 列で、[Webshell] をクリックします。

[Webshell] ページで、
curl 127.0.0.1:ContainerPortと入力してテストします。
コードパッケージから Python アプリケーションを作成する
3.1 アプリケーションの作成
このトピックでは、主要なステップのみを説明します。詳細については、「Python アプリケーションをデプロイする」をご参照ください。
[コードパッケージデプロイメントの設定] パネルで、[技術スタック] を [Python] に設定します。次に、[ZIP パッケージのアップロード] セクションで、
アイコンをクリックして ZIP パッケージをアップロードします。
[詳細設定] ページで、次の設定を構成します。
[起動コマンド] セクションで、起動コマンドを設定します。
aliyun-instrument python main.py # ARMS Python エージェントを使用してアプリケーションを起動します。この例では、main.py はメインエントリファイルの名前です。
[アプリケーション監視] セクションで、[アプリケーション監視] を有効にします。

[アプリケーションの作成] をクリックします。
3.2 アクセスのテスト
パブリックエンドポイントを使用したテスト
アプリケーションにパブリックエンドポイントを追加します。詳細については、「CLB インスタンスをアプリケーションにバインドしてパブリックまたは内部エンドポイントを生成する」をご参照ください。

パブリックエンドポイントをコピーしてブラウザに貼り付け、アクセスをテストします。
Webshell でのテスト
アプリケーションの [基本情報] ページに移動し、[インスタンスリスト] タブをクリックします。

インスタンスの [アクション] 列で、[Webshell] をクリックします。

[Webshell] ページで、
curl 127.0.0.1:ContainerPortと入力してテストします。
4. アプリケーション監視データの表示
SAE コンソールでの表示
アプリケーションの [基本情報] ページに移動します。左側のナビゲーションウィンドウで、[アプリケーション監視] をクリックします。[アプリケーション監視] ページで、[モニタリングデータ] を表示します。

ARMS コンソールでの表示
ARMS コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。上部のナビゲーションバーで、ターゲットリージョンを選択します。

[アプリケーション] ページで、アプリケーションを検索し、その名前をクリックします。

モニタリング詳細ページで、モニタリングデータを表示します。
