Application Real-Time Monitoring Service (ARMS) は、Function Compute の組み込み Java 8 ランタイムに接続できます。Java 8、Java 11、および Java 17 を使用するカスタムランタイムも ARMS 拡張機能をサポートしています。このトピックでは、カスタムランタイムを ARMS に接続する方法について説明します。
背景情報
Function Compute が ARMS とシームレスに統合されると、ARMS を使用して関数を監視および追跡し、インスタンスレベルの可観測性、トレース情報、Java 仮想マシンのメトリック、コードレベルのプロファイリング情報、アプリケーションセキュリティ情報などの関連情報を取得できます。
前提条件
カスタムランタイムの関数が作成され、ランタイムは Java 8、Java 11、または Java 17 を使用します。詳細については、関数の作成を参照してください。
JDK のバージョンは Application Monitoring でサポートされています。詳細については、ARMS でサポートされている Java コンポーネントとフレームワークを参照してください。
プロセスの最大ヒープメモリは 256 MB より大きくなっています。
ライセンスキーを取得する
OpenAPI Explorer でライセンスキーを取得します。詳細については、DescribeTraceLicenseKey を参照してください。
カスタムランタイムを ARMS に接続する
ARMS を内部拡張機能としてカスタムランタイムに統合できます。次のセクションでは、カスタムランタイムを ARMS に接続する方法について説明します。
パブリックレイヤーを使用して ARMS エージェントを取得する
Function Compute は、共通レイヤーを使用して、Java 8、Java 11、および Java 17 をサポートする ARMS エージェントを提供します。
Java バージョン | 互換性のあるランタイム | 共通レイヤー ARN |
Java 11/Java 8 | カスタムランタイム | acs:fc:{region}:official:layers/ArmsAgent273x/versions/2 |
Java 17 | カスタムランタイム | acs:fc:{region}:official:layers/ArmsAgent273x_JDK17/versions/1 |
ブートストラップスクリプトを使用してアプリケーションを起動する
ARMS を使用するには、3 つの起動パラメータを追加する必要があります。簡潔にするために、スクリプトを使用して起動することをお勧めします。WebIDE を使用して、関数コードページに bootstrap ファイルを作成し、ターミナルで chmod +x bootstrap コマンドを実行して、ファイルの実行権限を設定できます。次のサンプルコードは例を示しています。
#!/bin/bash
set -eo pipefail
# 1. ARMS アプリケーションの名前を指定します。
appName="FC:Custom_Java_Arms_Demo"
if [ -n "${FC_FUNCTION_NAME}" ]; then
appName="FC:${FC_FUNCTION_NAME}"
fi
echo "appName: ${appName}"
params=" "
# 2. ARMS パラメータを追加します。
if [[ -n "${FC_EXTENSIONS_ARMS_LICENSE_KEY}" ]]; then
echo "FC_EXTENSIONS_ARMS_LICENSE_KEY: ${FC_EXTENSIONS_ARMS_LICENSE_KEY}"
params+="-Dfc.instanceId=$HOSTNAME@`hostname -i` "
# パブリックレイヤーの ARMS プログラムパスを使用します。
params+="-javaagent:/opt/ArmsAgent/arms-bootstrap-1.7.0-SNAPSHOT.jar "
params+="-Darms.licenseKey=${FC_EXTENSIONS_ARMS_LICENSE_KEY} "
params+="-Darms.appName=${appName} "
else
echo "環境 FC_EXTENSIONS_ARMS_LICENSE_KEY が存在しません。FC_EXTENSIONS_ARMS_LICENSE_KEY 環境を設定してください!"
exit 1
fi
# 3. アプリケーションを起動します。
echo "params: ${params}"
exec java $params \
-Dserver.port=9000 \
-jar /code/target/demo-0.0.1-SNAPSHOT.jar次の項目では、サンプルコードの詳細について説明します。
ARMS アプリケーションの名前を指定します。デフォルト値は
FC:{FunctionName}です。ARMS パラメータを追加します。
javaagent: ARMS プログラムのパス。ARMS エージェントのパブリックレイヤーを使用する場合、パスは/opt/ArmsAgent/arms-bootstrap-1.7.0-SNAPSHOT.jarです。Darms.licenseKey: ライセンスキー情報。この例では、ライセンスキーは環境変数から取得されます。ライセンスキーの取得方法の詳細については、ライセンスキーの取得を参照してください。Darms.appName: ARMS アプリケーションの名前。実際の ARMS アプリケーション名を使用してください。
環境変数を設定する
環境変数
FC_EXTENSIONS_ARMS_LICENSE_KEY=xxxxを設定します。値をライセンスキーに設定します。ライセンスキーの取得方法の詳細については、ライセンスキーの取得を参照してください。環境変数
FC_EXTENSION_ARMS=trueを設定します。環境変数が追加されると、関数呼び出しの完了後 10 秒で関数インスタンスがフリーズされます。これにより、ARMS エージェントがログを想定どおりに報告できるようになります。
重要呼び出しが完了した後、呼び出し中の同じ課金ルールに基づいて、インスタンスがフリーズされるまで料金が発生し続けます。詳細については、課金を参照してください。
手順
Function Compute コンソール にログインします。左側のナビゲーションペインで、関数をクリックします。
上部のナビゲーションバーで、リージョンを選択します。関数ページで、管理する関数をクリックします。
関数の詳細ページで、構成タブをクリックします。
左側のナビゲーションペインで、レイヤーをクリックします。表示されるページで、変更をクリックします。「レイヤー」パネルで、 を選択して、Java ランタイムと互換性のある ARMS エージェントレイヤーを追加します。
左側のナビゲーションペインで、環境変数をクリックします。表示されるページで、変更をクリックして、次の環境変数を設定します:
FC_EXTENSION_ARMS=trueおよびFC_EXTENSIONS_ARMS_LICENSE_KEY=xxxx詳細については、環境変数の設定を参照してください。
関数コードページの WebIDE で、ブートストラップファイルを作成し、デプロイをクリックします。
詳細については、ブートストラップスクリプトを起動コマンドとして使用するを参照してください。
構成を更新してコードをデプロイすると、関数は高パフォーマンス管理のために ARMS に追加されます。ARMS の使用には料金が発生します。詳細については、概要を参照してください。
関数を ARMS に接続した後に監視情報を表示する場合は、ARMS が関数と同じリージョンにあることを確認してください。
ARMS は約 300 MB のメモリを消費するため、関数のメモリサイズが 512 MB 以上であることを確認してください。
HTTP ジョブの実行結果を確認する
関数を ARMS に接続した後、ARMS コンソールで関数を確認できます。
ARMS コンソール にログインすることもできます。左側のナビゲーションペインで、 を選択します。目的のアプリケーションの名前をクリックして、監視情報を表示します。詳細については、概要を参照してください。
appName は、ブートストラップスクリプトのターゲットアプリケーションの名前を示します。デフォルト値は FC:{FunctionName} です。