우메시가
VPC: Amazon Kinesis Firehose를 사용한
Splunk에 로그 플로를 푸시하는 방법을 설명합니다

Umesh_SEA0818

Splunk 헤비 전달자를 설치하여 Amazon Virtual Private Cloud(Amazon VPC) 데이터를 분석하려고 합니다. 처리를 위해 AWS 소스에서 Splunk 클러스터로 데이터를 푸시하고 있는데 여러 단계가 필요합니다. AWS 데이터를 plunk와 통합할 수 있는 더 좋은 방법은 무엇일까요?

헤비 전달자를 사용하는 대신 Splunk의 HEC(HTTP 이벤트 수집기) 및 Amazon Kinesis Data Firehose를 사용하여 데이터 및 애플리케이션 이벤트를 Splunk 클러스터로 보낼 수 있습니다. 그러려면 다음 작업을 수행하십시오.

  1. Data Firehose 전송 스트림 생성
  2. 레코드 변환을 위해 AWS Lambda 구성
  3. VPC 플로우 로그 구성
  4. 스트림에 대한 CloudWatch Logs 구독 생성

시작하기 전 다음 사항을 확인하십시오.

Data Firehose 전송 스트림 생성 시작

1.    전송 스트림을 생성합니다. 소스에서 Direct PUT or other sources(Direct PUT 또는 기타 소스)를 선택합니다.

2.    [Next]를 선택합니다.

AWS Lambda를 사용하여 레코드 변환 구성

1.    레코드 변환을 구성합니다.
참고: Transform source records with AWS Lambda(AWS Lambda를 사용하여 소스 레코드 변환) 아래의 Record transformation(레코드 변환)에 대해 활성을 선택해야 합니다. CloudWatch에서는 압축된 .gzip 파일로 로그를 전송하므로 이 옵션을 활성화해야 합니다. Amazon Kinesiss가 이 파일의 압축을 풀어야 파일을 사용할 수 있습니다.

2.    Lambda 함수에서 새로 생성을 선택합니다.

3.    Choose Lambda blueprint(Lambda 블루프린트 선택) 팝업 창이 나타나면 Lambda blueprint(Lambda 블루프린트)에서 Kinesis Firehose CloudWatch Logs Processor(Kinesis Firehose CloudWatch Logs 프로세서)를 선택합니다.

4.    브라우저에 새로 열리는 탭을 선택하여 새 Lambda 함수를 생성합니다.
Name에 Lamda 함수 이름을 입력합니다.
역할에서 Create a custom role(사용자 지정 역할 생성)을 선택합니다.

5.    브라우저에 새로 열리는 탭을 선택하여 AWS Identity and Access Management(IAM) 역할을 새로 생성합니다.
역할 이름lambda_basic_execution이어야 합니다.

6.    Allow(허용)를 선택하여 역할을 생성하고 Lambda 함수 구성 페이지로 돌아갑니다.

7.    함수 생성을 선택한 후 함수가 생성될 때까지 기다립니다.

8.    제한 시간을 기본값 3초에서 1분으로 늘려 함수의 시간이 초과되지 않도록 합니다.

9.    Save를 선택합니다.

Data Firehose 전송 스트림 생성 완료

1.    Amazon Kinesis 콘솔에 로그인합니다.

2.    탐색 창에서 Data Firehose를 선택합니다.

3.    전송 스트림의 Lambda 함수를 선택합니다.
드롭다운 메뉴에서 새 AWS Lambda 함수 이름을 선택합니다.
대상에서 Splunk를 선택합니다.
전에 만든 HEC 엔드포인트를 포함하여 Splunk HEC 세부 정보를 입력합니다. Splunk HEC 엔드포인트가 유효한 SSL 인증서로 종료되어야 합니다. 일치하는 DNS 호스트 이름을 사용하여 HEC 엔드포인트에 연결합니다. 클러스터 엔드포인트 형식은 https://YOUR-ENDPOINT.splunk.com:8088입니다.
Splunk endpoint type(Splunk 엔드포인트 유형)으로 Raw endpoint(원시 엔드포인트)를 선택하고 인증 토큰을 입력합니다.

4.    [Next]를 선택합니다.

5.    (선택 사항) 기존이 버킷을 선택하거나 새 버킷을 만들어 실패한 이벤트에 대해 S3 백업을 생성합니다. 버퍼 조건, 압축 및 암호화 설정, 전송 스트림 마법사의 오류 로깅 옵션 등의 S3 관련 설정을 구성해야 합니다.

6.    IAM 역할에서 새로 생성을 선택합니다.

7.    탭이 열리면 역할 이름을 입력하고 허용을 선택합니다.

8.    [Next]를 선택합니다.

9.    전송 스트림 생성을 선택합니다.

VPC 플로우 로그 구성

사용할 VPC 플로우 로그가 이미 있으면 다음 단원으로 건너뜁니다.

1.    CloudWatch 콘솔에 로그인합니다.

2.    탐색 창에서 [Logs]를 선택합니다.

