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

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

問題を作成する

.NETサーバレスへの取り組みAWS lambdaパフォーマンス監視

サーバーレス アプリケーションで何が起こっているかを理解するには、.NET Lambda関数の最も詳細な動作を統合的に可視化することが不可欠です。 この情報により、関数のトラブルシューティングと最適化が可能になり、関数の動作が高速化され、一貫した結果が得られるようになります。

.NET Lambda関数を可視化するには、次の 2 つの分析アプローチから選択できます。

以下のヒントを参考にして、自分に最適なアプローチを決定してください。

機能の比較

次の表は、各アプローチのさまざまな要件と機能の概要を示しています。

New Relic .NET エージェント

OpenTelemetry 向け AWS Distro

コードの変更が必要

いいえ

はい

データ送信用のツールが必要

はい

いいえ

New Relic UIエクスペリエンス

サーバーレス

OpenTelemetry

ディストリビューティッド(分散)トレーシング

はい

部分的

指標

いいえ

はい

トランザクショントレース

はい

該当なし

Transactionイベント

はい

部分的

エラーイベント/スパン

はい

はい

イベントまたはスパンをスパンする

はい

はい

SQL トレース

はい

該当なし

スレッドプロファイリング

いいえ

該当なし

脆弱性管理

いいえ

該当なし

外部通話

はい

部分的

XMLを使用したカスタムインストゥルメンテーション

いいえ

いいえ

APIを使用したカスタムインストゥルメンテーション

はい(エージェント)

はい(OpenTelemetry)

カスタムメトリック

いいえ

はい

カスタムイベント

はい

該当なし

カスタムスパン

はい

はい

カスタムエラー

はい

いいえ

カスタムアトリビュート

はい

はい

ログ

はい

はい

レガシークロスアプリケーショントレース

いいえ

いいえ

情報

コンテキスト内のログは、エージェント内ログ転送ではなく、Lambda 拡張機能または CloudWatch によってキャプチャされます。

New Relic .NET エージェント

エージェント バージョン 10.26.0 以降、 New Relic .NET エージェントはインストゥルメントで扱われたAWS Lambda関数をサポートします。 ほとんどの場合、.NET エージェントはAWS Lambda 関数を自動的に計装します。 エージェントを使用する利点は、ほとんどの場合、Lambda関数を監視するためにコードを変更する必要がないことです。

Lambda関数では、エージェントが「サーバーレスモード」に切り替わり、 New Relicへのデータの直接送信が無効になり、他の機能も無効になります。 New Relic にデータを送信するには、New Relic Lambda Extension (.NET エージェント レイヤーに含まれています) または CloudWatch を使用する必要があります。

ほとんどの Lambda 関数はエージェントによって自動的にインストゥルメントされたため、エージェント NuGet パッケージを使用して Lambda 関数を監視できます。 選択したデプロイメント方法に応じて環境変数を手動で構成する必要があります (導入ガイドを参照)。 ただし、データを に送信するには 、New Relic Lambda Extension または CloudWatch 統合のNew Relic いずれかを設定する必要があります。

自動インストゥルメンテーションは、次のAWS Lambda関数タイプで利用できます (エージェント バージョン 10.29.0 以降)。

  • Amazon.Lambda.AspNetCoreServer.APIGatewayProxyFunction
  • Amazon.Lambda.AspNetCoreServer.APIGatewayHttpApiV2ProxyFunction
  • Amazon.Lambda.AspNetCoreServer.ApplicationLoadBalancerFunction

制限事項:

  • ジェネリック ラムダ メソッドは自動的にはインストゥルメントされません。 ラムダ メソッドがTask<TResponse> MyMethod<TRequest, TResponse>(TRequest, ILambdaContext)などのジェネリック メソッドである場合、.NET エージェントは現在そのメソッドを計算できません。
  • Lambda アノテーション フレームワークは現在サポートされていません。
  • ApiGatewayV2イベントには、ディストリビューティッド(分散)トレーシングに必要な一部のコンテキストがありません。
  • さまざまなAWS SDK 呼び出し (SQS など) のアウトバウンド ディストリビューティッド(分散)トレーシングはサポートされていません。
  • Lambda関数ハンドラーにILambdaContext問題が含まれていない場合、.NET エージェントは Lambda関数に関する期待される情報をすべて収集できません。
  • ネイティブ AOT デプロイメント メソッドで構築された .NET Lambda関数はサポートされていません。

重要

サーバーレス フレームワーク プラグイン.NET Lambda関数のサポートは、サーバーレス プラグインの v5.3.0 から始まります。 v5.3.0より前のバージョンのサーバーレスプラグインを実行している場合は、 v5.3.0 以降にアップグレードすると、.NET Lambda関数が自動的に計装されます。 serverless.yml でexclude ステートメントを使用すると、自動インストゥルメンテーションから関数を除外できます。

AWS Distro for OpenTelemetry (ADOT) Lambda の .NET サポート

OpenTelemetry Lambda インストゥルメンテーション for .NET は、Lambda関数を計測するために使用できる拡張機能とトレースAPIを提供します。 ADOT は、インストールを容易にするためにレイヤーとして利用できます。 ADOT Lambda レイヤーは、AWS OpenTelemetryOpenTelemetryデータを にエクスポートできる コレクター用の DistroNew Relic の縮小バージョンを提供します。このアプローチでは、Serverless UI エクスペリエンスの代わりに、OpenTelemetry UI が使用されます。

この方法では、デプロイメント方法に応じて、初期の手動設定が必要になります。

インストールの詳細については、 「.NET Lambda関数をNew RelicとOpenTelemetryでレースする」を参照してください。