Python アプリケーション用の ARMS エージェントを手動でインストールし、SAE にデプロイして、アプリケーション トポロジー、呼び出しトレース、SQL パフォーマンスを監視します。
前提条件
ビルド環境がパブリックインターネットまたは Alibaba Cloud 内部ネットワークに接続できることを確認します。ビルド環境のセキュリティグループで、ポート 80 および 443 でのアウトバウンド TCP トラフィックを許可する必要があります。
Python のバージョンとフレームワークがサポートされていることを確認します。具体的な要件については、「ARMS アプリケーション監視でサポートされる Python コンポーネントとフレームワーク」をご参照ください。
イメージを使用して Python プロジェクトを SAE にデプロイする場合は、Container Registry (ACR) を有効化し、Enterprise instance または Personal instance を作成する必要があります。
注意
アプリケーションが 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
注意
アプリケーションが 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
概要
プロジェクトの準備: このトピックでは、デモプロジェクトを例として使用します。
Docker イメージのビルドまたはプロジェクトのパッケージ化: イメージを使用してアプリケーションをデプロイする場合は、イメージのビルドプロセス中に Python エージェントをインストールする必要があります。コードパッケージを使用してアプリケーションをデプロイする場合、システムがエージェントを自動的にインストールします。ARMS エージェントを使用してアプリケーションを起動するように起動コマンドを設定するだけで済みます。
Python アプリケーションのデプロイ: SAE でアプリケーションをデプロイし、アプリケーション監視を有効にします。コードパッケージを使用する場合は、ARMS エージェントを使用してアプリケーションを起動するように起動コマンドも設定する必要があります。
監視データの表示: アプリケーションが生成した監視データを表示します。
ステップ 1: プロジェクトの準備
プロジェクトをビルド環境にアップロードします。
プロジェクトをテストするために必要な依存関係をインストールします。詳細については、「パッケージのインストール」をご参照ください。
プロジェクトをローカルでテストして、正しく実行されることを確認します。
ステップ 2: Docker イメージのビルドまたはプロジェクトのパッケージ化
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などのアプリケーションのメインエントリファイルでエージェントをインポートしてから、アプリケーションを起動する必要があります。from aliyun.opentelemetry.instrumentation.auto_instrumentation import sitecustomizeビルドした Python イメージを Alibaba Cloud Container Registry (ACR) にプッシュします。詳細については、「イメージのプッシュとプル (Enterprise Edition)」または「イメージのプッシュとプル (Personal Edition)」をご参照ください。
ZIP パッケージ
ローカル環境で Python プロジェクトを ZIP ファイルにパッケージ化します。詳細については、「Python プロジェクトを ZIP ファイルにパッケージ化する手順」をご参照ください。
ステップ 3: アプリケーションの作成
イメージから
ステップ 3.1: アプリケーションの作成
詳細な手順については、「イメージを使用したアプリケーションのデプロイ」をご参照ください。
イメージの設定 パネルで、技術スタック言語 を Python に設定し、希望のイメージバージョンを選択します。
[My Alibaba Cloud Images] タブと [Personal Edition of Container Registry] を選択します。[Select Image Version] ドロップダウンリストから、
Python 3.9.15を選択します。Advanced Settings ページで、Application Monitoring セクションで Application Monitoring を有効にします。
カスタムイメージでアプリケーション監視を使用するには、まずイメージを変更して、ビルドプロセス中に Python エージェントをインストールする必要があります。ARMS は SAE ユーザーに対して、月あたり 200 GB の無料クォータを提供しています。
Create Application をクリックします。
ステップ 3.2: アクセスの確認
パブリックエンドポイント
アプリケーションにパブリックエンドポイントを追加します。詳細については、「CLB インスタンスをアプリケーションにバインドし、パブリックまたは内部エンドポイントを生成」をご参照ください。
設定後、[Public Endpoint] セクションにバインドされた CLB アドレスが表示され、ポートは
2222、プロトコルはHTTPに設定されます。パブリックエンドポイントをコピーしてブラウザに貼り付け、テストします。
Webshell
アプリケーションの基本情報ページに移動し、インスタンス一覧タブをクリックします。
対象インスタンスの [Actions] 列で [Webshell] をクリックします。
[Webshell] ページで、コマンド
curl 127.0.0.1:<container port>を実行してテストします。
コードパッケージから
ステップ 3.1: アプリケーションの作成
詳細な手順については、「Python アプリケーションのデプロイ」をご参照ください。
コードパッケージデプロイメントの設定 パネルで、技術スタック言語 を Python に設定します。Upload ZIP Package セクションで、
アイコンをクリックして ZIP ファイルをアップロードします。[Python Environment] ドロップダウンリストから、[Python 3.9.15] を選択します。
Advanced Settings ページで、以下の設定を構成します。
Startup Command セクションに、以下のコマンドを入力します。
aliyun-instrument python main.py # ARMS Python エージェントを使用してアプリケーションを起動します。この例では main.py がメインエントリファイルです。コマンドタイプとして [/bin/sh] を選択します。
Application Monitoring セクションで、Application Monitoring を有効にします。
Create Application をクリックします。
ステップ 3.2: アクセスの確認
パブリックエンドポイント
アプリケーションにパブリックエンドポイントを追加します。詳細については、「CLB インスタンスをアプリケーションにバインドし、パブリックまたは内部エンドポイントを生成」をご参照ください。
パブリックエンドポイントをコピーしてブラウザに貼り付け、テストします。
Webshell
アプリケーションの基本情報 ページに移動し、インスタンス一覧 タブをクリックします。
対象インスタンスの [Actions] 列で [Webshell] をクリックします。
[Webshell] ページで、コマンド
curl 127.0.0.1:<container port>を実行してテストします。
ステップ 4: 監視データの表示
SAE コンソール
アプリケーションの 基本情報 ページに移動します。 左側のナビゲーションペインで、Application Monitoring をクリックします。 Application Monitoring ページで、[監視データ] を表示できます。
[Application Overview] タブには、4 つのコアメトリックカード ([Requests]、[Errors]、[Avg. Response Time]、[Instances]) が表示され、前日比および前週比の比較が示されます。また、リクエスト数、エラー数、平均応答時間、ピーク CPU 使用率の時系列トレンドチャートと上位 5 位のランキングも表示されます。
ARMS コンソール
にログインします。 ARMSコンソールを使用します。
左側のナビゲーションペインで、 を選択します。上部のナビゲーションバーで、対象のリージョンを選択します。
[Applications] ページでは、接続されたアプリケーションとその主要な監視メトリック (1 秒あたりのリクエスト数、エラー率、平均応答時間など) を確認できます。これにより、アプリケーションがアプリケーション監視に接続されていることを確認できます。
アプリケーションリスト ページで、アプリケーションを検索して名前をクリックします。
詳細ページでアプリケーションの監視データを表示します。
監視詳細ページには、過去 2 日間のアプリケーションの主要メトリックが表示されます。これには次のものが含まれます。
[Requests]: 17.00 (前日比 1700%)
[Errors]: 2.00 (前日比 200%)
[Avg. Response Time]: 18.5 分 (前日比 111005%)
[インスタンス一覧]: 0
中央のセクションには、リクエスト数、エラー数、応答時間、CPU 使用率の時系列トレンドチャートが表示されます。下部のセクションには、[Top 5 Requests by Service]、[Top 5 Errors by Service]、[Top 5 Avg. Response Time by Service]、[Top 5 CPU Usage] のランキングデータが表示されます。