Application Real-Time Monitoring Service (ARMS) は、Function Computeの組み込みJava 8ランタイムに接続できます。 Java 8、Java 11、およびJava 17を使用するカスタムランタイムもARMS拡張をサポートしています。 このトピックでは、カスタムランタイムをARMSに接続する方法について説明します。
背景情報
Function ComputeはARMSとシームレスに統合されます。 ARMSを使用して、インスタンスのメトリック、トレースデータ、Java仮想マシン (JVM) メトリック、コードレベルのプロファイリング、アプリケーションセキュリティ情報などの関連情報を取得する機能を監視およびトレースできます。 詳細については、「ARMSとは何ですか?」をご参照ください。
情報 | 説明 |
インスタンスのメトリック | CPU、メモリ、リクエストに関連するメトリックなど、インスタンスのさまざまなホストメトリックを表示できます。 |
データの追跡 | ARMSエージェントは、関数とその上流および下流のコンポーネントとの間のトポロジ関係、および関連するメトリックを自動的に取得します。 データベースやメッセージキューなどのコンポーネントに関する情報は、ARMSコンソールで表示できます。 |
JVMメトリクス | ARMSエージェントは自動的にJVMアプリケーションを取得します。 ARMSコンソールで、ガベージコレクション (GC) の数、ヒープ情報、スレッドスタック情報など、JVMアプリケーションのモニタリング情報を表示できます。 |
コードレベルのプロファイリング情報 | 各メソッドで消費された時間やエラーなど、関数の実行に関するコードレベルのプロファイリング情報を表示できます。 |
アプリケーションセキュリティは、Runtime Application Self-Protection (RASP) テクノロジに基づいて開発されています。 アプリケーションセキュリティは、アプリケーションにランタイムの自己保護を提供し、攻撃者が最も未知の脆弱性を悪用して起動する攻撃からアプリケーションを保護します。 |
カスタムランタイムをARMSに接続する
ARMSを内部拡張機能としてカスタムランタイムに統合できます。 次のセクションでは、カスタムランタイムをARMSに接続する方法について説明します。
パブリックレイヤを使用してARMSエージェントを取得する
Function Computeは、共通レイヤーを使用して、Java 8、Java 11、およびJava 17をサポートするARMSエージェントを提供します。
Javaバージョン | 互換性のあるランタイム | 共通レイヤーのAlibaba Cloudリソース名 (ARN) |
Java 11/Java 8 | カスタムランタイム | acs:fc:{region}:official:layers/ArmsAgent273x /バージョン /2 |
Java 17 | カスタムランタイム | acs:fc:{region}:official:layers/ArmsAgent273x_JDK17 /バージョン /1 |
起動コマンドとしてのBootstrapスクリプトの使用
ARMSを使用するには、3つの起動パラメーターを追加する必要があります。 起動コマンドは複雑なので、スクリプトを使用して起動することをお勧めします。 WebIDEを使用して、関数コードページでブートストラップファイルを作成し、ターミナルでchmod + x bootstrap
コマンドを実行してスクリプトに実行可能権限を付与できます。 次のサンプルコードに例を示します。
#!/bin/bash
set -eo pipefail
#1. Specify a name for the ARMS application.
appName="FC:Custom_Java_Arms_Demo"
if [ -n "${FC_SERVICE_NAME}" ] || [ -n "${FC_FUNCTION_NAME}" ]; then
appName="FC:${FC_SERVICE_NAME}.${FC_FUNCTION_NAME}"
fi
echo "appName: ${appName}"
params=" "
#2. Add ARMS parameters.
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` "
# Use the path of the ARMS program of the common layer.
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 "The environment FC_EXTENSIONS_ARMS_LICENSE_KEY does not exist, please set the FC_EXTENSIONS_ARMS_LICENSE_KEY environment!"
exit 1
fi
#3. Launch the application.
echo "params: ${params}"
exec java $params \
-Dserver.port=9000 \
-jar /code/target/demo-0.0.1-SNAPSHOT.jar
上記のコードでは、
ARMSアプリケーションの名前を指定します。 デフォルト値は
FC:{ServiceName}.{FunctionName}
です。ARMSパラメータを追加します。
javaagent
: ARMSプログラムのパス。 ARMSエージェントの共通レイヤーを使用する場合、パスは/opt/ArmsAgent/arms-bootstrap-1.7.0-SNAPSHOT.jar
です。Darms.licenseKey
: ライセンスキーに関する情報。 この例では、ライセンスキーは環境変数から取得されます。 ライセンスキーの取得方法については、「Function ComputeでのJavaアプリケーションのARMSエージェントのインストール」の「ライセンスキーの取得」手順をご参照ください。Darms.appName
: ARMSアプリケーションの名前。 実際のARMSアプリケーション名を使用します。
環境変数を設定します。
FC_EXTENSIONS_ARMS_LICENSE_KEY=xxxx
環境変数をライセンスキーの値に設定します。 ライセンスキーの取得方法については、「Function ComputeでのJavaアプリケーションのARMSエージェントのインストール」の「ライセンスキーの取得」手順をご参照ください。FC_EXTENSION_ARMS=true
環境変数を設定します。環境変数が追加された後、関数インスタンスは関数呼び出しが完了してから10秒後にフリーズされます。 これにより、ARMSエージェントは期待どおりにログを報告できます。
重要この方法を使用すると、発生した料金が請求されます。 課金方法は、インスタンスのプリフリーズフックの課金方法と同じです。 詳細については、「課金ルール」をご参照ください。
前提条件
手順
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[サービスと機能] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。 [サービス] ページで、目的のサービスをクリックします。
[関数] ページで目的の関数を見つけ、[操作] 列の [設定] をクリックします。
関数設定ページの [レイヤー] セクションで、[公式共通レイヤーの追加] をクリックして、Javaバージョンと互換性のあるArmsAgentレイヤーを追加します。
関数設定ページの [環境変数] セクションで、
FC_EXTENSION_ARMS=true
およびFC_EXTENSIONS_ARMS_LICENSE_KEY=xxxx
環境変数を追加します。詳細については、「環境変数の設定」をご参照ください。
関数コードページのWebIDEで、ブートストラップファイルを作成し、[デプロイ] をクリックします。
詳細については、「起動コマンドとしてのBootstrapスクリプトの使用」をご参照ください。
構成を更新してコードをデプロイすると、高性能管理のために関数がARMSに追加されます。 ARMSの使用に対して課金されます。 詳細については、「課金の概要」をご参照ください。
関数がARMSに接続された後にモニタリング情報を表示する場合は、ARMSが関数と同じリージョンにあることを確認してください。
ARMSは約512 MBのメモリを消費するため、関数のメモリサイズが300 MBを超えることを確認してください。
結果の検証
関数をARMSに接続した後、ARMSコンソールで関数を表示できます。
ARMSコンソールにログインすることもできます。 左側のナビゲーションウィンドウで、 を選択します。 目的のアプリケーションの名前をクリックして、モニタリング情報を表示します。 詳細については、「アプリケーションの概要」をご参照ください。
ターゲットアプリケーションの名前は、BootstrapスクリプトのappName
の値です。 デフォルト値はFC:{ServiceName}.{FunctionName}
です。