Function Compute で Java 関数を実行する際、アプリケーションパフォーマンス、分散トレース、JVM の健全性に対する可視性が必要です。Application Real-Time Monitoring Service (ARMS) は内部拡張として Function Compute と統合されており、以下の機能を提供します:
インスタンスレベルの可観測性
分散トレーシング
Java 仮想マシン (JVM) メトリクス
コードレベルのプロファイリング
アプリケーションセキュリティのインサイト
以下の手順では、カスタムランタイム関数に ARMS エージェントを追加する方法を説明します。
ARMS エージェントは、実行時に約 300 MB のメモリを消費します。関数に少なくとも 512 MB のメモリが割り当てられていることを確認してください。データ レポートに必要な呼び出し後の 10 秒間のフリーズ ウィンドウは、標準の呼び出しレートで課金されます。詳細については、「Function Compute 課金」をご参照ください。
サポートされるランタイムと要件
| 要件 | 詳細 |
|---|---|
| ランタイム | Java 8、Java 11、または Java 17 を使用するカスタムランタイム。組み込みの Java 8 ランタイムもサポートされています。 |
| JDK バージョン | ARMS アプリケーションモニタリングによるサポートが必要です。詳細については、「ARMS がサポートする Java コンポーネントおよびフレームワーク」をご参照ください。 |
| ヒープメモリ | 256 MB 超 |
| 関数のメモリ | 512 MB 以上 (ARMS は約 300 MB を消費) |
| リージョン | ARMS と Function Compute は同じリージョンにある必要があります。リージョン間のモニタリングはサポートされていません。 |
カスタムランタイムで関数を作成する方法については、「関数の作成」をご参照ください。
ステップ 1:ライセンスキーの取得
OpenAPI Explorer で DescribeTraceLicenseKey API オペレーションを呼び出して、ご利用の ARMS ライセンスキーを取得します。このキーを保存し、ステップ 3 で使用します。
ステップ 2:ARMS エージェントレイヤーの追加
Function Compute は、サポートされている各 Java バージョンに対応する ARMS エージェントをバンドルした公式共通レイヤーを提供します。
| Java バージョン | 互換性のあるランタイム | 共通レイヤーの ARN |
|---|---|---|
| Java 8 / Java 11 | カスタムランタイム | acs:fc:{region}:official:layers/ArmsAgent273x/versions/2 |
| Java 17 | カスタムランタイム | acs:fc:{region}:official:layers/ArmsAgent273x_JDK17/versions/1 |
ご利用の関数のリージョン ID (例:cn-hangzhou) で {region} を置き換えます。
Function Compute コンソールでレイヤーを追加するには、次の手順を実行します:
Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、[関数] をクリックします。
上部のナビゲーションバーでリージョンを選択します。[関数] ページで、対象の関数をクリックします。
関数の詳細ページで、[設定] タブをクリックします。
左側のナビゲーションウィンドウで [レイヤー] をクリックし、次に [変更] をクリックします。
レイヤーパネルで、[+ レイヤーの追加] > [公式共通レイヤーの追加] を選択し、ご利用の Java バージョンに一致する ARMS エージェントレイヤーを選択します。
ステップ 3:環境変数の設定
ご利用の関数に、次の環境変数を設定します:
| 変数 | 値 | 説明 |
|---|---|---|
FC_EXTENSION_ARMS | true | Function Compute で ARMS 拡張を有効にします。 |
FC_EXTENSIONS_ARMS_LICENSE_KEY | ご利用の ARMS ライセンスキー | ARMS エージェントを認証します。このキーはステップ 1で取得します。 |
「FC_EXTENSION_ARMS=true」を設定すると、各呼び出し完了後に関数インスタンスが 10 秒間フリーズします。これにより、ARMS エージェントが収集したデータを報告する時間が確保されます。この 10 秒間のウィンドウ中は、課金が標準レートで継続されます。詳細については、「Function Compute 課金」をご参照ください。
Function Compute コンソールでこれらの変数を設定するには、次の手順を実行します:
関数の詳細ページで、[設定] タブをクリックします。
左側のナビゲーションウィンドウで [環境変数] をクリックし、次に [変更] をクリックします。
FC_EXTENSION_ARMS=trueとFC_EXTENSIONS_ARMS_LICENSE_KEY=<your-license-key>を追加します。
詳細については、「環境変数の設定」をご参照ください。
ステップ 4:bootstrap スクリプトの作成
ARMS エージェントは、JVM 起動パラメーターを介して Java プロセスにアタッチします。関数が起動する際にこれらのパラメーターを渡すために、bootstrap ファイルを作成します。
次の表に、必要な JVM パラメーターを示します:
| パラメーター | 説明 |
|---|---|
-javaagent:/opt/ArmsAgent/arms-bootstrap-1.7.0-SNAPSHOT.jar | 共通レイヤーによって提供される ARMS エージェント JAR へのパス。 |
-Darms.licenseKey=${FC_EXTENSIONS_ARMS_LICENSE_KEY} | ステップ 3で設定した環境変数から読み取られる ARMS ライセンスキー。 |
-Darms.appName=${appName} | ARMS コンソールに表示されるアプリケーション名。デフォルトは FC:{FunctionName} です。 |
-Dfc.instanceId=$HOSTNAME@`hostname -i` | 関数インスタンスの一意の識別子。 |
bootstrap スクリプトの例:
#!/bin/bash
set -eo pipefail
# ARMS アプリケーション名を設定します。
# FC_FUNCTION_NAME 変数が存在する場合、デフォルトは FC:{FunctionName} になります。
appName="FC:Custom_Java_Arms_Demo"
if [ -n "${FC_FUNCTION_NAME}" ]; then
appName="FC:${FC_FUNCTION_NAME}"
fi
echo "appName: ${appName}"
params=" "
# ARMS JVM パラメーターを構築します。
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` "
params+="-javaagent:/opt/ArmsAgent/arms-bootstrap-1.7.0-SNAPSHOT.jar "
params+="-Darms.licenseKey=${FC_EXTENSIONS_ARMS_LICENSE_KEY} "
params+="-Darms.appName=${appName} "
else
# 環境変数 FC_EXTENSIONS_ARMS_LICENSE_KEY が存在しません。FC_EXTENSIONS_ARMS_LICENSE_KEY 環境変数を設定してください!
echo "The environment FC_EXTENSIONS_ARMS_LICENSE_KEY does not exist, please set the FC_EXTENSIONS_ARMS_LICENSE_KEY environment!"
exit 1
fi
# アプリケーションを起動します。JAR パスを独自のものに置き換えてください。
echo "params: ${params}"
exec java $params \
-Dserver.port=9000 \
-jar /code/target/demo-0.0.1-SNAPSHOT.jar/code/target/demo-0.0.1-SNAPSHOT.jar を、ご利用のアプリケーション JAR ファイルへのパスに置き換えてください。
bootstrap ファイルのデプロイ
関数コードページの WebIDE で、上記の内容で
bootstrapという名前のファイルを作成します。WebIDE でターミナルを開き、
chmod +x bootstrapを実行してファイルを実行可能にします。[デプロイ] をクリックします。
詳細については、「ブートストラップスクリプトを起動コマンドとして使用する」をご参照ください。
ステップ 5:統合の検証
デプロイ後、関数を少なくとも 1 回呼び出してデータ収集をトリガーし、ARMS がデータを受信していることを確認します:
ARMS コンソールにログインします。
左側のナビゲーションウィンドウで、[アプリケーションモニタリング] > [アプリケーション] を選択します。
bootstrap スクリプトの
appNameの値と一致する名前のアプリケーションを見つけます。デフォルトはFC:{FunctionName}です。アプリケーション名をクリックして、トレース、JVM メトリクス、その他のモニタリングデータを表示します。
モニタリングダッシュボードについての詳細については、「アプリケーションの概要」をご参照ください。
課金
Function Compute との ARMS 統合では、2 つのサービスから料金が発生します:
| サービス | 料金 | 詳細 |
|---|---|---|
| ARMS | アプリケーションモニタリング料金 | ARMS 課金概要 |
| Function Compute | 呼び出し後の 10 秒間のフリーズウィンドウ。標準の呼び出しレートで課金されます | Function Compute の課金 |