로그를 사용하여 Amazon 데이터 Firehose에 쓰기 CloudWatch - Amazon Data Firehose

Amazon Data Firehose는 이전에 Amazon Kinesis Data Firehose로 알려졌습니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

로그를 사용하여 Amazon 데이터 Firehose에 쓰기 CloudWatch

CloudWatch CloudWatch 구독 필터를 사용하여 Firehose로 로그 이벤트를 전송할 수 있습니다. 자세한 내용은 Amazon Data Firehose를 사용한 구독 필터를 참조하십시오.

CloudWatch 로그 이벤트는 압축된 gzip 형식으로 Firehose에 전송됩니다. 압축 해제된 로그 이벤트를 Firehose 대상에 전달하려는 경우 Firehose의 압축 해제 기능을 사용하여 로그의 압축을 자동으로 해제할 수 있습니다. CloudWatch

중요

Amazon은 여러 CloudWatch 로그 이벤트를 하나의 Firehose 레코드로 CloudWatch 결합하고 Amazon OpenSearch 서비스는 하나의 레코드에서 여러 로그 이벤트를 수락할 수 없기 때문에 현재 Firehose는 Amazon OpenSearch 서비스 대상으로 로그를 전송하는 것을 지원하지 않습니다. 대안으로 CloudWatch 로그에서 Amazon OpenSearch Service의 구독 필터 사용을 고려할 수 있습니다.

로그 압축 해제 CloudWatch

Firehose를 사용하여 CloudWatch 로그를 전송하고 압축 해제된 데이터를 Firehose 스트림 대상으로 전송하려면 Firehose 데이터 형식 변환 (파켓, ORC) 또는 동적 파티셔닝을 사용하세요. Firehose 스트림의 압축 해제를 활성화해야 합니다.

AWS Management Console, AWS Command Line Interface 또는 SDK를 사용하여 압축 해제를 활성화할 수 있습니다. AWS

참고

스트림에서 압축 해제 기능을 활성화한 경우 해당 스트림을 CloudWatch 로그 구독 필터에만 사용하고 Vended Logs에는 사용하지 마십시오. CloudWatch 로그와 벤디드 로그를 모두 수집하는 데 사용되는 스트림에서 압축 해제 기능을 활성화하면 Firehose로의 벤드 로그 수집이 실패합니다. 이 압축 해제 기능은 로그에만 사용할 수 있습니다. CloudWatch

로그 압축 해제 후 메시지 추출 CloudWatch

압축 해제를 활성화하면 메시지 추출도 활성화할 수 있습니다. 메시지 추출을 사용할 때 Firehose는 압축이 해제된 CloudWatch 로그 레코드에서 소유자, 로그그룹, 로그스트림 등과 같은 모든 메타데이터를 필터링하고 메시지 필드 내의 콘텐츠만 전달합니다. Splunk 대상으로 데이터를 전송하는 경우 Splunk에서 데이터를 파싱할 수 있도록 메시지 추출을 켜야 합니다. 다음은 메시지 추출을 사용하거나 사용하지 않은 압축 해제 후의 샘플 출력입니다.

그림 1: 메시지를 추출하지 않고 압축을 푼 후의 샘플 출력:

{ "owner": "111111111111", "logGroup": "CloudTrail/logs", "logStream": "111111111111_CloudTrail/logs_us-east-1", "subscriptionFilters": [ "Destination" ], "messageType": "DATA_MESSAGE", "logEvents": [ { "id": "31953106606966983378809025079804211143289615424298221568", "timestamp": 1432826855000, "message": "{\"eventVersion\":\"1.03\",\"userIdentity\":{\"type\":\"Root1\"}" }, { "id": "31953106606966983378809025079804211143289615424298221569", "timestamp": 1432826855000, "message": "{\"eventVersion\":\"1.03\",\"userIdentity\":{\"type\":\"Root2\"}" }, { "id": "31953106606966983378809025079804211143289615424298221570", "timestamp": 1432826855000, "message": "{\"eventVersion\":\"1.03\",\"userIdentity\":{\"type\":\"Root3\"}" } ] }

그림 2: 메시지 추출을 통한 압축 해제 후의 샘플 출력:

