2015-01-08 3 views
4

키네시스 스트림의 데이터가 이미 처리 된 비율을 어떻게 알 수 있습니까? 나는 각 리더가 하나의 샤드 체크 포인트 시퀀스 번호를 가지고 있고, 또한 describe-stream으로부터 각 샤드의 StartingSequenceNumber를 얻을 수 있다고 생각한다. 그러나 독자가 현재 내 데이터에서 얼마나 멀리 떨어져 있는지 모른다. (나는 그렇지 않다. 샤드의 최근 일련 번호를 알아라.)키네시스 스트림 리더의 상태

필자는 각 샤드마다 최신 이터레이터를 얻고 마지막 레코드의 시퀀스 번호를 얻는 것을 생각했지만, 가장 최근의 이터레이터를 가졌기 때문에 새로운 데이터가 없다면 작동하지 않는 것처럼 보입니다.

이 작업을 수행하기위한 아이디어 나 도구가 있습니까?

감사합니다.

+0

스트림으로 전송 된 레코드 수를 알고 계십니까? –

답변

1

추적하기 위해 애플리케이션에서 맞춤 측정 항목 또는 측정 항목을 구현하는 것이 좋습니다.

예를 들어 Kinesis 메시지 내에 메시지 보내기 시간을 추가하고 메시지 처리시 AWS CloudWatch 사용자 지정 메트릭으로 시차를 기록 할 수 있습니다. 이렇게하면 소비자가 스트림 앞까지 얼마나 가깝게 위치하는지 알 수 있습니다.

푸시 응용 프로그램에서 푸시 된 메시지 수와 Kinesis 소비자가 수신 한 메시지 수를 기록 할 수도 있습니다. CloudWatch의 차트에서 이들을 비교하면 커브가 대략 서로 따르고있어 소비자가 작업 부하에 잘 적응하고 있음을 알 수 있습니다.

당신 수 또한 안일하게 (즉, 어떤 결과가, 운동성에 의해 반환되지는 스트림의 전면에 알리는 모든 레코드를 처리하는)

기록을 기다리는 자주보고, 당신의 운동성 소비자를 모니터링하려고

또한 스트림에서 처리 된 "백분율"을 추적하는 방법이 없습니다. Kinesis 메시지는 24 시간 후에 만료되므로 (총 메시지 수가 계속해서 롤링 됨)주의하십시오. 스트림에있는 메시지 수를 세는 직접 (API) 기능도 없습니다 (위와 같이 기록하지 않은 경우).

1

KCL을 사용하는 경우 Kinesis의 클라우드 검색 기본 제공 메트릭의 IncomingRecords와 KCL이 게시 한 맞춤 메트릭 인 RecordsProcessed를 비교하면됩니다.

그런 다음 1 일의 시간 범위와 간격을 선택합니다.

그런 다음 그래프의 다음과 같은 유형을 얻을 것입니다 : 당신이 볼 수 있듯이

enter image description here

처리보다 추가 더 많은 기록이 있었다. 각 포인트의 값을 살펴봄으로써 프로세서가 뒤에 있는지 여부를 정확하게 알 수 있습니다.

관련 문제