- 아직 설정하지 않았다면 Datadog Forwarder Lambda 함수를 설정하세요.
- AWS CLI를 사용하여 CloudWatch Logs에 함수 실행 권한을 부여합니다.
<REGION>
을 Datadog Forwarder Lambda 함수가 포함된 지역으로 바꿉니다.<ACCOUNT_ID>
를 12자리 AWS 계정 ID(대시 제외)로 바꿉니다.
aws lambda add-permission \
--region "<REGION>" \
--function-name "forwarder-function" \
--statement-id "forwarder-function" \
--principal "logs.amazonaws.com" \
--action "lambda:InvokeFunction" \
--source-arn "arn:aws:logs:<REGION>:<ACCOUNT_ID>:log-group:*" \
--source-account "<ACCOUNT_ID>"
- 계정 수준 구독 필터 정책을 만듭니다. 아래 제공된 예제에서는
ERROR
문자열이 포함된 모든 로그 이벤트가 스트리밍되지만 로그 그룹에 있는 LogGroupToExclude1
및 LogGroupToExclude2
이벤트는 제외됩니다.FORWARDER_ARN
을 Datadog Forwarder Lambda 함수의 ARN으로 바꿉니다.
aws logs put-account-policy \
--policy-name "ExamplePolicyLambda" \
--policy-type "SUBSCRIPTION_FILTER_POLICY" \
--policy-document '{"DestinationArn":"<FORWARDER_ARN>", "FilterPattern": "", "Distribution": "Random"}' \
--scope "ALL"
참고: 특정 로그 그룹을 로그 전달에서 제외하려면 명령 참조에 설명된 대로 --selection-criteria
옵션을 사용하세요.
Amazon Data Firehose를 위한 S3 버킷 및 역할 생성
다음 단계에서는 버킷 및 IAM 역할을 만드는 방법을 안내합니다. 이 역할은 Amazon Data Firehose에 전송 실패 시 Amazon S3 버킷에 데이터를 넣을 수 있는 권한을 부여합니다.
- AWS CLI를 사용하여 S3 버킷을 만듭니다. 선택적으로 기존 버킷을 사용할 수 있습니다.
<BUCKET_NAME>
을 S3 버킷의 이름으로 바꿉니다.<REGION>
을 S3 버킷의 리전으로 바꿉니다.
aws s3api create-bucket \
--bucket MY-BUCKET \
--create-bucket-configuration LocationConstraint=<REGION>
- 다음 구문을 사용하여
TrustPolicyForFirehose.json
파일을 생성합니다.
{
"Statement": {
"Effect": "Allow",
"Principal": { "Service": "firehose.amazonaws.com" },
"Action": "sts:AssumeRole"
}
}
- 신뢰 정책 파일을 지정하여 IAM 역할을 생성합니다.
참고: 반환된 Role.Arn 값은 이후 단계에서 사용됩니다.
aws iam create-role \
--role-name FirehosetoS3Role \
--assume-role-policy-document file://./TrustPolicyForFirehose.json
- 다음 구문을 사용하여
PermissionsForFirehose.json
파일을 생성합니다.<BUCKET_NAME>
을 S3 버킷의 이름으로 바꿉니다.
{
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:AbortMultipartUpload",
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:PutObject" ],
"Resource": [
"arn:aws:s3:::<BUCKET_NAME>",
"arn:aws:s3:::<BUCKET_NAME>/*" ]
}
]
}
- 권한 정책을 역할과 연결합니다.
aws iam put-role-policy \
--role-name FirehosetoS3Role \
--policy-name Permissions-Policy-For-Firehose \
--policy-document file://./PermissionsForFirehose.json
Amazon Data Firehose 전송 스트림 생성
다음 단계에서는 Amazon Data Firehose 전송 스트림을 생성하고 구성하는 방법을 안내합니다.
- AWS 콘솔에서 Amazon Data Firehose로 이동합니다.
- Create Firehose stream을 클릭합니다.
- Source 필드에서 로그의 소스을 선택합니다.
- 로그가 Kinesis 데이터 스트림에서 오는 경우
Amazon Kinesis Data Streams
를 선택합니다. - CloudWatch 로그 그룹에서 직접 로그를 가져오는 경우
Direct PUT
을 선택합니다.
- Destination 필드에서
Datadog
를 선택합니다. - Source가
Amazon Kinesis Data Streams
인 경우 *Source settings**에서 Kinesis 데이터 스트림을 선택합니다. - 원하는 경우 Firehose 스트림에 설명이 포함된 이름을 지정합니다.
- Destination settings 섹션에서 Datadog 사이트에 해당하는 Datadog 로그 HTTP 엔드포인트 URL을 선택합니다.
- **Authentication*의 경우 유효한 Datadog API 키가 필요합니다. 둘 중 하나를 사용할 수 있습니다.
- Use API key을 선택하고 API key 필드에 키의 값을 붙여넣습니다.
- Use AWS Secrets Manager을 선택하고 Secret name 드롭다운에서 유효한 Datadog API 키 값이 포함된 비밀번호를 선택합니다.
- Content encoding에 대해
GZIP
을 선택합니다. - 선택적으로 Retry duration, 버퍼 설정을 구성하거나 Parameters(로그에 태그로 첨부됨)를 추가할 수 있습니다.
참고: Datadog 에서는 로그가 한 줄 메시지인 경우 Buffer size를 2
MiB로 설정할 것을 권장합니다. - Backup settings 섹션에서 재시도 기간을 초과하는 실패한 이벤트를 수신할 S3 버킷을 선택합니다.
참고: 전송 스트림으로 전달되지 않은 로그가 Datadog 로 계속 전송되도록 하려면 Datadog Fordwarder Lambda 함수를 이 S3 버킷에서 로그 전달로 설정하세요. - Create Firehose stream을 클릭합니다.
CloudWatch 로그에 대한 역할 생성
다음 단계에서는 CloudWatch 로그에 대한 IAM 역할을 만드는 방법을 안내합니다. 이 역할은 CloudWatch 로그에 Firehose 전송 스트림에 데이터를 넣을 수 있는 권한을 부여합니다.
- 다음 구문을 사용하여
./TrustPolicyForCWL.json
파일을 생성합니다.<ACCOUNT_ID>
을 12자리 AWS 계정 ID(대시 제외)로 바꿉니다.<REGION>
을 CloudWatch 로그의 지역으로 바꿉니다.
{
"Statement": {
"Effect": "Allow",
"Principal": { "Service": "logs.amazonaws.com" },
"Action": "sts:AssumeRole",
"Condition": {
"StringLike": {
"aws:SourceArn": "arn:aws:logs:<REGION>:<ACCOUNT_ID>:*"
}
}
}
}
- 신뢰 정책 파일을 지정하여 IAM 역할을 생성합니다.
aws iam create-role \
--role-name CWLtoKinesisFirehoseRole \
--assume-role-policy-document file://./TrustPolicyForCWL.json
참고: 반환된 Role.Arn 값은 이후 단계에서 사용됩니다.
- 다음 구문을 사용하여
./PermissionsForCWL.json
파일을 생성합니다.<REGION>
을 Datadog 포워더 람다 함수가 포함된 지역으로 바꿉니다.<ACCOUNT_ID>
를 12자리 AWS 계정 ID(대시 제외)로 바꿉니다.<DELIVERY_STREAM_NAME>
을 전송 스트림의 이름으로 바꿉니다.
{
"Statement":[
{
"Effect":"Allow",
"Action":["firehose:PutRecord"],
"Resource":[
"arn:aws:firehose:<REGION>:<ACCOUNT_ID>:deliverystream/<DELIVERY_STREAM_NAME>"]
}
]
}
- 권한 정책을 역할과 연결합니다.
aws iam put-role-policy \
--role-name CWLtoKinesisFirehoseRole \
--policy-name Permissions-Policy-For-CWL \
--policy-document file://./PermissionsForCWL.json
CloudWatch Logs 계정 수준 구독 필터 정책 생성
이 단계를 완료하기 전에 Amazon Data Firehose 전송 스트림이 Active
상태여야 합니다.
- CloudWatch Logs 계정 수준 구독 필터 정책을 만듭니다. 이 정책은 선택한 로그 그룹에서 Amazon Data Firehose 전송 스트림으로 실시간 로그 데이터의 흐름을 즉시 시작합니다:
<POLICY_NAME>
을 구독 필터 정책의 이름으로 바꿉니다.<CLOUDWATCH_LOGS_ROLE>
를 CloudWatch 로그 역할의 ARN으로 바꿉니다.<DELIVERY_STREAM_ARN>
을 Amazon Data Firehose 전송 스트림의 ARN으로 바꿉니다.
aws logs put-account-policy \
--policy-name "<POLICY_NAME>" \
--policy-type "SUBSCRIPTION_FILTER_POLICY" \
--policy-document '{"RoleArn":"<CLOUDWATCH_LOGS_ROLE>", "DestinationArn":"<DELIVERY_STREAM_ARN>", "FilterPattern": "", "Distribution": "Random"}' \
--scope "ALL"
참고: 특정 로그 그룹을 로그 전달에서 제외하려면 명령 참조에 설명된 대로 --selection-criteria
옵션을 사용하세요.