🐕

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

2022/08/22に公開約3,500字

このページについて

Amazon CloudWatch LogsのログをAmazon Kinesis Data Firehoseで、New RelicのLogsに転送する手順をメモしておきます。
以下の記事はAWS Lambdaでしたが、Amazon Kinesis Data Firehoseでも転送可能です。

https://zenn.dev/isseeeeey55/articles/0eb335db136437

New Relic Insert API Key確認

New Relicの API Keys から INGEST - LICENSE を選択します。
Copy key からAPI Keyをコピーできます。

USER タイプのAPIキーではないので注意。

S3作成

Firehoseの配信エラーログ用にS3バケットを作成します。

IAM作成

Firehose用ロール作成

  • ポリシー作成
    Firehoseの配信エラーログ用にS3のポリシーを作成します。
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:ListBucketMultipartUploads",
                "s3:AbortMultipartUpload",
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::is55-test-newrelic/*",
                "arn:aws:s3:::is55-test-newrelic"
            ]
        }
    ]
}

  • ロール作成
    FirehoseにアタッチするためのIAMロールを作成します。
    ポリシーは作成したS3のポリシーをアタッチします。
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "firehose.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

CloudWatch Logs用ロール作成

  • ポリシー作成
    Firehose用のポリシーを作成します。
    今回は firehose:* で作成しています。
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "firehose:ListDeliveryStreams",
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "firehose:*",
            "Resource": "arn:aws:firehose:ap-northeast-1:***************:deliverystream/is55-test-newrelic"
        }
    ]
}

  • ロール作成
    CloudWatch Logsサブスクリプションフィルターを設定する際に使用するIAMロールを作成します。
{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Effect": "Allow",
			"Principal": {
			    "Service": "logs.ap-northeast-1.amazonaws.com"
			},
			"Action": "sts:AssumeRole"
		}
	]
}

Firehose作成

以下の設定でFirehoseのdelivery streamを作成します。

項目 備考
Source Direct PUT
Destination New Relic
HTTP endpoint URL New Relic logs - US https://aws-api.newrelic.com/firehose/v1
API Key 事前に確認した New Relic Insert API Key
Source record backup in Amazon S3 Failed data only 成功ログも格納する場合は All data を選択
S3 backup bucket 事前に作成したS3バケット
Permissions 事前に作成したFirehose用ロール

Destinationには New Relic を選択します。

HTTP endpoint URLでは、New Relicのリージョンで分かれていますが、今回はLogsの US を選択します。

上記設定項目以外は今回はデフォルト値を使用します。

CloudWatch Logs

対象とするロググループのサブスクリプションフィルターから、 Kinesis Firehoseサブスクリプションフィルターを作成 を選択します。

作成したFirehoseやCloudWatch Logs用ロールを選択し、必要なフィルターパターンを作成します。

設定完了。

テスト

該当ロググループにてテスト用のログイベントを作成します。

[TEST] error message test

New Relicコンソールの Logs に飛んでいればOKです。

GitHubで編集を提案

Discussion

ログインするとコメントできます