• /
  • EnglishEspañolFrançais日本語한국어Português
  • ログイン今すぐ開始

この機械翻訳は、参考として提供されています。

英語版と翻訳版に矛盾がある場合は、英語版が優先されます。詳細については、このページを参照してください。

問題を作成する

JavaサーバーレスAWS lambdaパフォーマンス監視

Java Lambda関数を可視化することで、サーバーレスアプリケーションで何が起こっているかを把握できます。

スリムレイヤーJavaエージェントのバリエーションを使用すると、Java Lambda関数の可視性を高めることができます。

New Relic Javaエージェント

New Relic Javaエージェントは、専用のサーバーレス モードを通じてインストゥルメントされたAWS Lambda関数をサポートします。 Lambda関数内で実行される場合、エージェントは環境を自動的に検出し、Lambda呼び出しの短命でイベント駆動型の性質に最適化されたこのモードに切り替わります。

重要

Javaエージェントのサーバーレスモードには、Java 17以降が必要です。Java 11以前のランタイムは、初期起動時間が長くなるためサポートされていません。

使い方

サーバーレスモードでは、エージェントは標準の定期的なデータ収集とHTTPトランスポートを、呼び出しごとのモデルに置き換えます。

  1. Lambda関数が呼び出されると、エージェントはコードが実行される前にハンドラーをインターセプトします。
  2. 呼び出し時にはトランザクションが自動的に作成され、Lambda ARN、リクエストID、コールドスタートかどうかなどのコンテキストが記録されます。
  3. イベント ペイロードが認識されると (APIゲートウェイや SQS イベントなど)、エージェントはイベント ソースのメタデータを抽出し、その場を Web または非ウェブサイトとして分類し、関連するプロパティを追加します。
  4. 現場が終了すると、エージェントはバッファリングされたすべてのテレメトリーを収集し、それを圧縮された Base64 エンコードされたペイロードとして/tmp/newrelic-telemetryに書き込み、プレーンな JSON として stdout に書き込みます。
  5. New Relic Lambda拡張機能(レイヤーにバンドルされています)は、テレメトリーファイルを読み込み、呼び出しごとにデータをNew Relicに転送します。

Lambda層

Javaエージェント向けに、2種類のLambdaレイヤーバリアントが公開されています。

  • フルエージェント層: すべての計装モジュールが有効になります。 すぐに使える最大限の可視性を提供しますが、自動インストゥルメンテーションのフルセットにより、コールド スタートのオーバーヘッドが高くなります。
  • Slimレイヤー (推奨) : aws-lambda-java-coreモジュールを除くすべての自動インストゥルメンテーションを無効にします。 つまり、 RequestHandlerまたはRequestStreamHandler実装するJava Lambdaハンドラーは自動的にインストゥルメントされ、すぐにテレメトリーの出力を開始しますが、他の計装 (AWS SDK 呼び出し、HTTP クライアントなど) は、明示的にオプトインしない限り無効になります。 これはほとんどのお客様にとって推奨される出発点です。

レイヤーARN

以下のARNはus-east-1領域用です。us-east-1 AWSリージョンに置き換えてください。レイヤーバージョンは1から始まり、新しいリリースごとに増加します。最新バージョンについては、 New Relicのレイヤーリストを参照してください。

レイヤーバリアント

アーキテクチャー

ARN

Slim (推奨)

x86_64

arn:aws:lambda:us-east-1:451483290750:layer:NewRelicAgentJava-slim:1

Slim (推奨)

ARM64

arn:aws:lambda:us-east-1:451483290750:layer:NewRelicAgentJavaARM64-slim:1

満杯

x86_64

arn:aws:lambda:us-east-1:451483290750:layer:NewRelicAgentJava:1

満杯

ARM64

arn:aws:lambda:us-east-1:451483290750:layer:NewRelicAgentJavaARM64:1

インストレーションの手順については、 「Layered 計装」を参照してください。

どちらのレイヤーを使用する場合でも、エージェントが呼び出しをインターセプトできるように、Lambda関数のハンドラーを以下のラッパー値のいずれかに設定してください。

  • RequestHandler 実装: com.newrelic.java.HandlerWrapper::handleRequest
  • RequestStreamHandler 実装: com.newrelic.java.HandlerWrapper::handleStreamsRequest

自動検出