{"eventVersion":"1.03","userIdentity":{"type":"Root1"} {"eventVersion":"1.03","userIdentity":{"type":"Root2"} {"eventVersion":"1.03","userIdentity":{"type":"Root3"}

압축 해제 활성화 및 비활성화

AWS Management Console, AWS Command Line Interface 또는 SDK를 사용하여 압축 해제를 활성화하거나 AWS 비활성화할 수 있습니다.

를 사용하여 새 데이터 스트림에서 압축 해제를 활성화합니다. AWS Management Console

를 사용하여 새 데이터 스트림에서 압축 해제를 활성화하려면 AWS Management Console
  1. 에 AWS Management Console 로그인하고 https://console.aws.amazon.com/kinesis 에서 Kinesis 콘솔을 엽니다.

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

  3. Firehose 스트림 생성을 선택합니다.

  4. 소스 및 목적지 선택에서

    소스

    Firehose 스트림의 소스입니다. 다음 소스 중 하나를 선택하세요.

    • Direct PUT - 이 옵션을 선택하면 제작자 애플리케이션이 직접 쓸 수 있는 Firehose 스트림을 만들 수 있습니다. Firehose의 AWS Direct PUT과 통합된 서비스, 에이전트 및 오픈 소스 서비스 목록은 섹션을 참조하십시오.

    • Kinesis 스트림: Kinesis 데이터 스트림을 데이터 소스로 사용하는 Firehose 스트림을 구성하려면 이 옵션을 선택합니다. 그런 다음 Firehose를 사용하여 기존 Kinesis 데이터 스트림에서 데이터를 쉽게 읽고 대상에 로드할 수 있습니다. 자세한 내용은 Kinesis 데이터 스트림을 사용하여 Firehose에 쓰기를 참조하십시오.

    대상

    Firehose 스트림의 목적지입니다. 다음 중 하나를 선택합니다.

    • Amazon S3

    • Splunk

  5. Firehose 스트림 이름에서 스트림 이름을 입력합니다.

  6. (선택 사항) 트랜스폼 레코드에서:

    • Amazon CloudWatch Logs의 소스 레코드 압축 해제 섹션에서 압축 해제 활성화를 선택합니다.

    • 압축 해제 후 메시지 추출을 사용하려면 [메시지 추출 켜기] 를 선택합니다.

를 사용하여 기존 데이터 스트림의 압축 해제를 활성화합니다. AWS Management Console

압축 해제를 수행하는 Lambda 함수가 포함된 Firehose 스트림이 있는 경우, 이를 Firehose 압축 해제 기능으로 대체할 수 있습니다. 계속하기 전에 Lambda 함수 코드를 검토하여 압축 해제 또는 메시지 추출만 수행하는지 확인하십시오. Lambda 함수의 출력은 이전 섹션의 그림 1 또는 그림 2에 표시된 예와 비슷해야 합니다. 출력이 비슷해 보이면 다음 단계를 사용하여 Lambda 함수를 교체할 수 있습니다.

  1. 현재 Lambda 함수를 이 블루프린트로 바꾸십시오. 새로운 blueprint Lambda 함수는 수신 데이터가 압축되었는지 아니면 압축 해제되었는지를 자동으로 감지합니다. 입력 데이터가 압축된 경우에만 압축 해제를 수행합니다.

  2. 내장된 Firehose 압축 해제 옵션을 사용하여 압축 해제를 켜세요.

  3. Firehose 스트림이 아직 활성화되지 않은 경우 CloudWatch 측정항목을 활성화하세요. 측정항목 CloudWatchProcessorLambda IncomingCompressedData _을 모니터링하고 이 측정항목이 0으로 변경될 때까지 기다리세요. 이를 통해 Lambda 함수로 전송된 모든 입력 데이터가 압축 해제되고 Lambda 함수가 더 이상 필요하지 않음을 확인할 수 있습니다.

  4. 스트림의 압축을 푸는 데 더 이상 필요하지 않으므로 Lambda 데이터 변환을 제거하십시오.

를 사용하여 압축 해제를 비활성화합니다. AWS Management Console

를 사용하여 데이터 스트림의 압축 해제를 비활성화하려면 AWS Management Console

  1. 에 AWS Management Console 로그인하고 https://console.aws.amazon.com/kinesis 에서 Kinesis 콘솔을 엽니다.

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

  3. 편집하려는 Firehose 스트림을 선택합니다.

  4. Firehose 스트림 세부정보 페이지에서 구성 탭을 선택합니다.

  5. 레코드 변환 및 변환 섹션에서 편집을 선택합니다.

  6. Amazon CloudWatch Logs의 소스 레코드 압축 해제에서 압축 해제 켜기를 선택 해제한 다음 변경 사항 저장을 선택합니다.

FAQ

압축을 해제하는 동안 오류가 발생하는 경우 소스 데이터는 어떻게 됩니까?

Amazon Data Firehose가 레코드의 압축을 풀 수 없는 경우 Firehose 스트림 생성 중에 지정한 오류 S3 버킷에 레코드가 있는 그대로 (압축된 형식) 전송됩니다. 전송된 객체에는 레코드와 함께 오류 코드 및 오류 메시지도 포함되며 이러한 객체는 라는 S3 버킷 접두사로 전송됩니다. decompression-failed Firehose는 레코드 압축 해제에 실패한 후에도 다른 레코드를 계속 처리합니다.

압축 해제에 성공한 후 처리 파이프라인에 오류가 발생하는 경우 소스 데이터는 어떻게 되나요?

압축 해제 후 처리 단계 (예: 동적 파티셔닝 및 데이터 형식 변환) 에서 Amazon Data Firehose에서 오류가 발생하는 경우, 레코드는 Firehose 스트림 생성 중에 지정한 오류 S3 버킷에 압축 형식으로 전송됩니다. 전송된 객체에는 레코드와 함께 오류 코드 및 오류 메시지도 포함됩니다.

오류나 예외가 발생할 경우 어떻게 알 수 있습니까?

압축 해제 중에 오류 또는 예외가 발생하는 경우 CloudWatch Logs를 구성하면 Firehose가 오류 메시지를 CloudWatch Logs에 기록합니다. 또한 Firehose는 모니터링할 수 있는 측정항목으로 CloudWatch 측정항목을 전송합니다. Firehose에서 내보낸 측정항목을 기반으로 알람을 생성할 수도 있습니다.

로그에서 put 작업이 이루어지지 않으면 어떻게 되나요? CloudWatch

고객이 CloudWatch Logs에서 오지 puts 않는 경우 다음과 같은 오류 메시지가 반환됩니다.

Put to Firehose failed for AccountId: <accountID>, FirehoseName: <firehosename> because the request is not originating from allowed source types.

Firehose는 압축 해제 기능에 대해 어떤 측정항목을 생성하나요?

Firehose는 모든 레코드의 압축 해제 메트릭을 생성합니다. 기간 (1분), 통계 (합계), 날짜 범위를 선택하여 DecompressedRecords 실패 또는 성공 또는 실패 또는 DecompressedBytes 성공 수를 구해야 합니다. 자세한 내용은 CloudWatch 로그, 압축 해제 지표을(를) 참조하세요.