まず最初に、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の日本の法人とご契約のお客様は日本語にてサポートケースを起票していただけます。そのため、お気軽に日本語で、お問い合わせ頂ければ幸いでございます。
Die in diesem Blog geäußerten Ansichten sind die des Autors und spiegeln nicht unbedingt die Ansichten von New Relic wider. Alle vom Autor angebotenen Lösungen sind umgebungsspezifisch und nicht Teil der kommerziellen Lösungen oder des Supports von New Relic. Bitte besuchen Sie uns exklusiv im Explorers Hub (discuss.newrelic.com) für Fragen und Unterstützung zu diesem Blogbeitrag. Dieser Blog kann Links zu Inhalten auf Websites Dritter enthalten. Durch die Bereitstellung solcher Links übernimmt, garantiert, genehmigt oder billigt New Relic die auf diesen Websites verfügbaren Informationen, Ansichten oder Produkte nicht.