제퍼넷 로고

Amazon CloudWatch를 사용하여 Amazon Kinesis Data Firehose 전송 스트림에 대한 통찰력 확보

시간

전 세계적으로 생성되는 데이터의 양은 점점 더 빠른 속도로 증가하고 있습니다. IoT, 광고, 게임, 보안 모니터링, 머신 러닝(ML) 등과 같이 증가하는 사용 사례를 지원하기 위해 데이터가 생성됩니다. 이러한 사용 사례의 성장은 스트리밍 데이터의 양과 속도를 모두 높이고 기업은 데이터를 캡처, 처리, 변환, 분석하고 거의 실시간으로 다양한 데이터 저장소에 로드해야 합니다.

아마존 키네 시스 데이터 파이어 호스 스트리밍 데이터를 데이터 레이크, 데이터 저장소 및 분석 서비스에 안정적으로 로드하는 가장 쉬운 방법입니다. Kinesis Data Firehose로 스트리밍하는 데이터의 양이 증가함에 따라 통찰력을 얻고 데이터 수집, 변환 및 전달의 상태를 모니터링해야 합니다.

이 게시물에서는 Firehose 전송 스트림 메트릭 및 아마존 클라우드 워치 Kinesis Data Firehose 콘솔에 있는 대시보드. 이러한 기능을 사용하면 예를 들어 Kinesis Data Firehose에서 구성한 대상에 누락된 권한, 잘못된 구성 또는 기타 문제가 있는 경우 Firehose가 이를 감지하고 실패로 보고할 수 있을 때 경고를 생성할 수 있습니다. 또한 발생할 수 있는 다른 오류는 다음을 구성한 경우입니다. Lambda를 사용한 데이터 변환 Lambda 함수 호출이 실패했거나 Kinesis Firehose에 도달한 경우 할당량 제한 귀하의 AWS 계정과 연결됩니다. 이러한 경우 Kinesis Data Firehose에서 대상으로의 데이터 전송이 지연되거나 실패할 수 있습니다. 이 게시물에 설명된 CloudWatch 알림은 이러한 사례를 적시에 식별하는 데 도움이 됩니다.

이 게시물은 또한 할당량 증가 요청을 제출하거나 데이터 생산자에게 지수 백오프를 추가하는 것과 같이 경보가 트리거될 때 취할 수 있는 다양한 사전 조치를 다룹니다.

전송 스트림을 모니터링하고 이러한 조치를 취하면 데이터가 중단 없이 목적지로 전송되어 비즈니스가 거의 실시간으로 통찰력을 얻을 수 있습니다.

Kinesis Data Firehose에 대한 데이터 수집 모니터링

다음을 통해 데이터 생산자의 데이터를 Kinesis Data Firehose로 전달할 수 있습니다. Amazon Kinesis 데이터 스트림 (이 게시물의 뒷부분에 설명된 대로) 키네시스 에이전트, 또는 Kinesis Data Firehose API 작업을 직접 사용 풋레코드PutRecordBatch. Kinesis Data Streams를 데이터 원본으로 사용하는 경우 Kinesis Data Firehose는 Kinesis Data Stream의 확장에 따라 자동으로 확장됩니다. 직접 수집을 위한 API 작업을 사용할 때 다음을 확인해야 합니다. 할당량 제한 API 요청 조절을 피하기 위해 AWS 계정과 연결됩니다. 데이터 생산자 동작에 따라 이 조절로 인해 데이터 생산자가 작업을 다시 시도하여 대상으로의 데이터 전달이 지연될 수 있습니다. 데이터 생산자가 재시도 메커니즘을 구현하지 않는 경우 이 조절로 인해 데이터가 손실될 수도 있습니다.

Firehose 전송 스트림 사용에 대한 더 깊은 통찰력을 얻기 위해 할당량 제한을 모니터링하고 사전에 확장하는 데 도움이 되는 추가 CloudWatch 지표를 제공합니다. ThrottledRecords, RecordsPerSecondLimit, BytesPerSecondLimitPutRequestsPerSecondLimit. CloudWatch 지표 대시보드( 모니터링 Kinesis Data Firehose 콘솔의 탭) 현재 사용량과 할당량 제한을 쉽게 시각화할 수 있습니다.

