Python アプリケーションに ARMS エージェントを手動でインストールし、アプリケーションを SAE にデプロイすると、ARMS を使用してアプリケーションをモニターできます。ARMS を使用すると、アプリケーショントポロジー、呼び出しトレース分析、SQL パフォーマンス分析など、さまざまな種類のモニタリングデータを表示できます。このトピックでは、アプリケーションに ARMS エージェントを手動でインストールし、アプリケーションを SAE にデプロイする方法について説明します。
前提条件
-
ビルド環境がパブリックインターネットまたは Alibaba Cloud 内部ネットワークに接続できることを確認してください。ビルド環境のセキュリティグループでは、ポート 80 および 443 でのアウトバウンド TCP トラフィックを許可する必要があります。
-
お使いの Python のバージョンとフレームワークがサポートされていることを確認してください。具体的な要件については、「ARMS アプリケーションモニタリングでサポートされている Python コンポーネントとフレームワーク」をご参照ください。
-
イメージを使用して Python プロジェクトを SAE にデプロイする場合は、Container Registry (ACR) を有効化し、エンタープライズインスタンスまたはパーソナルインスタンスを作成する必要があります。
Python フレームワークの互換性
続行する前に、これらのフレームワーク固有の要件を確認してください。
uvicorn
アプリケーションが uvicorn で起動する場合、次のいずれかのアプローチを選択してください:
アプローチ A:コードでエージェントをインポートする。 uvicorn のエントリファイルの最初の行に、次の import 文を追加します:
from aliyun.opentelemetry.instrumentation.auto_instrumentation import sitecustomizeアプローチ B:aliyun-instrument プレフィックス付きの gunicorn に切り替える。 uvicorn コマンドを置き換えます:
# 変更前
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:appaliyun-instrument プレフィックスは、ARMS Python エージェントの初期化と非侵入型イベントトラッキングを処理します。
uWSGI
アプリケーションが uWSGI で起動する場合、「uWSGI で起動する Django または Flask プロジェクトに Python エージェントをインストールする」をご参照ください。
gevent
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:アプリケーションの作成
このセクションでは、主要な手順のみを説明します。詳細な手順については、「イメージを使用したアプリケーションのデプロイ」をご参照ください。
-
Specify Image パネルで、Technology Stack Programming Language を Python に設定し、目的のイメージバージョンを選択します。
[マイ Alibaba Cloud イメージ] タブと [Container Registry のパーソナルインスタンス] を選択します。[イメージバージョンの選択] ドロップダウンリストから、
python2を選択します。 -
Advanced Settings ページで、Application Monitoring セクションの Application Monitoring を有効にします。
カスタムイメージでアプリケーションモニタリングを使用するには、まずイメージを変更してビルドプロセス中に Python エージェントをインストールする必要があります。ARMS は、SAE ユーザー向けに月額 200 GB の無料クォータを提供します。
-
Create Application をクリックします。
ステップ 3.2:アクセスの検証
パブリックエンドポイント
-
アプリケーションにパブリックエンドポイントを追加します。詳細については、「CLB インスタンスをアプリケーションにバインドし、パブリックまたは内部エンドポイントを生成する」をご参照ください。
設定後、[パブリックエンドポイント] セクションにバインドされた CLB アドレスが表示され、ポートは
2222、プロトコルはHTTPに設定されます。 -
パブリックエンドポイントをコピーし、ブラウザに貼り付けてテストします。
Webshell
-
アプリケーションの Basic Information ページに移動し、Instances タブをクリックします。
-
ターゲットインスタンスの [操作] 列で、[Webshell] をクリックします。
-
[Webshell] ページで、コマンド
curl 127.0.0.1:<container port>を実行してテストします。
コードパッケージから
ステップ 3.1:アプリケーションの作成
このセクションでは、主要な手順のみを説明します。詳細な手順については、「Python アプリケーションのデプロイ」をご参照ください。
-
Configure Code Package-based Deployment パネルで、Technology Stack Programming Language を Python に設定します。Upload ZIP Package セクションで、
アイコンをクリックして ZIP ファイルをアップロードします。[Python 環境] ドロップダウンリストから、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
-
アプリケーションの Basic Information ページに移動し、Instances タブをクリックします。
-
ターゲットインスタンスの [操作] 列で、[Webshell] をクリックします。
-
[Webshell] ページで、コマンド
curl 127.0.0.1:<container port>を実行してテストします。
ステップ 4:モニタリングデータの表示
SAE コンソール
アプリケーションの Basic Information ページに移動します。左側のナビゲーションウィンドウで、Application Monitoring をクリックします。Application Monitoring ページで、[モニタリングデータ] を表示できます。
[アプリケーション概要] タブには、[リクエスト]、[エラー]、[平均応答時間]、[インスタンス] の 4 つのコアメトリックカードが、前日比および前週比の比較とともに表示されます。このタブには、時系列トレンドチャートも表示され、リクエスト、エラー、平均応答時間、ピーク CPU 使用率の上位 5 つのランキングが一覧表示されます。
ARMS コンソール
ARMS コンソールにログインします。
-
左側のナビゲーションウィンドウで、 を選択します。上部のナビゲーションバーで、ターゲットリージョンを選択します。
[アプリケーション] ページでは、接続されているアプリケーションとその主要な監視メトリクス (1 秒あたりのリクエスト数、エラーレート、平均応答時間など) を確認できます。これにより、アプリケーションがアプリケーションモニタリングに接続されていることが確認できます。
-
アプリケーションリスト ページで、アプリケーションを検索し、その名前をクリックします。
-
詳細ページでアプリケーションのモニタリングデータを表示します。