3.    작업에서 로그 그룹 생성을 선택합니다.

4.    로그 그룹 이름을 입력합니다.

5.    로그 그룹 생성을 선택합니다.

6.    Amazon VPC 콘솔에 로그인합니다.

7.    탐색 창의 Virtual Private Cloud에서 VPCs를 선택합니다.

8.    콘텐츠 창에서 VPC를 선택합니다.

9.    플로우 로그 보기를 선택합니다.

10.   플로우 로그 생성을 선택합니다.
필터에서 모두를 선택합니다.
대상 로그 그룹으로 방금 만든 로그 그룹을 선택합니다.
IAM 역할에 대해 VPC에서 CloudWatch에 로그를 게시하도록 허용하는 IAM 역할을 선택합니다.
참고:
적합한 IAM 역할이 없으면 IAM 역할 아래의 권한 설정을 선택합니다. 새 IAM 역할 생성을 선택합니다. 기본 설정 선택을 유지합니다. 허용을 선택하여 VPCFlowLogs 역할을 만들고 대상 로그 그룹에 연결합니다.

11.   생성을 선택하여 VPC 플로우 로그를 생성합니다.

12.   로그 그룹에서 전송 스트림으로 향하는 실시간 피드를 설정합니다.
AWS Lambda 지침은 AWS Lambda에 대한 Amazon CloudWatch Logs 액세스를 참조하십시오.
Amazon Elasticsearch Service(Amazon ES) 지침은 CloudWatch Logs 데이터를 Amazon Elasticsearch Service로 스트리밍을 참조하십시오.
다음 지침에 따라 AWS Command Line Interface(AWS CLI)에서 Kinesis Data Firehose에 대해 CloudWatch Logs 구독을 생성합니다.

CloudWatch Logs 구독 생성

1.    CloudWatch에 대한 액세스 권한을 부여하여 올바른 역할 권한으로 Kinesis Data Firehose 스트림을 게시합니다.

2.    AWS CLI에 로그인합니다.

3.    다음 예제 JSON 파일을 사용하여 신뢰 정책(예: TrustPolicyforCWLToFireHose.json)을 생성합니다. YOUR-RESOURCE-REGION을 리소스의 AWS 리전으로 바꿔야 합니다.

{
  "Statement": {
    "Effect": "Allow",
    "Principal": { "Service": "logs.region.amazonaws.com" },
    "Action": "sts:AssumeRole"
  }
}

4.    다음 예제 명령을 사용하여 신뢰 정책의 권한을 가진 역할을 생성합니다.

$ aws iam create-role --role-name CWLtoKinesisFirehoseRole --assume-role-policy-document file://TrustPolicyForCWLToFireHose.json

5.    다음 예제 JSON 파일을 사용하여 IAM 정책(예: PermissionPolicyForCWLToFireHose.json)을 생성합니다. 다음과 같이 바꿉니다.
YOUR-AWS-ACCT-NUM 을 AWS 계정 번호로
YOUR-RESOURCE-REGION을 리소스의 리전으로
FirehoseSplunkDeliveryStream을 스트림 이름으로

{
    "Statement":[
      {
        "Effect":"Allow",
        "Action":["firehose:*"],
        "Resource":["arn:aws:firehose:YOUR-RESOURCE-REGION:YOUR-AWS-ACCT-NUM:deliverystream/FirehoseSplunkDeliveryStream"]
      },
      {
        "Effect":"Allow",
        "Action":["iam:PassRole"],
        "Resource":["arn:aws:iam::YOUR-AWS-ACCT-NUM:role/CWLtoKinesisFirehoseRole"]
      }
    ]
}

6.    다음 예제 명령을 사용하여 새로 만든 역할에 IAM 정책을 연결합니다.

$ aws iam put-role-policy 
    --role-name CWLtoKinesisFirehoseRole 
    --policy-name Permissions-Policy-For-CWL 
    --policy-document file://PermissionPolicyForCWLToFireHose.json

7.    다음 예제 명령을 사용하여 구독 필터를 생성합니다. YOUR-AWS-ACCT-NUM을 AWS 계정 번호로, YOUR-RESOURCE-REGION을 리소스의 리전으로, FirehoseSplunkDeliveryStream을 스트림 이름으로 바꿔야 합니다.

$ aws logs put-subscription-filter 
   --log-group-name " /vpc/flowlog/FirehoseSplunk" 
   --filter-name "Destination" 
   --filter-pattern "" 
   --destination-arn "arn:aws:firehose:YOUR-RESOURCE-REGION:YOUR-AWS-ACCT-NUM:deliverystream/FirehoseSplunkDeliveryStream" 
   --role-arn "arn:aws:iam::YOUR-AWS-ACCT-NUM:role/CWLtoKinesisFirehoseRole"

페이지 내용이 도움이 되었습니까? | 아니요

AWS 지원 지식 센터로 돌아가기

도움이 필요하십니까? AWS 지원 센터를 방문하십시오.

게시 날짜: 2018-11-08