다음을 사용하여 전송 스트림에 직접 데이터를 수집할 때 PutRecord or PutRecordBatch, 당신은 모니터링해야 조절된 레코드 미터법. 이 메트릭은 데이터 수집이 전송 스트림 제한 중 하나를 초과했기 때문에 실제로 조절된 레코드 수를 나타냅니다. Kinesis Data Firehose는 수집 중 조절 속도를 1초 단위로 계산하지만 우리가 언급한 데이터 수집 지표는 5분마다 집계되어 CloudWatch로 내보내집니다. 이 때문에 데이터 수집 지표에 제한에 도달했다고 표시되지 않더라도 해당 5분 창 내에서 제한될 수 있습니다.

데이터 생산자가 실제로 조절되기 전에 경고를 받으려면 다음을 사용할 수 있습니다. 추가 CloudWatch 지표 전송 스트림 제한 중 하나에 도달하려고 할 때 알려줍니다. CloudWatch 지표를 사용하여 이를 달성할 수 있습니다. IncomingRecords, IncomingBytesIncomingPutRequests. 이러한 측정항목의 한계를 확인하려면 다음을 참조하십시오. Amazon Kinesis Data Firehose 할당량.

다음 수집 지표와 해당 제한 지표를 사용하여 CloudWatch 경보를 생성할 수 있습니다.

  • 초당 기록수 제한 – XNUMX초에 수집할 수 있는 최대 레코드 수(IncomingRecords)
  • 초당 바이트 제한 – XNUMX초에 수집할 수 있는 최대 데이터 양(IncomingBytes)
  • PutRequestsPerSecondLimit – 최대 성공 횟수 PutRecordPutRecordBatch XNUMX초 안에 수행할 수 있는 API 요청(IncomingPutRequests)

수집 비율이 할당량에 가까워졌을 때 알려주는 경보를 설정하려면 수집 비율과 해당 제한 간의 백분율 관계를 찾아야 합니다. Kinesis Data Firehose는 5분마다 CloudWatch에 지표를 내보내므로 지표를 초(5)로 표시되는 300분 집계 기간으로 나누어야 합니다. 예를 들어 초당 수신 레코드 비율이 API 작업 할당량의 80%를 위반할 때 경고를 생성하려면 CloudWatch 경보를 다음과 같이 정의해야 합니다.

이를 통해 수집 속도가 전송 스트림 제한에 얼마나 가까운지 사전에 이해하고 사용 사례에 따라 백분율 수준을 수정할 수 있는 유연성을 제공합니다. 제한 병목 현상을 방지하려면
우리가 논의한 세 가지 전송 스트림 수집 속도 메트릭을 별도로 모니터링해야 합니다.

CloudWatch 경보를 사용하여 경보 정의

CloudWatch 경보를 수동으로 정의할 수 있습니다. AWS 관리 콘솔 또는 AWS 클라우드 포메이션. 이 게시물에서는 CloudFormation 템플릿부터 시작하여 두 가지 방법을 모두 다룹니다.

다음 템플릿은 CloudWatch 경보를 생성하며, 이를 검토하고 필요에 맞게 사용자 지정할 수 있습니다.

스택 생성 프로세스 중에 모니터링할 Firehose 전송 스트림 이름과 위반 시 알림을 받을 할당량 백분율(예: 80%)을 제공합니다. 스택 생성에 성공하면 XNUMX개의 CloudWatch 경보가 준비됩니다.

콘솔을 통해 CloudWatch 경보를 수동으로 생성하려면 다음 단계를 완료하십시오.

  1. Kinesis Data Firehose 콘솔에서 전송 스트림을 찾습니다.
  2. 모니터링 탭에서 모니터링하려는 메트릭의 추가 옵션 아이콘을 선택합니다(이 예에서는 초당 수신 레코드를 모니터링함).
  3. 옵션 메뉴에서 측정항목에서 보기.

CloudWatch 콘솔에서 현재 API 작업(파란색 선)과 할당량 제한(빨간색 선)을 나타내는 그래프를 볼 수 있습니다.

  1. 알람을 생성하려면 다음을 선택합니다. 수학 표현.
  2. 선택 공통의 선택하고 백분율.
  3. 측정항목 이름으로 다음을 입력합니다. Percentage of records per second quota.
  4. 우리는 메트릭 표현을 사용합니다 100*(e1/m2), 이는 공식 100*(BytesPerSecond/BytesPerSecondLimit) 이는 앞에서 설명한 것으로 최대 백분율에 얼마나 근접했는지 반영합니다.
  5. 메트릭 표현 변경 e1METRICS("m1")/300m1/300.

