• EnglishEspañol日本語한국어Português
  • ログイン今すぐ開始

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

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

問題を作成する

AWS Lambda監視の概要

組織がAWS Lambdaを使用して Function-as-a-Service (FaaS) アーキテクチャに移行すると、シームレスで効率的なユーザーエクスペリエンスを実現するために、関数のパフォーマンスを理解して最適化することが重要になります。 各 Lambda 呼び出しは、潜在的なボトルネックまたは改善の機会を表します。

New RelicのAWS Lambda向けインストゥルメンテーションは、関数の内部動作を詳細に可視化します。 関数に New Relic エージェントを追加すると、関数が呼び出されるたびに New Relic も呼び出されます。 期間、コールド スタート、例外、トレースバックなどの主要なパフォーマンス メトリックをインサイトで取得できます。

このドキュメントでは、 New Relicの Lambda 監視アーキテクチャについて説明し、 AWSとNew Relicアカウントをリンクする手順を説明します。 機能を利用する前にアカウントをリンクする必要があります。

Lambda インストゥルメンテーションの仕組み

これらは、 を使用したAWS Lambda インストゥルメンテーションの重要な要素です。New Relic

  • あなたの関数: あなたの関数はあなたが理解したいコードです。 いつエラーが発生したのか、なぜ遅いのか、どのくらいの頻度で呼び出されるのかを知りたいのです。
  • New Relicエージェントまたは SDK : 関数が記述されている言語に応じて、 New Relic異なるエージェントまたは SDK を提供します。 その役割は、実際にコードを監視することです。 関数呼び出しの継続時間を測定し、発生したエラーを記録し、ソース イベントの詳細と関数の応答を記録します。 これを行うには、Lambda 呼び出しハンドラー関数をラップする必要があります。
  • New Relic Lambda 拡張機能: 関数にNew Relic Lambda 拡張機能を組み込むと、コードと一緒に Lambda 実行環境内で実行されます。 エージェントが収集したテレメトリを強化し、 New Relicのバックエンドにバッチで送信します。 関数のログを New Relic に送信することもできます。 New Relicで関数を監視するために Lambda 拡張機能は必要ありません。

配送方法を選択してください

New Relic AWS Lambdaテレメトリを出荷する方法は 3 つあります。 どの配送方法を選択するかは、データのニーズによって異なります。

  • コスト: AWS Lambdaで計画する最もコスト効率の高い方法は、Lambda 拡張機能を含むいずれかのレイヤーを使用することです。 デフォルトでは、拡張機能は AWS CloudWatch にデータを送信しません。
  • 信頼性: データは CloudWatch 経由でのみ送信できます。 これを行うには、New Relic Lambda 拡張機能を無効にします。 つまり、Lambda 関数は軽量になり、呼び出されたときに実行される追加のプロセスがなくなります。 この場合、ログとペイロードは拡張機能ではなく CloudWatch を通じて New Relic に送信されます。
  • 両方の長所を活かす: AWS CloudWatch をフォールバックとして拡張機能と併用すると、コストを抑えながら、拡張機能に問題が発生した場合にフェイルセーフを提供できます。

インストゥルメント ドキュメントの各メソッドを使用して Lambda 関数を計算 する方法を説明します。

あなたが始める前に

Lambda レイヤーを使用してサーバーレス監視を有効にする前に、次のものが必要です。

  1. 管理者ロールまたはインフラストラクチャ マネージャーアドオン ロールを持つ New Relic アカウント。

  2. IAMリソース、マネージドシークレット、Lambdasを作成するパーミッションを持つAWSアカウント。また、CloudFormationスタックやS3バケットを作成するための権限も必要です。

次に、以下の手順を完了する必要があります。

  1. aws configureを使用してAWS CLI v2構成をインストールします。 AWS アクセスキー ID と AWS シークレットアクセスキーが必要になります。

  2. Pythonバージョン 3.3 以降をインストールします。

  3. newrelic-lambda CLIをインストールします。 インストールするには、以下を実行します。

    bash
    $
    pip3 install newrelic-lambda-cli
  4. デフォルトでは、AWS 管理ポリシーReadOnlyAccessを使用します。 これにより、インフラストラクチャ インテグレーションは、Lambda 関数と CloudWatch メトリックだけでなく、アカウント内のすべてのリソースを確認できるようになります。 New Relicではこのデフォルトを推奨していますが、サードパーティのインテグレーションに対して厳格なセキュリティ体制を好む組織もあることを理解しています。 New Relic のアクセスを制限する場合は、IAM ロールに最低限以下の権限を付与できます。

Resource: "*"
Action:
- "cloudwatch:GetMetricStatistics"
- "cloudwatch:ListMetrics"
- "cloudwatch:GetMetricData"
- "lambda:GetAccountSettings"
- "lambda:ListFunctions"
- "lambda:ListAliases"
- "lambda:ListTags"
- "lambda:ListEventSourceMappings"
  1. CLI を実行する前に、AWS で New Relic に最低限以下の権限を付与する必要があります。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CLIAccessPolicy",
