これは、 NewRelicのAWSLambdaモニタリングを有効にするための最初のステップです。
AWS アカウントを New Relic にリンクさせると、New Relic に AWS アカウントのインベントリを作成したり、Lambda 関数の CloudWatch メトリクスを収集したりする権限が与えられます。AWSアカウントのリソースは、 エクスプローラー にエンティティとして表示され、設定情報が表示されます。
Lambdaサーバーレス関数モニタリングが機能するには、 APIポーリングまたはメトリックストリームの統合が必要です。このアカウントのリンクを開始する前に、統合の選択を設定するか、CLIにAPIポーリング統合をインストールさせることができます。
この統合ステップでは、New Relic も保存します AWS Secrets Manager サービスで、テレメトリを New Relic アカウントに送信できるようにします。
推奨される方法: newrelic-lambda
CLI
要件
当社のLambdaレイヤーを使ってサーバーレス監視を実現するには、以下のものが必要です。
AWS CLI v2は、
aws configure
を使用してインストールおよび構成されています。Python バージョン3.3以上がインストールされていること。
newrelic-lambdaCLI 。
pip3 install newrelic-lambda-cli
を実行してインストールできます。New Relic のアカウントです。admin ロールを持っているか、 Infrastructure manager アドオンロール を持っている必要があります。
あ
.
IAMリソース、マネージドシークレット、Lambdasを作成するパーミッションを持つAWSアカウント。また、CloudFormationスタックやS3バケットを作成するための権限も必要です。
CLIとの統合
Lambdaサーバーレス関数のモニタリングにはAPIポーリングまたはメトリックストリームの統合が必要なため、統合が検出されない場合、CLIはAPIポーリングを自動的にインストールします。メトリックストリームが必要な場合は、CLIを実行する前に今すぐインストールしてください。
すべての要件が整ったら、ユーザー キーを使用して次のコマンドを実行し、AWS アカウントを New Relic アカウントにリンクします (強調表示された値をすべて置き換えます)。
newrelic-lambda integrations install --nr-account-id YOUR_NR_ACCOUNT_ID \
--nr-api-key YOUR_NEW_RELIC_USER_KEY
newrelic-lambda
CLI は New Relic を追加します セキュリティを強化するために 、AWS Secret Manager のシークレットとして。
ヒント
AWS Secrets ManagerにNew Relicのライセンスキーを保存する
あなたの New Relic に対してユーザーを識別および認証することで、ユーザーのテレメトリを New Relic アカウントに関連付けることができます。 テレメトリを送信する各関数は、この値にアクセスする必要があり、安全に管理する必要があります。AWS Secrets Manager はこれらの問題を解決します。
組織の都合でAWS Secrets Managerを使用できない場合や、リージョンごとに複数のシークレットを保存する必要がある場合は、ライセンスキーを設定する別の方法として、以下を参照してください。
代替方法
このドキュメントはインストールで役立ちましたか。
トラブルシューティング
AWSのシークレットマネージャーが使えない
組織が AWS Secrets Manager の使用を許可していない場合、New Relic Lambda 拡張機能はNEW_RELIC_LICENSE_KEY
環境変数を受け入れます。newrelic-lambda integrations install
コマンドから--disable-license-key-secret
フラグを追加します。次に、この環境変数を Lambda 関数の設定で。
複数のAWSリージョンとアカウント
newrelic-lambda
CLI は、 --aws-region
パラメータを使用してリージョンごとに 1 回実行する必要があります。同じリンクされたアカウント名を使用すると、ツールはアカウント リンクが既に作成されていることを検出します。の シークレットは各リージョンで作成する必要があります。
同様に、複数のAWSアカウントをNewRelicアカウントにリンクできます。各アカウントに異なるリンクされたアカウント名を付けます。 CLIツールの--aws-profile
引数は、名前付きプロファイルを選択します。このツールは、AWSCLIと同じ設定を使用します。
Lambda 関数がインストルメント済みとして表示されない
Lambda 関数を計測しましたが、New Relic のAmazon Web Services -> Lambda functionsセクションに計測済みとして表示されません。
API ポーリングとMetric Streamsの統合の両方を、UI で手動で New Relic アカウントにリンクしました。
1 つの New Relic アカウントで同じ AWS アカウントの 2 つの統合を行うこのシナリオでは、計測されたペイロードが New Relic cloud-collector エンドポイントで計測された Lambda 関数から受信されると、競合状態が発生します。ペイロードは、2 つの統合のいずれかにランダムに割り当てられます。関数エンティティにリンクされていない統合に割り当てられた場合、ペイロードはドロップされ、関数はインストルメント済みとして表示されません。AwsLambdaInvocation
イベントまでの過去 30 日間に少なくとも 1 つのペイロードを受け取った関数のみがインストルメント済みとして表示されます。
FROM AwsLambdaInvocation SELECT count(*) SINCE 30 days ago WHERE entityGuid = 'ENTITY_GUID' LIMIT 1
同じ AWS アカウントに対して 2 つの統合を作成しないようにするには、前述のようにnewrelic-lambda
CLI を使用することをお勧めします。これは、既存の統合を検出して使用するためです。
2 つの統合が既に作成されている場合は、New Relic のInfrastructure > AWSでUnlink this accountをクリックして、保持する 1 つを選択し、もう 1 つをリンク解除します。
ヒント
Metric Streams 統合には、API ポーリング統合のリンクを解除する前に考慮する必要があるいくつかの制限があります。メトリック ストリームの統合に完全にコミットする前に考慮する必要がある、インフラストラクチャ ディメンション メトリック クエリにもいくつかの制限があります。
ライセンスキーの取得に失敗しました AccessDeniedException
ラムダコードには、AWSSecretsManagerを読み取る権限を持つ実行ロールが必要です。次のようなログが見つかった場合は、実行ロールのポリシーに適切な権限を追加してください。この例では、 template.yaml
ファイルをチェックして、この権限を付与する簡単な方法を確認してください。
Failed to retrieve license key AccessDeniedException: User: <ARN> is not authorized to perform: secretsmanager:GetSecretValue on resource: <ARN>