NEW_RELIC_APP_NAME New Relicで関数のテレメトリーがどのAPMエンティティの属性として割り当てられるかを制御するLambda環境変数です。設定すると、Lambda関数からのテレメトリーは、デフォルトのLambda関数名ではなく、選択した名前付きAPMエンティティの下に表示されます。
使い方
NEW_RELIC_APM_LAMBDA_MODEがtrueの場合、New Relic Lambda ExtensionはコールドスタートごとにAPMのconnect呼び出しを行います。その呼び出しでは、app_nameとしてNEW_RELIC_APP_NAMEを使用します(設定されていない場合はAWS_LAMBDA_FUNCTION_NAMEにフォールバックします)。APMコレクターは、その名前のエンティティを解決または作成し、そのGUIDを返します。その呼び出し中に生成されたすべてのテレメトリーにはそのGUIDのタグが付けられ、New Relicの指定されたエンティティの下に表示されます。
構成
NEW_RELIC_APP_NAMEをLambda環境変数として設定します。コードの変更は必要ありません — 拡張機能がコールドスタート時に自動的に処理します。
NEW_RELIC_APP_NAME = my-entity-nameサポートされているランタイム
NEW_RELIC_APP_NAME すべてのAPMモードのLambdaランタイムでサポートされています — Python、Node.js、Java、Ruby。.NET、およびGo。
ランタイム | サポート対象 |
|---|---|
Python | はい |
Node.js | はい |
Java | はい |
Ruby | はい |
.NET | はい |
Go | はい |
エンティティの動作
同じNEW_RELIC_APP_NAME値とNew Relicアカウントを共有する関数は、New Relic UIで単一のAPMエンティティにグループ化されます。
設定した名前が既存のAPMエンティティ(たとえば、非Lambdaサービスによってすでに作成されているものなど)と一致する場合、Lambda関数からのテレメトリーは自動的にそのエンティティにマージされます。別のエンティティは作成されません。
重要
NEW_RELIC_APP_NAMEを変更すると、新しいAPMエンティティが作成されます。以前の名前に関連付けられた履歴データは、新しいエンティティに移行されません。
マルチリージョンレポート
異なるAWSリージョンにデプロイされた複数のLambda関数は、同じNEW_RELIC_APP_NAMEを共有できます。これらの関数はすべて、どのリージョンにデプロイされているかに関係なく、単一のAPMエンティティにレポートします。
グループ化されたエンティティ内の個々の関数やリージョン固有のデプロイメントを区別するには、NRQLでtags.aws.arn属性を使用してフィルタリングするか、エンティティビューのタグフィルターバーを使用します。
クロスランタイムレポート
同じNEW_RELIC_APP_NAMEを共有する異なるランタイム(たとえば、Python関数とNode.js関数)を使用するLambda関数は、個別のAPMエンティティを作成します — ランタイムごとに1つ。グループ化はランタイムの境界を越えません。
Lambda サービスと非 Lambda サービス間で同じアプリ名
Lambda関数とLambda以外のAPMサービス(たとえば、従来のWebアプリケーションやマイクロサービス)の両方が同じNEW_RELIC_APP_NAMEで設定されている場合、それらは同じAPMエンティティにレポートします。
これは意図的な場合があります:Lambdaとサーバーベースのインフラストラクチャの両方で実行されるサービスの統合ビューが必要な場合、名前を共有することで、すべてのテレメトリー — トランザクション、エラー、スループット — を1か所に表示できるようになります。
ただし、意図せずに行われた場合、混乱を招く可能性があります。Lambda関数と非Lambdaサービスからのメトリクス、エラー率、およびスループットが結合されるため、問題を診断したり、パフォーマンスを個別に理解したりすることがより困難になる可能性があります。
エンティティのライフサイクルとタグの有効期限
Lambda関数がレポートを停止しても、そのAPMエンティティはすぐには削除されません。エンティティタグ(aws.arnを含む)は、受信するテレメトリーがない状態が約1~2日続くと期限切れになります。アカウントの保持設定によっては、エンティティ自体がより長く保持される場合があります。
トラブルシューティング
設定後も、テレメトリーは関数名の下に表示されます NEW_RELIC_APP_NAME
- 変数がアプリケーションコード内だけでなく、Lambda環境レベルで設定されていることを確認してください。
- CloudWatchログで
[NR_EXT]APM接続エントリを確認してください —app_nameフィールドにカスタム値が反映されているはずです。 - レイヤー内のNew Relic Lambda Extensionのバージョンがこの機能をサポートしていることを確認してください。
同じ関数に2つの別々のエンティティが存在する
これは、関数がすでにレポートを行っていた後にNEW_RELIC_APP_NAMEが追加または変更された場合に想定される動作です。古いエンティティは履歴データを保持します;新しいテレメトリーはすべて新しいエンティティに送信されます。
同じアプリ名を持つ2つのLambda関数は、別々のエンティティとして表示されます
これは、ランタイムが異なる場合(たとえば、PythonとNode.jsなど)に想定される動作です。同じランタイムと同じNEW_RELIC_APP_NAMEを共有する関数は、1つのエンティティにレポートします。