環境変数AWS_LAMBDA_FUNCTION_NAMEが存在する場合、エージェントは自動的にサーバーレスモードを有効にします。Lambdaレイヤーを使用する場合、明示的な設定は必要ありません。Serverlessモードは常に有効になっており、上書きすることはできません。

構成

Lambdaレイヤーには、以下の環境変数が事前に設定されています。

環境変数

レイヤーデフォルト

説明

NEW_RELIC_SERVERLESS_MODE_ENABLED

true

サーバーレスモードを有効にします。レイヤーがまだ定義していない場合は、

true

に設定します。

NEW_RELIC_LOG_FILE_PATH

/tmp/logs

デフォルトでは、Javaエージェントのログファイルパスは次のように設定されます。

/tmp/logs/newrelic_agent.log

NEW_RELIC_APP_NAME

lambda-function

エージェントが使用するデフォルトのアプリケーション名。レイヤーによって設定されない場合は、レイヤーによって設定されます。この値は、Lambda関数のNew Relic UIでは使用されません。

NEW_RELIC_APPLICATION_LOGGING_FORWARDING_ENABLED

false

エージェント内ログ転送を無効にします。レイヤーによって設定されない場合は、レイヤーによって設定されます。ログはCloudWatchまたはLambda拡張機能を介して取得されます。

NEW_RELIC_ENABLE_AUTO_APP_NAMING

false

レイヤーによって常に

false

に設定されます。エージェントがトランザクションデータに基づいてアプリケーション名を上書きすることを防止します。

以下の環境変数は必須であり、ユーザー自身が設定する必要があります。

環境変数

必要値

説明

AWS_LAMBDA_EXEC_WRAPPER

/opt/newrelic-java-handler

AWS Lambda New Relic Javaエージェントラッパーを指すようにします。 Javaエージェントレイヤーを使用する場合は、これを常に

/opt/newrelic-java-handler

に設定する必要があります。

NEW_RELIC_LICENSE_KEY

あなたのNew Relicライセンスキー

New Relicは、 New Relicに送信されたテレメトリーを認証するために使用されるライセンスキーを取り込みます。

NEW_RELIC_TRUSTED_ACCOUNT_KEY

NewRelicアカウントID

ディストリビューティッド(分散)トレーシングのNew Relic Lambda拡張機能で必要です。 ここにNew Relicの親アカウントID、または親アカウントがない場合はアカウントIDを設定してください。

重要

デフォルトでは、Lambda拡張機能またはCloudWatchがログをキャプチャします。エージェントはログを直接転送しません。

Cold starts

エージェントは、最初の呼び出し時に設定される静的フラグを使用してcold startsを追跡します。cold start呼び出し時に、 aws.lambda.coldStart=true属性がトランザクションに追加されます。この属性は、ウォーム呼び出しでは省略されます。falseに設定されていません。

重要

Cold start時間: Javaエージェントを追加すると、エージェントを使用しない関数と比較して、 cold start時間が約 4,000 ~ 6,200 ミリ秒増加します。 これは最初の呼び出しにのみ影響します。ウォームインボイスは影響を受けません。スリムレイヤーは、起動時に読み込む監視モジュールの数を減らすことで、この問題を軽減します。

cold startパフォーマンスを向上させるには、タイムアウト値とメモリ割り当てを増やし、プロビジョニングされた同時実行性を使用します。

テレメトリーを収集しました

サーバーレス モードでは、 Javaエージェントは呼び出し中に次のテレメトリー タイプを収集してバッファリングします。

  • トランザクショントレース
  • エラーイベントとトレースされたエラー(スタックトレース付き)
  • スパンイベント(ディストリビューティッド(分散)トレーディング用)
  • トランザクション(分析)イベント
  • カスタムイベント
  • ログイベント (デフォルトでは CloudWatch 経由)
  • パフォーマンスメトリクス

収集されたすべてのデータは単一のNR_LAMBDA_MONITORINGペイロードとして書き込まれ、呼び出し完了後にNew Relicに転送されます。

制限

  • Java 17以降のみ対応。Java 11以前のバージョンはサポートされていません。
  • サーバーレスモードでは、スレッドプロファイリングは利用できません。
  • サーバーレスモードでは、JFR(Java Flight Recorder)による監視は無効になっています。
  • JAR コレクター (モジュール スキャン) はサーバーレス モードでは無効になります。
Copyright © 2026 New Relic株式会社。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.