Lambda関数をOpenTelemetry(OTel)レイヤーで計装すると、環境変数OTEL_SERVICE_NAMEによって、関数のテレメトリーがNew Relicのどのエンティティの属性になるかが制御されます。デフォルトでは、各関数は個別のエンティティとしてレポートします。複数の関数に同じOTEL_SERVICE_NAMEを設定すると、それらすべてのテレメトリーが単一のエンティティの下にグループ化されます。
アプリケーションのコードを変更する必要はありません。OTel Lambdaレイヤーは計装を自動的に処理します — データの送信先を制御する環境変数を設定するだけです。
前提条件
- APIキーを持つNew Relicアカウント。
- New Relic OTel LambdaレイヤーでインストゥルメントされたLambda関数。
OTelエンティティ名を設定します。
OTEL_SERVICE_NAMEをLambda環境変数として設定します:
OTEL_SERVICE_NAME = my-service-nameその関数からのすべてのテレメトリーは、New Relicのmy-service-nameという名前のOTelエンティティの属性になります。その名前のエンティティが存在しない場合は、自動的に作成されます。
重要
OTEL_SERVICE_NAME 永続的ではありません。値を更新して再デプロイすると、関数はその時点から新しいエンティティ名でレポートを開始します。New Relicは以前の履歴を移行しません — 古いエンティティはデータを保持しますが、新しいテレメトリーの受信を停止します。
単一のエンティティの下にLambda関数をグループ化する
2つ以上のLambda関数を単一のOTelエンティティの下にグループ化するには、すべての関数に同じOTEL_SERVICE_NAMEの値を指定します。必要な設定はこれだけです。
# Function A (us-east-1)OTEL_SERVICE_NAME = payment-service
# Function B (eu-west-1)OTEL_SERVICE_NAME = payment-serviceこれで、両方の関数がNew Relicの単一のpayment-serviceエンティティにレポートするようになります。
エンティティの動作
同じOTEL_SERVICE_NAME値とNew Relicアカウントを共有する関数は、New Relic UIで単一のOTelエンティティの下にグループ化されます。
重要
OTEL_SERVICE_NAMEを変更すると、新しいOTelエンティティが作成されます。以前の名前に関連付けられた履歴データは、新しいエンティティには移行されません。
マルチリージョンレポート
異なるAWSリージョンにデプロイされた複数のLambda関数で、同じOTEL_SERVICE_NAMEを共有できます。これらの関数はすべて、デプロイされているリージョンに関係なく、単一のOTelエンティティにレポートします。
グループ化されたエンティティ内の個々の関数やリージョン固有のデプロイメントを区別するには、NRQLでtags.aws.arn属性を使用してフィルタリングするか、エンティティビューのタグフィルターバーを使用します。
クロスランタイムレポート
同じOTEL_SERVICE_NAMEを共有する異なるランタイム(たとえば、Python関数とNode.js関数)を使用するLambda関数は、別々のOTelエンティティを作成します — ランタイムごとに1つ。グループ化はランタイムの境界を越えません。これは想定されるOTelの動作です — エンティティのIDには、サービス名だけでなく言語タイプも含まれます。
エンティティ名の変更
シナリオ | 結果 |
|---|---|
初めて
を設定する | 新しいエンティティが作成されます;テレメトリーはすぐにそこに流れ込みます |
を更新して再デプロイする | 新しい名前で新しいエンティティが作成されます;古いエンティティは履歴を保持しますが、テレメトリーの受信を停止します。 |
削除
| 関数はLambda関数名(
)でのレポートに戻ります |
コレクタープロセッサでfaas.nameを保持します。
注意
faas.name OTelレイヤーによってLambdaに自動入力されます — 破棄(削除または名前変更)しないでください。New Relicはこれを使用して、親(SERVER)スパンをLambda呼び出しとして認識します。これを破棄すると、以下の原因になります:
- 親スパンがメトリクス合成から除外される
- 不完全または不正確なトランザクション数
- エンティティがLambdaエンティティではなく
EXT|SERVICEとして解決されます — group-by機能とcloud.resource_idのタグおよびフィルタリングが機能しなくなります。