LoginSignup
0
0

More than 1 year has passed since last update.

New Relic Lambda LayerでNode.js 18を計測する

Posted at

結論:exclamation:

  1. New Relic公式ドキュメント、及びnewrelic-lambdaコマンドではNode.js18のサポートされていない。(現時点2023/04)
  2. しかし、Node.18へのLambda Layerを手動追加できるので、その手順を示します。

対象者:family_mmb:

AWS LambdaでNode.js 18を利用しており、New Relic Lambda Layerを使って計測したい方を対象としています。
New Relicを知っていることを前提に、Lambda Layerから解説します。

目次:point_left:

  1. New Relic Lambda Layerとは
  2. newrelic-lambdaコマンドの実装と言語のサポート状況
  3. Node.js 18のLambda Layer手動設定方法の解説
  4. 動作確認

1. New Relic Lambda Layerとは

New Relic Lambda Layerは、AWS Lambdaに可観測性を実装するための手段です。

通常、AWS Lambdaでモニタリングをする場合はCloud Watch Metricsを使って実行回数(invocations)や実行時間(duration)などを把握します。これらに加えてNew Relic Lambda Layerは詳細な持続時間、コールドスタート、例外、トレースバックなどのパフォーマンスデータ計測し、サーバーレスの実態をより理解することができます。

2.newrelic-lambdaコマンドの実装と言語のサポート状況

通常、AWS LambdaへNew Relic Lambda Layer実装するときは、専用のCLIコマンドであるnewrelic-lambdaコマンドを用いて簡単に導入できます。
現時点(2023/04)でサポートされている言語のランタイムは下記の通りです。

スクリーンショット 2023-04-28 1.02.41.png
サポートされているランタイムであれば、すぐにでも導入が可能です。

しかし、本記事の主題であるNodejs18.xなどはドキュメント上サポートされておらず、またnewrelic-lambdaコマンドでもサポートされていないためかインストールできませんでした。その時の結果は下記の通りでした。。

スクリーンショット 2023-04-28 1.24.56.png

「そうか、そうだよな。公式ドキュメントにサポートとして記載のないNode.js18は対応してないよな。」とあきらめかけていたそのとき、

スクリーンショット 2023-04-28 1.12.58.png
※https://layers.newrelic-external.com/

「いや、いや、いや! あるやんけっ!!!」

もしや手動で実装したら動くのでは..?と思い、試してみました。

3.Node.js 18のLambda Layer手動設定方法の解説

0 Roleの設定(secretsmanager:GetSecretValue)

New Relic Lamnda Layerはsecret managerへアクセスするようなので、権限を付与しておきます。

正確に絞っても良いかもしれませんが、今回はサクッとやりたいので、用意されている「SecretsManagerReadWrite」を付与します。
スクリーンショット 2023-04-28 1.58.57.png

1 Lambda Layerのarnをコピーする

先ほどのサイトからNode.js 18用のARNをコピーします。
https://layers.newrelic-external.com/

※東京リージョンのご指定を忘れずに!
スクリーンショット 2023-04-28 1.35.37.png

「Copy to clipboard」でコピーします。
今回は「arn:aws:lambda:ap-northeast-1:451483290750:layer:NewRelicNodeJS18X:23」を使います。

スクリーンショット 2023-04-28 1.36.41.png

2 手動でLambda Layerを追加する

「レイヤーの追加」から追加できます。
スクリーンショット 2023-04-28 1.34.16.png

「ARNを指定」に先ほどのARNをペーストし「検証」をクリック。その後「追加」ボタンで追加しましょう。
スクリーンショット 2023-04-28 1.40.09.png

3 ハンドラー設定の変更

「ランタイム設定」から「編集」で変更します。
スクリーンショット 2023-04-28 1.42.16.png

デフォルトのハンドラーは「index.handler」と設定されていますが、「newrelic-lambda-wrapper.handler」へ変更し「保存」します。

スクリーンショット 2023-04-28 1.43.36.png

4 環境変数の設定

今回は下記のような値を設定していきます。
スクリーンショット 2023-04-28 1.46.03 1.png

NEW_RELIC_ACCOUNT_ID
NEW_RELIC_LAMBDA_HANDLER
NEW_RELIC_LAMBDA_EXTENSION_ENABLED
NEW_RELIC_EXTENSION_SEND_FUNCTION_LOGS
NEW_RELIC_DISTRIBUTED_TRACING_ENABLED

5 Lambdaを実行し、New Relic上で確認する

「invocations」から実行時のトレースデータを参照できます。

スクリーンショット 2023-04-28 2.00.54.png

と、このような流れで、newrelic-lambdaコマンドではなく、手動でインストールし動作を確認してみました。再掲になりますが、公式ドキュメントにNode.js18の要件の記載が無い以上、サポート問い合わせはできなさそうなので、いつかサポートされることをお待ちしております。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0