"Action": [
"cloudformation:CreateChangeSet",
"cloudformation:CreateStack",
"cloudformation:DescribeStacks",
"cloudformation:ExecuteChangeSet",
"iam:AttachRolePolicy",
"iam:CreateRole",
"iam:GetRole",
"iam:PassRole",
"lambda:AddPermission",
"lambda:CreateFunction",
"lambda:GetFunction",
"logs:DeleteSubscriptionFilter",
"logs:DescribeSubscriptionFilters",
"logs:PutSubscriptionFilter",
"s3:GetObject",
"serverlessrepo:CreateCloudFormationChangeSet",
"secretsmanager:CreateSecret"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Sid": "NRLogAccessPolicy",
"Effect": "Allow",
"Action": [
"serverlessrepo:CreateCloudFormationTemplate",
"serverlessrepo:GetCloudFormationTemplate"
],
"Resource": "arn:aws:serverlessrepo:us-east-1:463657938898:applications/NewRelic-log-ingestion"
}
]
}

CLI について詳しく知りたい場合は、 CLI リポジトリをご覧ください。

以下のランタイムをお勧めします。

  • Node.js: nodejs16.xnodejs18.xnodejs20.x
  • Python: python3.8python3.9python3.10python3.11python3.12
  • 行く: provided.al2
  • Java: java8.al2java11java17
  • Ruby : ruby3.2, ruby3.3
  • .NET: dotnet6dotnet8

コストを考慮する

AWS Lambda のサーバーレス監視を有効にすると、Amazon Web Services の料金が発生する可能性があります。 お客様の Lambda データを当社に報告する newrelic-log-ingestion Lambda 関数はサードパーティサービスとみなされます。このサービスの使用によって発生するAWS料金はお客様の責任となります。

Lambda Extension を使用すると、 New Relicによって収集されたテレメトリに対する CloudWatch ログ取り込み料金を回避できます。

関数を実装する前に、 AWSアカウントをNew Relicにリンクする必要があります。 アカウントをリンクすると、 New RelicにAWSアカウントのインベントリを作成し、Lambda 関数の CloudWatch メトリックを自動的に収集する権限が付与されます。 アカウントをリンクすると、 AWSアカウント内のリソースが エンタープライズ エクスプローラーに エンタープライズ として表示されます。

newrelic-lambda CLI を使用してNew Relicの Lambda レイヤーを実装する

New Relicの Lambda レイヤーを実装するには、以下を実行します。

bash
$
newrelic-lambda integrations install --nr-account-id YOUR_NR_ACCOUNT_ID \
>
--nr-api-key YOUR_NEW_RELIC_USER_KEY

newrelic-lambda CLI は、セキュリティを強化するために、 AWS Secret Managerに New Relic をシークレットとして追加します。

メトリクスストリームをインストールする

New Relic Lambda 関数を監視するには、メトリクス StreamsまたはAPI Polling のいずれかをインストールする必要があります。 メトリクス ストリームの使用をお勧めしますが、CLI を使用してAPIポーリング インテグレーションを自動的にインストールすることもできます。

メトリクス Streams を使用する場合は、CLI を実行する前にインストールしてください。 メトリクス Streams を使用した Connect AWSインテグレーションのドキュメントを使用してインストールできます。

環境変数

CLI を使用してNew Relicの Lambda レイヤーをセットアップすると、環境変数が自動的に構成されます。 デフォルト設定の一部を変更し、監視ニーズに合った環境変数を使用して Lambda 関数を構成することもできます。 ランタイムを選択して、利用可能な環境変数とデフォルト設定の推奨事項を確認してください。

サンプル関数をお試しください

New Relicの Lambda レイヤーをインストゥルメントした後は、サンプル関数を試してみることを強くお勧めします。 これらの実用的な例は、独自のサーバーレス機能を開始するための出発点として使用する必要があります。 これらの例を使用すると、 New Relic Lambda レイヤーやアカウント リンクのテストに慣れることができ、独自のインストゥルメンテーションのリファレンスとしても使用できます。 各例では、権限の追加、ハンドラーをラップするためのランタイム固有の手法、CloudWatch での関数ログ保持の管理などを示します。

Lambda 関数を管理およびデプロイする方法は多数ありますが、この例ではAWS CloudFormation というメカニズムを使用しています。

私たちの例は、New Relic Lambda Extension とともに、このGitHub リポジトリで公開されています。 New Relic がサポートする Lambda ランタイムごとに 1 つあります。

  • Node.js

  • Python

  • Go

  • Java

  • Ruby

  • .NET

    また、ディストリビューティッド(分散)トレーシングの例で、ディストリビューティッド(分散)トレーシングを非自明なサーバーレス アプリケーションに組み込む方法を学ぶこともできます。 これは、Node、Python、 Ruby 、Java 関数を使用して、Lambda 関数を呼び出す可能性のある 2 つの一般的なサービスである SQS と SNS の手動トレース伝播を示しています。

    ヒント

    手動でテストする場合、テレメトリーデータが遅延する可能性があります。 バッファリングされたテレメトリが配信されるように、関数を再度呼び出す前に 7 秒待つことをお勧めします。

トラブルシューティング

Lambda 関数で問題が発生した場合に備えて、一般的なトラブルシューティングのヒントをいくつか示します。

次のステップ

Containerized Lambda functions

Lambda関数をコンテナ化している場合は、ここをクリックして計装してください。

Non-containerized Lambda functions

コンテナ化されていない Lambda 関数がある場合は、ここをクリックして計装してください。

Layerless Lambda functions

レイヤーレスLambda関数をお持ちの場合は、ここをクリックして計装してください。

Copyright © 2024 New Relic株式会社。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.