Function Compute の組み込み Java ランタイムを Application Real-Time Monitoring Service (ARMS) に接続し、アプリケーションレベルのモニタリング、トレース、プロファイリングを実現します。
現在サポートされているのは、Java 8 と Java 11 のランタイムのみです。カスタムランタイムを使用する場合は、「カスタムランタイムでの ARMS アプリケーションモニタリング拡張機能のサポート」をご参照ください。
仕組み
ARMS アプリケーションモニタリングは、Function Compute の内部拡張機能です。これを有効にするには、ARMS エージェントを含むパブリックレイヤーを追加し、2 つの環境変数を設定します。1 つはエージェントを Java 仮想マシン (JVM) にアタッチするためのもので、もう 1 つは ARMS ライセンスキーで認証するためのものです。デプロイされると、ARMS エージェントは関数インスタンスからモニタリングデータを収集し、同じリージョン内の ARMS バックエンドに送信します。
統合が完了すると、ARMS で関数のモニタリングとトレースが可能になります。利用可能な機能を次の表に示します。
| 機能 | 説明 |
|---|---|
| インスタンスレベルの可観測性 | CPU、メモリ、リクエスト数などのインスタンスレベルのメトリクスを表示します。 |
| トレース | 関数とアップストリームまたはダウンストリームコンポーネント間のトポロジー関係を自動的に検出します。データベース、メッセージキュー、その他の依存関係の詳細は、ARMS コンソールで表示できます。 |
| JVM メトリクス | ガベージコレクション (GC) 回数、ヒープ使用量、スレッドスタックの詳細などの JVM メトリクスを自動的に収集します。 |
| コードレベルのプロファイリング情報 | メソッドの実行時間や例外など、コードレベルのプロファイリング詳細を表示できます。 |
| アプリケーションセキュリティ | Runtime Application Self-Protection (RASP) 技術を使用して、ほとんどの未知の脆弱性を悪用する攻撃からアプリケーションを保護します。 |
詳細については、「Application Real-Time Monitoring Service とは」をご参照ください。
前提条件
操作手順
ステップ 1: ARMS エージェントレイヤーの追加
Function Compute は、Java 8 および Java 11 ランタイムをサポートする ARMS エージェントを提供します。どちらのランタイムも同じパブリックレイヤー ARN を使用します。
| ランタイム | パブリックレイヤー ARN |
|---|---|
| java8 | acs:fc:{region}:official:layers/ArmsAgent4x/versions/1 |
| java11 | acs:fc:{region}:official:layers/ArmsAgent4x/versions/1 |
{region} を、関数がデプロイされているリージョンに置き換えてください。
レイヤーを追加するには:
-
Function Compute コンソールにログインします。左側のナビゲーションペインで、[Functions] をクリックします。
-
上部メニューでリージョンを選択します。[Functions] ページで、対象の関数をクリックします。
-
関数の設定ページで、[Configurations] タブをクリックします。
-
左側の [レイヤー] タブをクリックし、[編集] をクリックします。 関数レイヤーの編集パネルで、[+レイヤーの追加] > [ARN でレイヤーを追加] を選択し、選択した Java 言語と互換性のある ArmsAgent レイヤーを追加します。 ARN の
{region}の値を実際のリージョンに置き換え、[デプロイ] をクリックします。
ステップ 2: 環境変数の設定
関数に次の 2 つの環境変数を設定します:
-
JAVA_TOOL_OPTIONS:-javaagent:/opt/ArmsAgent/arms-bootstrap-1.7.0.jarに設定することで、起動時に ARMS エージェントが JVM にアタッチされます。このJARファイルはパブリックレイヤーによって提供されます。 -
FC_EXTENSIONS_ARMS_LICENSE_KEY: ARMS のライセンスキーに設定します。ライセンスキーを取得するには、「ライセンスキー情報の取得」をご参照ください。
{
"FC_EXTENSIONS_ARMS_LICENSE_KEY": "xxx",
"JAVA_TOOL_OPTIONS": "-javaagent:/opt/ArmsAgent/arms-bootstrap-1.7.0.jar"
}
環境変数を設定するには:
-
左側のナビゲーションペインで、[Environment Variables] タブをクリックし、[Edit] をクリックします。次の環境変数を追加してから、変更をデプロイします。詳細については、「環境変数の設定」をご参照ください。
-
JAVA_TOOL_OPTIONS=-javaagent:/opt/ArmsAgent/arms-bootstrap-1.7.0.jar -
FC_EXTENSIONS_ARMS_LICENSE_KEY=yourLicenseKey
-
-
設定を更新してコードをデプロイすると、関数はモニタリングのために ARMS に追加されます。ARMS の使用には料金が発生します。詳細については、「課金概要」をご参照ください。
検証
関数を ARMS に接続した後、モニタリングデータが ARMS コンソールに表示されることを検証してください:
-
ARMS コンソールにログインします。
-
左側のナビゲーションペインで、[アプリケーションモニタリング] > [アプリケーション] を選択します。
-
対象のアプリケーションの名前をクリックして、詳細なモニタリング情報を表示します。
関数がアプリケーションリストに表示され、リクエスト数や応答時間などのメトリクスが表示される場合、ARMS の統合は正常に機能しています。
利用可能なモニタリングデータの詳細については、「アプリケーション概要」をご参照ください。
トラブルシューティング
関数を接続してもモニタリングデータが ARMS コンソールに表示されない場合は、以下を確認してください:
| 問題 | 解決策 |
|---|---|
| 関数と ARMS が異なるリージョンにある | ARMS は関数と同じリージョンにある必要があります。Function Compute と ARMS の両方のコンソールでリージョンを確認してください。 |
| ライセンスキーが正しくない | FC_EXTENSIONS_ARMS_LICENSE_KEY の値が ARMS コンソールに表示されるライセンスキーと一致することを確認してください。「ライセンスキー情報の取得」をご参照ください。 |
| JAVA_TOOL_OPTIONS の値が正しくない | JAVA_TOOL_OPTIONS のパスが -javaagent:/opt/ArmsAgent/arms-bootstrap-1.7.0.jar と完全に一致することを確認してください。 |
| メモリ不足 | 関数のメモリを 512 MB を超える値に増やしてください。ARMS エージェントには約 300 MB が必要です。 |
| レイヤーが追加されていない、または ARN が間違っている | ArmsAgent レイヤーが関数のレイヤー設定にリストされていること、および {region} プレースホルダーが実際のリージョンに置き換えられていることを確認してください。 |
| データの表示遅延 | 最初の呼び出し後、モニタリングデータが ARMS コンソールに表示されるまでに数分かかることがあります。関数を呼び出し、確認する前にしばらく待ってください。 |