これは、 NewRelicのAWSLambdaモニタリングを有効 にするための最初のステップです。
AWS アカウントを New Relic にリンクさせると、New Relic に AWS アカウントのインベントリを作成したり、Lambda 関数の CloudWatch メトリクスを収集したりする権限が与えられます。AWSアカウントのリソースは、 エクスプローラー にエンティティとして表示され、設定情報が表示されます。
Lambdaサーバーレス関数モニタリングが機能するには、 APIポーリング またはメトリックストリーム の統合が必要です。このアカウントのリンクを開始する前に、統合の選択を設定するか、CLIにAPIポーリング統合をインストールさせることができます。
AWSのパーミッションの詳細 このインベントリを作成するには、少なくともこれらのIAM権限を付与するIAMロールが必要です。
"cloudwatch:GetMetricStatistics"
"cloudwatch:GetMetricData"
"lambda:GetAccountSettings"
"lambda:ListEventSourceMappings"
デフォルトでは、AWSマネージドポリシーReadOnlyAccess
を使用します。これにより、インフラストラクチャー統合は、Lambda関数とCloudWatchメトリクスだけでなく、アカウント内のすべてのリソースを確認できます。 New Relicはこのデフォルトを推奨していますが、一部の組織ではサードパーティの統合に対して非常に保守的なセキュリティ体制がとられていることを理解しています。 Lambdaテレメトリ収集を許可するには、上記の権限を持つ役割で十分ですが、他のサービスと相互作用するトレースはうまく機能しない場合があります。
また、この統合ステップでは、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 アドオンロール を持っている必要があります。 A ユーザーキー . IAMリソース、マネージドシークレット、Lambdasを作成するパーミッションを持つAWSアカウント。また、CloudFormationスタックやS3バケットを作成するための権限も必要です。 CLIユーザーのAWSパーミッションの詳細 CLIはAWS SDKを使用してAWSと対話します。このSDKは、AWS CLIと同じデフォルト・プロファイルを使用して動作します。このプロファイルは、CLIを実行するために、少なくとも以下のAWSパーミッションが必要です。
"Sid": "CLIAccessPolicy",
"cloudformation:CreateChangeSet",
"cloudformation:CreateStack",
"cloudformation:DescribeStacks",
"cloudformation:ExecuteChangeSets",
"logs:DeleteSubscriptionFilter",
"logs:DescribeSubscriptionFilters",
"logs:PutSubscriptionFilter",
"serverlessrepo:CreateCloudFormationChangeSet",
"secretsmanager:CreateSecret"
"Sid": "NRLogAccessPolicy",
"serverlessrepo:CreateCloudFormationTemplate",
"serverlessrepo:GetCloudFormationTemplate"
"Resource": "arn:aws:serverlessrepo:us-east-1:463657938898:applications/NewRelic-log-ingestion"
CLIとの統合 Lambdaサーバーレス関数のモニタリングにはAPIポーリング またはメトリックストリーム の統合が必要なため、統合が検出されない場合、CLIはAPIポーリングを自動的にインストールします。メトリックストリームが必要な場合は、CLIを実行する前に今すぐインストールしてください。
要件 がすべて揃ったら、 ユーザーキー を使って以下のコマンドを実行し、AWS アカウントと New Relic アカウントをリンクさせます( ハイライトされた の値はすべて置き換えてください)。
AWSのリージョンとプロファイル 地域の設定 地域を設定するには、この 環境変数 を使って、デフォルトの地域を上書きします。
export AWS_DEFAULT_REGION=MY_REGION # us-west-2, for example
CLIツールでは、 --aws-region
を使用してこのコマンドごとに渡すこともできます。
プロファイルの設定
複数のAWSプロファイルがあり、デフォルトを使用したくない場合は、 AWS_PROFILE
環境変数 を使用して別のプロファイル名を設定します。プロファイルが適切に構成されていることを確認します(デフォルトのリージョンを含む)。例:
export AWS_PROFILE=MY_PROFILE
newrelic-lambda
CLIは、セキュリティを強化するために、 AWSSecretManagerのシークレット としてNewRelicライセンスキーを追加します。
ヒント AWS Secrets ManagerにNew Relicのライセンスキーを保存する
New Relic ライセンスキー は、お客様を識別し、New Relic を認証するもので、お客様の遠隔測定をお客様の New Relic アカウントと関連付けることができます。遠隔測定を送信する各機能は、この値にアクセスする必要があり、安全に管理する必要があります。これらの問題を解決するのが AWS Secrets Manager です。
組織の都合でAWS Secrets Managerを使用できない場合や、リージョンごとに複数のシークレットを保存する必要がある場合は、ライセンスキーを設定する別の方法として、以下を参照してください。
代替方法 アカウントを手動でリンクする インフラ監視UICLIは、アカウントをリンクするための最も複雑でない方法です。現在のCLIの動作では、リージョンごとに1つのマネージドシークレットのセットアップが制限されています。より多くの制御が必要な場合や、リージョンごとに複数の New Relic アカウントを統合する必要がある場合は、 リンクプロセス を手動で行うことができます。監視対象のサービスを選択する際には、必ずLambdaを有効にしてください。
次に説明するように、ライセンスキーの秘密を手動で設定することを忘れないでください。
ライセンス・キー・シークレットを手動で設定するアカウントのリンクに加えて、ライセンスキーのシークレットを設定する必要があります。
このCloudFormationテンプレートのダウンロード: license-key-secret.yaml
AWSCLIまたはAWSCloudFormationConsoleを使用して、 LicenseKey
パラメーターを指定してテンプレートをインストールします。 NewRelicのライセンスキーはここにあります 。 「INGEST--LICENSE」というラベルが付けられます。上記のインフラストラクチャUIで構成したアカウントのライセンスキーを必ず使用してください。
AWS CLIの例です。
YOUR_LICENSE_KEY
とYOUR_ACCOUNT_ID
は、必ず上記で見つけたライセンスキーとアカウントIDに置き換えてください。
aws cloudformation create-stack --stack-name NewRelicLicenseKeySecret
--template-body file://license-key-secret.yaml
--parameters 'ParameterKey=LicenseKey,ParameterValue=YOUR_LICENSE_KEY'
'ParameterKey=NrAccountId,ParameterValue=YOUR_ACCOUNT_ID'
--capabilities CAPABILITY_NAMED_IAM
アカウントを手動でインストルメントする方法については、 レガシードキュメントもご覧ください 。
ラムダの環境変数 参考までに、これらはモジュールの動作を設定・制御するために利用可能な環境変数です。
必須 :
環境変数
説明
NEW_RELIC_ACCOUNT_ID
分散型トレーシングに必要です。
NEW_RELIC_LAMBDA_HANDLER
Node、Python、Javaは必須。
NEW_RELIC_TRUSTED_ACCOUNT_KEY
分散型トレーシングに必要です。これは、あなたのアカウントのIDです。あなたのアカウントが子アカウントの場合、これはルート/親アカウントのアカウントIDです。
任意の :
環境変数
説明
NEW_RELIC_DISTRIBUTED_TRACING_ENABLED
従来のセットアップで 使用されます。ほとんどのエージェントのデフォルトではTRUE
。
NEW_RELIC_EXTENSION_LOG_LEVEL
デバッグログを有効にするには、 DEBUG
に設定します。
NEW_RELIC_EXTENSION_SEND_FUNCTION_LOGS
FALSE
デフォルトでは。 CloudWatchとnewrelic-log-ingestion
Lambdaをバイパスして、関数ログをNew Relicに直接送信するには、 TRUE
に設定します。
NEW_RELIC_LAMBDA_EXTENSION_ENABLED
FALSEに設定すると、拡張機能が無効になり、CloudWatchのテレメトリーパスが使用されます。
NEW_RELIC_LICENSE_KEY
/ NEW_RELIC_LICENSE_KEY_SECRET
ライセンスキーはNewRelicアカウントに関連付けられていますが、シークレットはライセンスキーを含むAWSマネージドシークレットの名前です。 NEW_RELIC_LICENSE_KEY
が設定されていない場合は、 NEW_RELIC_LICENSE_KEY_SECRET
でキーを探します。キーの内容が正しくフォーマットされていることを確認するには、 CLI を使用してラムダモニタリングを有効にすることをお勧めします。
詳細はこちら ライセンスキー 。
トラブルシューティング AWSのシークレットマネージャーが使えない 組織がAWSSecretsManagerの使用を許可していない場合、New RelicLambdaExtensionはNEW_RELIC_LICENSE_KEY
環境変数を受け入れます。 newrelic-lambda integrations install
コマンドから--disable-license-key-secret
フラグを追加します。次に、この環境変数をLambda関数構成のNewRelicライセンスキー に設定します。
複数のAWSリージョンとアカウント newrelic-lambda
CLIは、 --aws-region
パラメーターを使用してリージョンごとに1回実行する必要があります。同じリンクされたアカウント名を使用すると、ツールはアカウントリンクがすでに作成されていることを検出します。ライセンスキーシークレットは、各リージョンで作成する必要があります。
同様に、複数のAWSアカウントをNewRelicアカウントにリンクできます。各アカウントに異なるリンクされたアカウント名を付けます。 CLIツールの--aws-profile
引数は、名前付きプロファイルを選択します。このツールは、AWSCLIと同じ設定を使用します。
ライセンスキーの取得に失敗しました AccessDeniedException
ラムダコードには、AWSSecretsManagerを読み取る権限を持つ実行ロールが必要です。次のようなログが見つかった場合は、実行ロールのポリシーに適切な権限を追加してください。この例では、 template.yaml
ファイルをチェックして、この権限を付与する簡単な方法を確認してください。
Failed to retrieve license key AccessDeniedException: User: <ARN> is not authorized to perform: secretsmanager:GetSecretValue on resource: <ARN>