まず最初に、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つが考えられます。
- newrelic-log-ingestionが展開されていない
- newrelic-log-ingestionにLog転送する設定ができていない
- 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ファイルを取得していただけます。
- AWSのコンソールで対象のLambda関数を表示
- 画面内の「ダウンロード」を選択
- プルダウンが表示されるので、「AWS SAM ファイルのダウンロード」を選択しダウンロード
サポートケースに関して
New Relicの日本の法人とご契約のお客様は日本語にてサポートケースを起票していただけます。そのため、お気軽に日本語で、お問い合わせ頂ければ幸いでございます。
本ブログに掲載されている見解は著者に所属するものであり、必ずしも New Relic 株式会社の公式見解であるわけではありません。また、本ブログには、外部サイトにアクセスするリンクが含まれる場合があります。それらリンク先の内容について、New Relic がいかなる保証も提供することはありません。