🌊

CloudWatchのログをLambdaでNew Relicに転送する

2022/08/19に公開

このページについて

Amazon CloudWatch LogsのログをAWS Lambdaで、New RelicのLogsに転送する手順をメモしておきます。
New Relicのドキュメントとしてはこちら。

AWS Lambda for sending CloudWatch logs
https://docs.newrelic.com/docs/logs/forward-logs/aws-lambda-sending-cloudwatch-logs/

New Relicライセンスキーを確認

New Relicの API Keys から確認可能です。

AWS Serverless Application Repository

https://serverlessrepo.aws.amazon.com/applications

newrelic-log-ingestion と入力し、 Show apps that create custom IAM roles or resource policies にチェックを入れます。
NewRelic-log-ingestion を選択します。

NewRelic-log-ingestionデプロイ

Deploy

NRLicenseKey に確認したライセンスキーを入力し、NRLoggingEnabledTrue とすることを忘れずに。
デフォルト false なので忘れるとログ飛びません。
(ここで設定を忘れた場合は、後ほどCFnのパラメータを変えて反映させればOK)

このアプリがカスタム IAM ロールとリソースポリシーを作成することを承認します。 にチェックを入れて、デプロイします。

CFnで作成されるため、CFnスタック serverlessrepo-NewRelic-log-ingestion からも確認できます。

Lambda関数 newrelic-log-ingestion が作成されます。

トリガー追加

作成したLambda(newrelic-log-ingestion)から、New Relicに飛ばしたいCloudWatch Logsのロググループを指定する。

テスト用に error というキーワードでフィルター作成してみます。
フィルターパターンについては以下を参照。

https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html

設定後、Lambdaコンソールから確認できます。

また、CloudWatch Logs側のコンソールからも確認できます。
ロググループごとにサブスクリプションフィルターを設定できるのは最大2つまでなので注意。

New Relicにログが転送されるかテスト

該当ロググループでテスト用のログストリームを作成。

アクションログイベントの作成 からフィルターパターンに引っかかるようなログを生成します。

最後に、New Relicコンソールの Logs に飛んでいるか確認します。

NRQLは以下のような形で引っかかります。

SELECT count(*) FROM Log FACET aws.logGroup WHERE aws.accountId ='XXXXXXXXXX' AND message LIKE '%error%' AND aws.logGroup = '/aws/lambda/XXXXXXX'
GitHubで編集を提案
アイレット株式会社

Discussion