New Relic Lambdaモニタリングスタック
Lambdaのモニタリングには、いくつかの重要な部分があります。
関数
関数は理解しておくべきコードです。いつエラーが発生するか、なぜ遅いか、どれくらいの頻度で呼び出されるかを把握する必要があるためです。
New RelicエージェントまたはSDK
これは、New Relicが関数が記述する言語に提供するライブラリです。コードの実際のモニタリングは、このタスクで行います。これは、関数呼び出しの期間を測定し、発生したエラーをメモし,ソースイベントの詳細と関数の応答を記録します。これを行うには、Lambda呼び出しハンドラー関数をラップする必要があります。
わずかな手間をかけるだけで、呼び出しをより意味深いセグメントに分割し、関数のインタラクションを他の関数やサービスと結合して、サーバーレスアプリケーションの全体図を提供できます。
New Relic Lambda拡張機能
このサイドカープロセスは、Lambda実行環境内でコードとともに実行されます。エージェントが収集するテレメトリーを強化し、New Relicのバックエンドにバッチで送信します。また、関数のログをNew Relicに送信することもできます。
この拡張機能は、AWS Lambdaライフサイクルと緊密に統合され、New Relicにテレメトリが到着するまでの時間と、インストゥルメンテーションが機能の遅延とスループットに与える影響の両方を最小限に抑えることができる小型のアプリケーションです。
詳しくは、Lambda機能拡張をご覧ください。
New Relicのバックエンド
New Relicサービスはテレメトリーを受信してそれをAwsLambdaInvocation
、AwsLambdaInvocationError
、Span
、およびカスタムイベントに処理し、そのすべてを当社のテレメトリーデータベースNRDBに保存します。
New RelicのLambda UI
Lambdaの関数は、従来のサービスとは大きく異なります。そのため、管理エクスペリエンスも従来のAPMのそれとは異なります。New Relicプラットフォーム内では、Lambdaの関数はカスタムUIを備えており、関数に関する最も重要な情報をすばやく表示し、ログ機能やディストリビューティッド(分散)トレーシング機能と密接に統合します。
NRDBとNRQLによりサポートされているため、関数のカスタムダッシュボードとアラートを作成することもできます。
レガシーのCloudWatchパス
より旧式のインテグレーションでは、テレメトリは若干異なる方法で送信されます。テレメトリーを拡張子に渡す代わりに、エージェントはログラインとしてCloudWatchに書き込みます。
ログサブスクリプションフィルターを追加して、関数ログをaws-log-ingestion
Lambda関数にパイプ接続することで、そのCloudWatchログラインを復元し、他のプラットフォームテレメトリーとともにNew Relicに転送できます。
以前は、このアプローチには大きな欠点がありました。AWS CloudWatchサービスでは、多くのデータを生成できます。無料ティアを利用している場合は、データ制限にすぐに達する可能性があります。データ料金を支払っている場合、このサービスがNew Relicに送信するデータの最大シェアを占めていることに気付くでしょう。