まず最初に、Lambda関数に計装したAgentが収集したテレメトリデータやLogを送る方法に関して簡単に説明します。

Lamdaへの計装をUIで進めた場合、その途中でテレメトリデータを送る方法でLambda extensionあるいは、CloudWatch Logsを選択しているかともいます。それぞれの大まかな仕組みを以下に記載します。

Lambda extension

Extensionを有効にして計装した場合、お客様のLambda関数から直接New Relic Platformへデータが送られます。そのため、対象のLambda関数からインターネットへアクセスすることができる必要があります。また、データ送信のため実行時間が少し長くなること、Lambdaの実行時間や消費メモリなどCloudWatch LogsにPlatformから自動で出力されるLogが取得できない場合があります。

CloudWatch Logs

Extensionが無効化されている場合、テレメトリデータはCloudWatch Logsに出力されます。別途展開された、newrelic-log-ingestionあるいは、newrelic-log-ingestion-<ランダムな英数字>という名前のLambda関数へLogを転送していただくことで、対象の関数がテレメトリデータを転送します。なお本日時点では、JSON形式のLogの場合、一部期待通りに動作しないようなので、Agentを計装されたLambdaのLog出力形式はデフォルト(TXT形式)のままにしていただく必要があります。

個人的には、実際のテレメトリデータ送信に関する処理の影響がない点などで、CloudWatch Logsを使った方式がおすすめとなります。

トラブルシューティング

計装ができているかを確認する

Lambda計装が終わったがテレメトリデータが送られない。という場合、まずこちらをご参照ください。Extensionが有効になっている場合は、環境変数のNEW_RELIC_EXTENSION_SEND_FUNCTION_LOGSの値をfalseに一旦変更して対象のLambda関数を実行してみてください。

Lambda関数への計装が行えている場合、NR_LAMBDA_MONITORINGという文字列を含むLogが対象のLambda関数のCloudWatch Logsに出力されます。こちらが出力されていない場合、計装が行えていないため、計装方法に問題がないか、再度ご確認ください。確認しても解決しない場合、本ブログの最後に記載の「それでも解決しない場合」をご参照の上、サポートまでお問い合わせください。

newrelic-log-ingestion経由でデータを転送されている場合

※Extension経由でデータを送る場合はこちらは無視してください。

newrelic-log-ingestion経由でテレメトリデータを転送している場合、主な要因として以下の3つが考えられます。

  1. newrelic-log-ingestionが展開されていない
  2. newrelic-log-ingestionにLog転送する設定ができていない
  3. newrelic-log-ingestion自体が正常に動作していない

各詳細について、以下に簡単に説明します。

newrelic-log-ingestionが展開されていない

対象のAWSアカウントにログインしていただき、Lambda関数の一覧に、newrelic-log-ingestionあるいは、newrelic-log-ingestionから始まる関数があるかご確認ください。ない場合は、こちらのページ記載の手順に従い展開してください。

 newrelic-log-ingestionにLog転送する設定ができていない

newrelic-log-ingestionを展開してもそれだけでは、テレメトリデータの転送は行われません。以下のどちらかの対応がされている必要があります。

  • 対象のLambda関数のCloudWatch LogsのLogGroupでサブスクリプションを使ってnewrelic-log-ingestionにLogが転送される設定を行う
  • newrelic-log-ingestionのLambda関数のトリガーにて、対象のLambda関数のLogが転送されるように設定されている

上記をご確認していただき、設定が行われていない場合は、こちらのページの「Create a Lambda trigger」の項目を参照の上、トリガーを追加してください。

newrelic-log-ingestion自体が正常に動作していない

正常に転送ができている場合、newrelic-log-ingestionからのデータ送信に失敗している可能性が考えられます。CloudWatch Logsをご確認いただき、エラーが出力されている場合、そちらをご参考の上、環境設定に問題がないかなどご確認ください。

Extension経由でデータを転送されている場合

Extension経由で送られている場合、NR_EXTが含まれるLogを確認してみてください。こちらの出力されたメッセージをご確認いただき、計装に不足がないか再度確認ください。なお、よくあるトラブルとしては、外部インターネットへの接続が許可されていないというケースがあります。Extensionを利用する場合、対象のLambda関数から直接New Relicへテレメトリデータが送信されます。そのため、外部インターネットへ接続ができる環境かをご確認ください。

それでも解決しない場合

上記ご確認いただいても解決しない場合、確認された内容や計装された具体的な方法および、以下に記載の方法で取得された詳細ログ及び、SAMファイルを添付の上、テクニカルサポートへお問い合わせください。

詳細ログの取得方法

対象のLambda関数に以下の環境変数を設定していただき、実行していただくことで詳細ログを取得していただけます。

環境変数
環境変数NEW_RELIC_LOG stdout
環境変数NEW_RELIC_LOG_ENABLED true
環境変数NEW_RELIC_LOG_LEVEL trace
環境変数NEW_RELIC_EXTENSION_LOGS_ENABLED true
環境変数NEW_RELIC_EXTENSION_LOG_LEVEL trace

SAMファイルの取得方法

以下の手順にてAWSからSAMファイルを取得していただけます。

  1. AWSのコンソールで対象のLambda関数を表示
  2. 画面内の「ダウンロード」を選択
  3. プルダウンが表示されるので、「AWS SAM ファイルのダウンロード」を選択しダウンロード

サポートケースに関して

New Relicの日本の法人とご契約のお客様は日本語にてサポートケースを起票していただけます。そのため、お気軽に日本語で、お問い合わせ頂ければ幸いでございます。