このトピックでは、カスタムランタイムを使用する Python 関数に ARMS エージェントを手動でインストールする方法について説明します。
背景情報
Function Compute は、Application Real-Time Monitoring Service (ARMS) とシームレスに統合されています。Python 関数にエージェントをインストールすると、ARMS は Python アプリケーションのモニターを開始します。ARMS プラットフォームを使用して、アプリケーションのトポロジー、呼び出しチェーン、SQL 分析などのモニタリングデータを表示できます。詳細については、「Application Real-Time Monitoring Service (ARMS) とは」をご参照ください。
制限事項
関数の Python バージョンは、カスタムランタイムの Python バージョンと同じである必要があります。
ステップ 1: エージェントレイヤーの作成
1. Python エージェントパッケージの取得
1.1. エージェントパッケージのダウンロード
// VPC ネットワーク経由でエージェントの特定バージョンをダウンロードします
wget http://arms-apm-${regionID}.oss-${regionID}-internal.aliyuncs.com/aliyun-python-agent/${version}/aliyun-python-agent.tar.gz
// VPC ネットワーク経由でエージェントの最新バージョンをダウンロードします
wget http://arms-apm-${regionID}.oss-${regionID}-internal.aliyuncs.com/aliyun-python-agent/aliyun-python-agent.tar.gz
// インターネット経由でエージェントの特定バージョンをダウンロードします
wget http://arms-apm-${regionID}.oss-${regionID}.aliyuncs.com/aliyun-python-agent/${version}/aliyun-python-agent.tar.gz
// インターネット経由でエージェントの最新バージョンをダウンロードします
wget http://arms-apm-${regionID}.oss-${regionID}.aliyuncs.com/aliyun-python-agent/aliyun-python-agent.tar.gz${regionID} をリージョン ID に置き換えます。詳細については、「サポートされているリージョン」をご参照ください。
${version} をバージョン番号に置き換えます。詳細については、「Python エージェントのバージョンガイド」をご参照ください。
次の例は、エージェントの特定バージョンをダウンロードする方法を示しています。
wget http://arms-apm-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/aliyun-python-agent/1.5.0/aliyun-python-agent.tar.gz1.2. エージェントパッケージの展開と pip install の実行
## パッケージを展開します。
tar -zxvf aliyun-python-agent.tar.gz
## パッケージをビルドします。
pip3 install target/*.whl -t aliyun-instrument
## ./aliyun-instrument/bin フォルダ内の aliyun-instrument ファイルを修正します。最初の行 #!/usr/bin/python3 を次の内容に置き換えます。
#!/var/fc/lang/python3.10/bin/python32. コンソールでのレイヤーの作成
Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
トップメニューバーでリージョンを選択します。[レイヤー] ページで、[レイヤーの作成] をクリックします。
[レイヤーの作成] ページで、[フォルダからアップロード] を選択してレイヤーをアップロードします。

aliyun-instrument ファイルをアップロードする際は、aliyun-instrument が最上位のフォルダであることを確認してください。圧縮および展開中に、aliyun-instrument フォルダを同じ名前の別のフォルダ内にネストしないでください。ネストすると、環境変数の構成に影響します。
ステップ 2: 関数でカスタムレイヤーを使用する
1. 関数の詳細設定でカスタムレイヤーを追加する
Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
トップナビゲーションバーでリージョンを選択します。[関数] ページで、対象の関数をクリックします。
関数詳細ページで、[設定] タブをクリックします。[詳細設定] の右側にある [編集] をクリックします。[詳細設定] パネルで、 を選択します。[カスタムレイヤー] と [レイヤーバージョン] を選択します。次に、[デプロイ] をクリックします。

2. 環境変数の追加
変数 | 値 |
ARMS_APP_NAME | FC:{function_name} |
ARMS_LICENSE_KEY | |
ARMS_REGION_ID | {region} |
LD_LIBRARY_PATH | /code:/code/lib:/usr/local/lib:/opt/lib:/opt/php8.1/lib:/opt/php8.0/lib:/opt/php7.2/lib |
PATH | /code/python/bin:/var/fc/lang/python3.10/bin:/usr/local/bin/apache-maven/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/ruby/bin:/opt/bin:/code:/code/bin |
PYTHONPATH | /opt:/opt/python:/code |
PYTHONUSERBASE | /code/python |
3. 起動コマンドの変更
関数詳細ページで、[設定] タブをクリックします。[基本設定] の右側にある [編集] をクリックします。[起動コマンド] の値を次のように変更します。
aliyun-instrument python3 app.pyアプリケーションが uvicorn を使用して起動される場合、起動コマンドを次のコマンドに置き換えてエージェントに接続します。
例:
uvicorn -w 4 -b 0.0.0.0:8000 app:app次のように変更します:
aliyun-instrument gunicorn -w 4 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000 app:appaliyun-instrument コマンドは、ARMS Python エージェントの初期化と自動イベントトラッキングを処理します。プログラムが gevent コルーチンを使用する場合、GEVENT_ENABLE 環境変数を true に設定する必要があります。たとえば、プログラムに次のコードが含まれている場合:
from gevent import monkey
monkey.patch_all()環境変数を次のように設定します:
GEVENT_ENABLE=true結果の検証
関数を実行した後、約 1 分間待ちます。ARMS コンソール の [アプリケーションモニタリング > アプリケーションリスト] ページに Python アプリケーションが表示され、データがレポートされる場合、エージェントが接続されていることを示します。
