本ブログではServerless Frameworkを使用して、New RelicとLambda関数を統合する手順について紹介します。New Relicを活用したLambdaモニタリングの概要については、ブログ「AWS Lambda関数のパフォーマンスをモニタリングする方法」を参照ください。
イントロダクション
Serverless Frameworkの概要とNew Relicとの統合の利点
Serverless Frameworkは、オープンソースのサーバーレスアプリケーション開発フレームワークであり、AWS Lambdaをはじめとする複数のクラウドプロバイダに対応しています。開発者はServerless Frameworkを使用して、サーバーレスアプリケーションの構築、デプロイ、運用を効率化できます。環境構築やリソース管理を抽象化することで、開発者はアプリケーションのロジックに集中することができます。
New RelicとServerless Frameworkの統合により、アプリケーションのパフォーマンスモニタリングやトラブルシューティングが容易になります。Serverless Frameworkのプラグインを使用して、New RelicとLambda関数を簡単に統合できます。この統合により、New Relicでリアルタイムのメトリクスやログ、トレースデータを一元的にモニタリング・分析できます。
Lambda統合の方法としては、AWS Serverless Application Model(SAM)、Serverless Frameworkといった手段がありますが、SAMとServerless Frameworkの主な違いは、対応しているクラウドプロバイダの範囲です。SAMはAWSのサービスに特化したフレームワークであり、AWS Lambdaや関連リソースの管理に焦点を当てています。一方、Serverless Frameworkはプロバイダに依存しない設計であり、AWS Lambdaだけでなく、Azure Functions、Google Cloud Functionsなどの他のクラウドプロバイダにも対応しています。
New RelicとServerless Frameworkの統合により、クラウドプロバイダに関係なく、統一されたパフォーマンスモニタリングとトラブルシューティングが可能になります。これにより、開発者は環境やリソースに関する懸念を軽減し、アプリケーションの品質向上に集中することができます。
前提条件
- Serverless Frameworkがインストール済み
- Python 3.3以上がインストール済み
- AWS CLI をインストールし設定済み
- New Relic アカウント ID
- New Relic User key
導入手順
Serverless Frameworkを使ってAWS LambdaとNew Relicを統合する手順は効率的で容易です。まず、serverless-newrelic-lambda-layersプラグインをインストールし、serverless.ymlに設定を追加します。次に、それぞれのパラメータを設定し、最後にデプロイコマンドを実行して、Lambda関数とNew Relicを連携させます。これで、サーバーレスアプリケーションのモニタリングと管理が効果的に行えるようになります。
メトリクスデータの統合手順
AWS Metric Streamsを設定することで、AWSからNew Relicへのメトリックデータのリアルタイムストリーミングが可能になります。これにより、AWSリソースのパフォーマンスや使用状況をNew Relicで一元管理できるようになります。
- AWSとの統合(Metric Streams)を設定する
- メニューからInfrastractureを選択
- AWSのタブを開き、Add an AWS accountを選択
- 以下の画面で Use metric streams を選択しガイドに従って設定を実施
ガイドの手順を完了することでAWS Metric Streamsを利用したメトリクスデータの送信を開始します。AWS Metric Streamsの設定の詳細はドキュメントを参照ください。
- AWSアカウントをNew Relicにリンクする
- AWSアカウントとNew Relicのリンクには、New Relic Lambda CLIを使用するため、以下のコマンドを実行してインストールします。
pip3 install newrelic-lambda-cli
- 次にNew Relic Lambda CLIのintegrationsコマンドを実行してIAMロールやシークレットキーの設定等を行います。CLIの詳細はドキュメントを参照ください。
newrelic-lambda integrations install \
--nr-account-id <new-relic-account-id> \
--nr-api-key <new-relic-personal-api-key>
<new-relic-account-id>、<new-relic-personal-api-key>には適切な値を設定してください。
上記の設定方法により、New RelicでAWS Lambdaのメトリクスデータをモニタリングするための設定が完了します。New RelicでLambda関数のメトリクスデータを確認できるようになります。
トレースデータの統合手順
-
Serverless Frameworkプロジェクトのセットアップ
まず、新しいServerless Frameworkプロジェクトを作成するか、既存のプロジェクトに移動します。 -
プラグインのインストール
serverless-newrelic-lambda-layersプラグインをインストールします。プロジェクトのルートディレクトリで次のコマンドを実行してください。
npm install --save-dev serverless-newrelic-lambda-layers
もしくは、
yarn add --dev serverless-newrelic-lambda-layers
- serverless.ymlファイルの編集
プロジェクトのserverless.ymlファイルを開き、以下の設定を追加します。
# プラグインの追加
plugins:
- serverless-newrelic-lambda-layers
# New Relicの設定
custom:
newRelic:
# New RelicアカウントID
accountId: <your-new-relic-account-id>
# New RelicパーソナルAPIキー
apiKey: <your-new-relic-personal-api-key>
<your-new-relic-account-id>、<your-new-relic-personal-api-key>を適切な値に置き換えてください。
- デプロイ
プロジェクトをデプロイすることで、設定が適用されます。デプロイは以下のコマンドで実行できます。
serverless deploy
上記の設定方法により、Serverless Frameworkを使ってNew RelicでAWS Lambdaをモニタリングするための設定が完了します。デプロイ後、New RelicでLambda関数のトレースデータを確認できるようになります。
ログデータの統合手順(Lambda Extensionの利用)
サーバーレスアプリケーションのログ管理に焦点を当てます。Serverless Frameworkを用いたLambda拡張を使用してログデータをモニタリングする設定手順を紹介します。CloudWatch Logsを使ったログデータの統合も選択可能です。ログ活用の目的やポリシーに合わせて適切な方法を選択してください。
- serverless-newrelic-lambda-layersプラグインをインストールします(前述の手順で既にインストール済みの場合はスキップしてください)。
npm install --save-dev serverless-newrelic-lambda-layers
もしくは、
yarn add --dev serverless-newrelic-lambda-layers
- プロジェクトのserverless.ymlファイルを開き、以下の設定を追加します。
# プラグインの追加
plugins:
- serverless-newrelic-lambda-layers
# New Relicの設定
custom:
newRelic:
# New RelicアカウントID
accountId: <your-new-relic-account-id>
# New RelicパーソナルAPIキー
apiKey: <your-new-relic-personal-api-key>
# 拡張機能によるログ転送を有効化
enableFunctionLogs : true
LambdaのExtension経由でログを送信する場合は、enableFunctionLogsという属性をtrueに設定する必要があります。
- デプロイ
プロジェクトをデプロイすることで、設定が適用されます。デプロイは以下のコマンドで実行できます。
serverless deploy
デプロイ後、New RelicでLambda関数のログデータを確認できるようになります。
セットアップの確認
設定が正しく行われているか確認するために、以下の手順でNew Relic上のデータを確認します。
- AWS Lambda関数を何らかの形でトリガーし、データがNew Relicに送信されるようにします。例えば、API Gatewayを使用して関数をトリガーすることができます。
- New Relicのアカウントにログインします。
- メニューから「Serverless」を選択し、「Lambda functions」の一覧から対象のアプリケーションをクリックします。メニューに「Serverless」がない場合は「All Capabilities」から「Serverless」を選択してください。
メトリクスデータの確認手順
- 「Monitoring」の「CloudWatch metrics」を選択します。
- メトリクスデータが表示されていることを確認します。
トレースデータの確認手順
- 「Monitoring」の「Distributed Tracing」または「Events」の「Invocations」を選択します。
- トレースデータが表示されていることを確認します。
ログデータの確認手順
- 「Monitoring」の「Logs」を選択します。
- ログデータが表示されていることを確認します。
まとめ
Serverless Frameworkを使用することで、CI/CDパイプラインに簡単に組み込むことができます。プラグインやテンプレートを活用してアプリケーションのデプロイ時に自動的にNew RelicとLambda関数が統合され、継続的デリバリーを効率的に進めることができます。New Relicを組み込んだCI/CDパイプラインにより、デプロイされるアプリケーションのパフォーマンス指標やログ、トレースデータがリアルタイムで収集・分析されます。これにより、開発チームはデプロイやリリースの品質を向上させ、アプリケーションの問題を迅速に特定できます。
また、New Relicを利用することで、CI/CDプロセス内でのパフォーマンスの低下やリソース消費の増加などの問題を発見し、適切な対策を講じることができます。これにより、アプリケーションのリリースサイクルが短縮され、迅速なフィードバックと継続的な改善が実現されます。Serverless FrameworkとNew Relicの統合は、サーバーレスアプリケーションの開発・運用を効率化し、CI/CDプロセスの可視化・自動化を強化します。これにより、迅速なデリバリーと高品質なアプリケーションを実現することが可能になります。
次のステップ
New RelicのChange Trackingはデプロイイベントの情報を連携することでサーバーレスアプリケーションのデプロイイベントとパフォーマンスの関連性を効果的に把握し、運用上の課題や最適化のポイントを特定しやすくなります。これにより、デプロイメントの影響を正確に把握し、問題が発生した場合の原因特定と対応が迅速に行えます。
本ブログに掲載されている見解は著者に所属するものであり、必ずしも New Relic 株式会社の公式見解であるわけではありません。また、本ブログには、外部サイトにアクセスするリンクが含まれる場合があります。それらリンク先の内容について、New Relic がいかなる保証も提供することはありません。