Y축 레이블을 변경할 수도 있습니다.

  1. 그래프 옵션 탭, 아래 왼쪽 Y축에 대한 라벨, 입력 Percentage.
  2. 이제 경보에 사용할 표현식이 있으므로 페이지에서 다른 모든 표현식과 메트릭을 선택 취소합니다.

선택한 유일한 표현식은 방금 만든 표현식이어야 합니다. 이제 다음 스크린샷과 같이 원하는 백분율이 표시되어야 합니다.

CloudWatch 경보 생성

이제 에 표현식을 만들었습니다. IncomingRecordsRecordsPerSecond 알람의 기준으로 사용할 수 있는 할당량입니다. 이를 통해 비즈니스 사용 사례에 필요한 허용 수준을 구성할 수 있습니다.

  1. 표현 옆에 있는 알람 아이콘을 선택합니다.
  2. . 측정항목 및 조건 지정 섹션에서 경보가 75% 제한을 위반할 때 경보를 받도록 선택합니다.
  3. . 작업 구성 섹션에서 이 경보를 전달하는 방법을 지정하십시오.

이 경보를 모니터링 시스템이나 이메일 주소로 전달할 수 있습니다. 아마존 단순 알림 서비스 (Amazon SNS) 주제. 이 게시물을 위해 새로운 SNS 주제를 만들고 구독합니다. admin@example.com 그것.

한계에 도달했을 때 취할 수 있는 조치

한계에 가까워지면 이 섹션에서 설명하는 몇 가지 다른 조치를 취할 수 있습니다.

서비스 할당량 증가 요청

경고를 볼 때 취할 수 있는 한 가지 조치는 다음을 사용하여 할당량 증가를 요청하는 것입니다. Amazon Kinesis Data Firehose 제한 양식. 세 가지 할당량은 비례적으로 조정됩니다. 예를 들어 미국 동부(버지니아 북부), 미국 서부(오레곤) 또는 유럽(아일랜드)의 처리량 할당량을 5MiB/초에서 10MiB/초로 늘리면 나머지 두 할당량은 초당 2,000개의 요청에서 초당 4,000개의 요청으로, 초당 500,000개의 레코드에서 초당 1백만 개의 레코드로 증가합니다. AWS 리전별 서비스 할당량 제한에 대한 자세한 내용은 다음을 참조하십시오. Amazon Kinesis Data Firehose 할당량.

PutRecordBatch API 사용

API 호출을 사용하는 경우 PutRecord Firehose 데이터 스트림에 이벤트를 전달하고 요청/초 할당량 한도에 도달하려면 다음을 사용하는 것이 좋습니다. PutRecordBatch API 작업. PutRecordBatch 단일 호출로 여러 데이터 레코드를 전송 스트림에 작성하여 단일 레코드를 작성하는 것보다 생산자당 더 높은 처리량을 달성하고 전송 스트림에 대한 초당 요청 수를 줄입니다.

지수 백오프 구현

앞에서 언급했듯이 전송 스트림을 모니터링하는 경우에도 데이터 스트림에 버스트가 계속 발생할 수 있습니다. 이는 시스템 사용량이 갑자기 급증하거나 금융 시장의 높은 거래 활동과 같은 외부 이벤트로 인해 발생할 수 있습니다. 제한된 여러 레코드로부터 생산자를 보호하려면 지수 백오프를 구현해야 합니다. 지수 백오프는 조절될 때 Kinesis Data Firehose에 레코드를 제출하는 속도를 줄이는 데 사용할 수 있는 일반적으로 사용되는 알고리즘입니다.
레코드를 성공적으로 전송하기 위해 시도하십시오.

다음은 레코드가 조절될 때 Kinesis Data Firehose API 응답입니다.

  • API 작업을 사용하는 경우 PutRecord, 서비스에서 반환된 오류는 ServiceUnavailableException HTTP 상태 코드 500
  • 사용중인 경우 PutRecordBatch, 당신은 반복해야 RequestResponses 배열 및 개별 찾기 PutRecordBatchResponseEntry오류 코드 500 및 에러 메시지 ServiceUnavailableException. 의 값도 확인하십시오. 실패한 풋 카운트 API 호출이 성공한 경우에도 응답에서.

