
AWS Fargate のログを New Relic に送信する仕組みをAWS Lambdaで作成してみた
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
New Relicでは、AWSなどのクラウドサービスのデータを収集・可視化し、パフォーマンスの向上、トラブルシューティングの迅速化、システム運用リソースやコストの最適化を図ることができるサービスです。
FargateのログをNew Relicに転送する方法は、主に2つあります
- サイドカー用のFireLensコンテナを追加する
- FargateのログをCloudWatch Logsに出力している場合、CloudWatch LogsのログをNew Relicに転送するAWS Lambda関数を作成する
1.については、こちらの記事通りにすると、実現できます。
今回は、2.の方法をご説明します。
2.の場合、Fargateのログ以外にもCloudWatch Logs のログをNew Relicに転送できることがメリットになります。

構成図は、以下の通りです。

事前準備
- New Relicアカウントの作成
-
Fargateでタスク起動を済み
ライセンスキーの発行
New Relicのコンソール上で、ライセンスキーを発行します。
キーの値をコピーしておきます。

Lambdaを作成
AWS Serverless Application Repositoryを開き、検索窓にnewrelic-log-ingestionと入力し、Show apps that create custom IAM roles or resource policiesにチェックマークを入れます。
NewRelic-log-ingestionをクリックします

[Deploy]をクリックします

Lambdaを作成するパラメータを記入します。最低限入力が必要な値は以下の2つです。
NRLicenseKeyには、先程のライセンスキーを入力しますこのアプリがカスタム IAM ロールとリソースポリシーを作成することを承認します。にチェックをします。
Lambdaの環境変数
Lambdaを作成後、環境変数を修正します。

DEBUG_LOGGING_ENABLED: CloudWatch Logsにデバッグ メッセージを出力するかどうか。- デバッグ ログをオンにする場合
trueを入力します
- デバッグ ログをオンにする場合
INFRA_ENABLED:ログを New Relic Infrastructure に転送するかどうか。- 転送したい場合、
Trueにします。
- 転送したい場合、
LICENSE_KEY:ライセンスキーの値を入力LOGGING_ENABLED::ログを New Relic Logging に転送するかどうか。- 転送したい場合、
Trueにします。
- 転送したい場合、
New Relicにログを転送するためには、LOGGING_ENABLEDは、Trueにする必要がありますので、設定しましょう。
Lambdaのトリガー設定
FargateのログがCloudWatch Logs に出力されたら、LambdaがNew Relicに転送する、Lambdaのトリガーの設定をします。
Lambdaの[トリガーの追加]をクリックします。

トリガー設定は、以下の通りに設定します。
- トリガーのAWSサービス:CloudWatch Logs
- ロググループ:New Relicに転送したいログを選択する
- フィルターの名前:何でもよいです
- フィルターパターン:特定の文字列のログのみを転送します。
- 例えば、エラーログのみを転送したい場合、
Errorを入力します。詳しくはこちら - 全て転送したい場合、記入しなくてよいです。
- 例えば、エラーログのみを転送したい場合、

ログがNew Relicに転送されているか確認
New Relicの[Logs]からログを確認できることを確認します。
トリガー設定以降に、CloudWatch Logs に出力されたログがNew Relicに転送されます。

ログが出力されていますね。
他のロググループも転送したい場合、Lambdaのトリガーを追加すれば、転送できます。






