すべてのプロダクト
Search
ドキュメントセンター

Function Compute:カスタムランタイム用のARMS拡張

最終更新日:Jul 17, 2024

Function Computeの組み込みJava 8ランタイムは、Application Real-Time Monitoring Service (ARMS) との統合をサポートしています。 Java 8、Java 11、およびJava 17のカスタムランタイムもARMS拡張をサポートしています。 このトピックでは、カスタムランタイムをARMSに接続する方法について説明します。

背景

Function ComputeをARMSとシームレスに統合すると、ARMSを使用して機能を監視および追跡し、インスタンスレベルの可観測性、トレース情報、Java仮想マシン (JVM) メトリクス、コードレベルのプロファイリング情報、アプリケーションセキュリティ情報などの関連情報を取得できます。 詳細については、「ARMSとは何ですか?」をご参照ください。

機能

説明

インスタンスレベルの可観測性

CPU、メモリ、リクエストに関連するメトリックなど、インスタンスのさまざまなメトリックを表示できます。

Tracing

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バージョン

互換性のあるランタイム

共通レイヤー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を使用して、関数コードページでブートストラップファイルを作成し、ターミナルでchmod + xブートストラップを実行してファイルの実行可能権限を設定できます。 以下にコードの例を示します。

#!/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 "The environment FC_EXTENSIONS_ARMS_LICENSE_KEY does not exist, please set the FC_EXTENSIONS_ARMS_LICENSE_KEY environment!"
    exit 1
fi

#3. アプリケーションを起動します。
echo "params: ${params}"
exec java $params \
    -Dserver.port=9000 \
    -jar /code/target/demo-0.0.1-SNAPSHOT.jar

サンプルコードの詳細を次に示します。

  1. ARMSアプリケーションの名前を指定します。 デフォルト値はFC:{FunctionName} です。

  2. 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エージェントは期待どおりにログを報告できます。

    重要

    FC_EXTENSION_SLS_LOGGIE=true環境変数の使用に対して課金されます。 環境変数の課金ルールは、PreFreezeフックの課金ルールと同じです。 詳細については、「課金の概要」をご参照ください。

前提条件

  • カスタムランタイムの関数が作成され、ランタイムはJava 8、Java 11、またはJava 17を使用します。 詳細については、「関数の管理」トピックの「関数の作成」セクションをご参照ください。

  • ARMS が有効化されていること。 詳細については、「ARMSの有効化とアップグレード」をご参照ください。

手順

  1. Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[関数] をクリックします。

  2. 上部のナビゲーションバーで、リージョンを選択します。 [関数] ページで、管理する関数の名前をクリックします。

  3. 表示されるページで、設定タブをクリックします。

  4. 左側のナビゲーションウィンドウで、[レイヤー] をクリックします。 表示されるページで、[変更] をクリックします。 レイヤーパネルで、[+ レイヤーの追加] > [公式共通レイヤーの追加] を選択して、Javaランタイムと互換性のあるARMSエージェントレイヤーを追加します。

  5. 左側のナビゲーションウィンドウで、[環境変数] をクリックします。 表示されるページで、[変更] をクリックして、FC_EXTENSION_ARMS=trueおよびFC_EXTENSIONS_ARMS_LICENSE_KEY=xxxx環境変数を追加します。

    詳細については、「環境変数の設定」をご参照ください。

  6. 関数コードページのWebIDEで、ブートストラップファイルを作成し、デプロイをクリックします。

    詳細については、「起動コマンドとしてのBootstrapスクリプトの使用」をご参照ください。

    構成を更新してコードをデプロイすると、高性能管理のために関数がARMSに追加されます。 ARMSの使用に対して課金されます。 詳細については、「課金の概要」をご参照ください。

重要
  • 関数がARMSに接続された後にモニタリング情報を表示する場合は、ARMSが関数と同じリージョンにあることを確認してください。

  • ARMSは約512 MBのメモリを消費するため、関数のメモリサイズが300 MBを超えることを確認してください。

HTTPジョブの実行結果を確認する

関数をARMSに接続した後、ARMSコンソールで関数を表示できます。

ARMSコンソールにログインすることもできます。 左側のナビゲーションウィンドウで、[アプリケーションモニタリング] > [アプリケーション] を選択します。 目的のアプリケーションの名前をクリックして、モニタリング情報を表示します。 詳細については、「概要」をご参照ください。

説明

appNameは、Bootstrapスクリプト内のターゲットアプリケーションの名前を示します。 デフォルト値はFC:{FunctionName} です。