두 경우 모두 지수 백오프를 사용하고 작업을 다시 시도해야 합니다. 지수 백오프 구현에 대한 자세한 내용은 다음을 참조하세요. AWS의 오류 재시도 및 지수 백오프.

Kinesis Data Firehose와 함께 Kinesis Data Streams 사용

Kinesis Data Streams는 확장성과 내구성이 뛰어난 실시간 데이터 스트리밍 서비스입니다. 데이터 생산자는 Kinesis Data Streams에 직접 데이터 생성, Kinesis Data Firehose를 다음과 같이 구성할 수 있습니다. Kinesis Data Streams의 데이터 사용 그리고 목적지까지 배달합니다. Kinesis Data Streams를 Firehose 전송 스트림의 소스로 사용하는 경우 앞에서 언급한 처리량 제한이 적용되지 않습니다. Kinesis Data Firehose는 Kinesis 데이터 스트림의 샤드 수에 맞게 자동으로 확장되므로 처리량 제한에 대해 걱정할 필요가 없습니다.

Firehose 전송 스트림을 Kinesis 데이터 스트림에 소비자로 연결하고 다음과 같이 Kinesis 데이터 스트림에서 데이터를 읽는 소비자 애플리케이션이 여러 개 있는 경우 AWS 람다 (참조 Amazon Kinesis와 함께 AWS Lambda 사용), 전체 소비자 응용 프로그램이 샤드의 2MB 총 읽기 속도. 이로 인해 Kinesis 데이터 스트림이 Kinesis Data Firehose를 포함한 소비자 애플리케이션의 읽기 처리량을 조절할 수 있습니다.

더 많은 읽기 용량이 필요한 경우 Lambda와 같은 일부 애플리케이션 소비자(참조 AWS Lambda는 더 빠른 스트리밍을 위해 Kinesis Data Streams Enhanced Fan-Out 및 HTTP/2를 지원합니다.) 또는 Kinesis 소비자 라이브러리 다음을 사용하여 Kinesis Data Streams의 전용 처리량을 지원할 수 있습니다. 향상된 팬아웃, 현재 Kinesis Data Firehose에서 지원하지 않습니다. 이 기능은 2MB/초의 아웃바운드 처리량으로 스트림에 대한 이러한 소비자 응용 프로그램 격리 연결을 제공하므로 샤드에서 읽는 다른 소비자 응용 프로그램에 영향을 주지 않습니다.

수집 용량이 더 필요한 경우 콘솔을 사용하여 스트림의 샤드 수를 쉽게 확장할 수 있습니다. 업데이트ShardCount API.

Kinesis Data Firehose의 데이터 전달 모니터링

네트워크 시간 초과, 권한 누락 또는 잘못된 전송 스트림과 같은 잘못된 구성의 경우 대상 구성 or AWS 키 관리 서비스 (AWS KMS) 키 ARN, Kinesis Data Firehose에서 대상으로의 데이터 전송이 지연되거나 실패할 수 있습니다. 구성한 경우 오류가 발생할 수도 있습니다. Lambda를 사용한 데이터 변환 Lambda 함수 호출이 실패했습니다.

Kinesis Data Firehose는 전송 또는 처리 오류가 발생하면 구성될 때까지 재시도합니다. 재시도 시간 만료됩니다. 재시도 기간이 종료되고 데이터가 성공적으로 전송되지 않은 경우 Kinesis Data Firehose는 최대 24시간 동안 데이터를 내부적으로 유지합니다. 문제가 24시간의 최대 보존 기간을 초과하여 계속되면 Kinesis Data Firehose가 데이터를 삭제하여 데이터가 손실됩니다.

이러한 데이터 전달 문제가 지속되면 데이터 신선도 Kinesis Data Firehose에서 아직 전달되지 않은 가장 오래된 레코드의 연령인 지표는 지속적으로 증가합니다. 이러한 경우 알림을 받으려면 데이터 최신성 지표가 임계값인 4시간을 초과할 때 CloudWatch 경보를 생성해야 합니다. 또한 데이터 신선도 메트릭 값의 과거 p90을 관찰하도록 경보를 설정하는 것이 좋습니다. 예를 들어, 특정 허용 오차 수준(예: 관찰된 값보다 50% 이상)을 경보 임계값으로 설정하여 데이터 신선도 변화를 감지합니다.

다음과 같이 Kinesis Data Firehose 대상과 관련된 데이터 최신성 지표를 모니터링해야 합니다. DeliveryToS3.DataFreshness, DeliveryToAmazonOpenSearchService.DataFreshness, DeliveryToSplunk.DataFreshnessDeliveryToHttpEndpoint.DataFreshness. 자세한 내용은 다음을 참조하십시오. CloudWatch 지표를 사용하여 Kinesis Data Firehose 모니터링.

이 경보가 트리거되면 데이터 신선도 변동의 근본 원인을 이해하기 위한 조치를 취해야 합니다. 그러한 변동의 이유는 귀하의 람다 변환 로직 또는 구성 변경 람다 동시성 사용하는 경우 Kinesis Data Firehose 데이터 변환. 구성 매개변수가 변경된 결과일 수도 있습니다. 형식 변환 스키마, 또는 수집된 레코드 유형입니다. 자세한 내용은 데이터 신선도 메트릭 증가 또는 방출되지 않음 또는 당신은 할 수있다. 기술 지원 요청 제출 필요한 경우.

데이터 변환 또는 대상의 문제로 인해 데이터 전송이 실패하면 경우에 따라 CloudWatch Logs에서 자세한 오류 로그를 찾을 수 있으며, 이는 문제 해결에 도움이 될 수 있습니다.

또한 대상에 대한 데이터 전달 바이트 속도를 모니터링하는 것이 좋습니다(예: DeliveryToS3.Byte), 데이터 수집 바이트 속도(IncomingBytes) 증가를 피하기 위해 지속적으로 평균 데이터 신선도 메트릭 및 가능한 최종 데이터 손실. 관찰된 전송 데이터 속도가 수집 속도보다 낮으면 Lambda 동시성 수준 또는 람다 변환 로직 Kinesis Data Firehose 데이터 변환과 함께 사용하는 경우.

대상으로의 데이터 전송에 대한 추가 통찰력을 얻기 위해 모니터링할 수 있는 CloudWatch 지표를 제공합니다. 예를 들어 Kinesis Data Firehose에서 대상으로 수집된 데이터를 추적하기 위해 전달된 레코드 수를 모니터링할 수 있습니다. 자세한 내용 및 대상별 추가 측정항목은 다음을 참조하세요. CloudWatch 지표를 사용하여 Kinesis Data Firehose 모니터링.

결론

이 게시물에서는 Firehose 전송 스트림 지표와 Kinesis Data Firehose 콘솔에 있는 CloudWatch 대시보드를 사용하는 기능에 대해 논의했습니다. 이를 통해 Firehose 전송 스트림의 데이터 수집 및 데이터 전송에 대한 운영 통찰력을 얻을 수 있으며 임계값 중 하나가 위반될 때 알림을 받을 CloudWatch 알림을 생성할 수도 있습니다. 또한 할당량 증가 요청을 제출하거나 데이터 생산자에게 지수 백오프를 추가하는 것과 같이 이러한 경보가 트리거될 때 취할 수 있는 다양한 작업에 대해서도 다루었습니다.

전송 스트림을 모니터링하고 이러한 조치를 취하여 비즈니스 데이터가 중단 없이 목적지로 전달되도록 하여 비즈니스가 거의 실시간으로 통찰력을 얻을 수 있도록 합니다.


저자에 관하여

알론 젠들러 Amazon Web Services의 Startup Solutions Architect 관리자입니다. 그는 AWS 고객과 협력하여 복잡한 문제를 해결하고 클라우드에서 안전하고 탄력적이며 확장 가능한 고성능 애플리케이션을 설계하도록 지원합니다. Alon은 데이터에 열정적이며 고객이 데이터를 최대한 활용할 수 있도록 지원합니다.

출처: https://aws.amazon.com/blogs/big-data/gain-insights-into-your-amazon-kinesis-data-firehose-delivery-stream-using-amazon-cloudwatch/

spot_img

최신 인텔리전스

spot_img

우리와 함께 채팅

안녕하세요! 어떻게 도와 드릴까요?