Amazon CloudWatch를 사용한 Kinesis Client Library 모니터링 - Amazon Kinesis Data Streams

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

Amazon CloudWatch를 사용한 Kinesis Client Library 모니터링

Amazon Kinesis Data Streams용 Kinesis Client Library(KCL)는 KCL 애플리케이션의 이름을 네임스페이스로 사용하여 사용자 대신 사용자 지정 Amazon CloudWatch 지표를 게시합니다. CloudWatch 콘솔로 이동하여 사용자 지정 지표를 선택하면 이러한 지표를 볼 수 있습니다. 사용자 지정 지표에 대한 자세한 내용을 알아보려면 Amazon CloudWatch 사용 설명서의 사용자 지정 지표 게시를 참조하세요.

KCL이 CloudWatch에 업로드한 지표에는 일반 요금이 부과됩니다. 특히 Amazon CloudWatch 사용자 지정 지표 및 Amazon CloudWatch API 요청 요금이 적용됩니다. 자세한 내용은 Amazon CloudWatch 요금을 참조하세요.

지표 및 네임스페이스

지표를 업로드하는 데 사용되는 네임스페이스는 KCL을 시작할 때 지정된 애플리케이션 이름입니다.

지표 수준 및 차원

다음 두 가지 옵션을 사용하여 CloudWatch에 업로드되는 지표를 제어할 수 있습니다.

측정치 수준

모든 측정치에는 개별 수준이 할당됩니다. 지표 보고 수준을 설정할 때 보고 수준보다 낮은 개별 수준의 지표는 CloudWatch로 전송되지 않습니다. 수준은 NONE, SUMMARYDETAILED입니다. 기본 설정은 DETAILED이며 이 경우 모든 지표가 CloudWatch에 전송됩니다. 보고 수준이 NONE이면 측정치가 전혀 전송되지 않습니다. 어떤 지표에 어떤 수준이 할당되는지에 대한 자세한 내용은 메트릭 목록 단원을 참조하십시오.

활성화된 차원

모든 KCL 지표에는 CloudWatch로도 전송되는 관련 측정기준이 있습니다. KCL 2.x에서 KCL이 단일 데이터 스트림을 처리하도록 구성된 경우 모든 지표 측정기준(Operation, ShardIdWorkerIdentifier)이 기본적으로 활성화됩니다. 또한 KCL 2.x에서 KCL이 단일 데이터 스트림을 처리하도록 구성된 경우 Operation 측정기준을 비활성화할 수 없습니다. KCL 2.x에서 KCL이 여러 데이터 스트림을 처리하도록 구성된 경우 모든 지표 차원(Operation, ShardId, StreamIdWorkerIdentifier)이 기본적으로 활성화됩니다. 또한 KCL 2.x에서 KCL이 여러 데이터 스트림을 처리하도록 구성된 경우 OperationStreamId차원을 비활성화할 수 없습니다. StreamId 차원은 샤드당 지표에만 사용할 수 있습니다.

KCL 1.x에서 기본적으로 OperationShardId 측정기준만 활성화되어 있으며 WorkerIdentifier 측정기준은 비활성화되어 있습니다. KCL 1.x에서는 Operation 측정기준을 비활성화할 수 없습니다.

CloudWatch 지표 측정기준에 대한 자세한 내용은 Amazon CloudWatch 사용 설명서의 Amazon CloudWatch 개념의 측정기준 섹션을 참조하세요.

WorkerIdentifier 측정기준이 활성화하면 특정 KCL 워커가 다시 시작될 때마다 다른 값이 워커 ID 속성에 사용되는 경우 새로운 WorkerIdentifier 측정기준 값이 있는 새 지표 집합이 CloudWatch에 전송됩니다. 특정 KCL 워커가 다시 시작될 때 WorkerIdentifier 측정기준 값이 동일해야 하는 경우 각 워커의 초기화 중에 동일한 워커 ID 값을 명시적으로 지정해야 합니다. 각 활성 KCL 워커의 워커 ID 값은 모든 KCL 워커에서 고유해야 합니다.

지표 구성

KCL 애플리케이션을 시작할 때 워커에 전달되는 KinesisClientLibConfiguration 인스턴스를 사용하여 지표 수준 및 활성화된 측정기준을 구성할 수 있습니다. MultiLangDaemon의 경우 MultiLangDaemon KCL 애플리케이션을 시작하는 데 사용되는 .properties 파일에서 metricsLevelmetricsEnabledDimensions 속성을 지정할 수 있습니다.

세 가지 값(NONE, SUMMARY 또는 DETAILED) 중 하나를 측정치 수준에 할당할 수 있습니다. 활성화된 측정기준 값은 CloudWatch 지표에 허용되는 측정기준 목록이 있는 쉼표로 구분된 문자열이어야 합니다. KCL 애플리케이션에서 사용하는 측정기준은 Operation, ShardIdWorkerIdentifier입니다.

메트릭 목록

다음 표에는 범위와 작업을 기준으로 그룹화된 KCL 지표가 나와 있습니다.

KCL 애플리케이션별 지표

Amazon CloudWatch 네임스페이스에서 정의한 대로 애플리케이션 범위에 있는 모든 KCL 워커에서 이러한 지표가 집계됩니다.

LeaseAssignmentManager

LeaseAssignmentManager 작업은 작업자에게 임대를 할당하고 작업자 간에 임대를 재조정하여 작업자 리소스를 균등하게 활용할 수 있도록 합니다. 이 작업의 로직에는 임대 테이블에서 임대 관련 메타데이터를 읽고 작업자 지표 테이블에서 지표를 읽고 임대 할당을 수행하는 것이 포함됩니다.

지표 설명

LeaseAndWorkerMetricsLoad.Time

KCL 3.x에 도입된 새로운 임대 할당 및 로드 밸런싱 알고리즘인 리스 할당 관리자(LAM)에서 모든 리스 및 작업자 지표 항목을 로드하는 데 걸리는 시간입니다.

측정치 수준: Detailed

단위: 밀리초

TotalLeases

현재 KCL 애플리케이션의 총 임대 수입니다.

측정치 수준: Summary

단위: 개

NumWorkers

현재 KCL 애플리케이션의 총 작업자 수입니다.

측정치 수준: Summary

단위: 개

AssignExpiredOrUnassignedLeases.Time

만료된 리스의 인 메모리 할당을 수행하는 시간입니다.

측정치 수준: Detailed

단위: 밀리초

LeaseSpillover

작업자당 최대 임대 수 또는 최대 처리량 한도에 도달하여 할당되지 않은 임대 수입니다.

측정치 수준: Summary

단위: 개

BalanceWorkerVariance.Time

작업자 간 리스의 인 메모리 밸런싱을 수행하는 시간입니다.

측정치 수준: Detailed

단위: 밀리초

NumOfLeasesReassignment

현재 재할당 반복에서 수행된 총 임대 재할당 수입니다.

측정치 수준: Summary

단위: 개

FailedAssignmentCount

DynamoDB 임대 테이블에 대한 AssignLease 호출의 실패 수입니다.

측정치 수준: Detailed

단위: 개

ParallelyAssignLeases.Time

DynamoDB 임대 테이블에 대한 새 할당을 플러시하는 시간입니다.

측정치 수준: Detailed

단위: 밀리초

ParallelyAssignLeases.Success

새 할당의 성공적인 플러시 수입니다.

측정치 수준: Detailed

단위: 개

TotalStaleWorkerMetricsEntry

정리해야 하는 작업자 지표 항목의 총 수입니다.

측정치 수준: Detailed

단위: 개

StaleWorkerMetricsCleanup.Time

DynamoDB 작업자 지표 테이블에서 작업자 지표 항목 삭제를 수행하는 시간입니다.

측정치 수준: Detailed

단위: 밀리초

Time

LeaseAssignmentManager 작업에 소요된 시간입니다.

측정치 수준: Summary

단위: 밀리초

Success

LeaseAssignmentManager 작업이 성공적으로 완료된 횟수입니다.

측정치 수준: Summary

단위: 개

ForceLeaderRelease

임대 할당 관리자가 3회 연속으로 실패했고 리더 작업자가 리더십을 해제하고 있음을 나타냅니다.

측정치 수준: Summary

단위: 개

NumWorkersWithInvalidEntry

유효하지 않은 것으로 간주되는 작업자 지표 항목 수입니다.

측정치 수준: Summary

단위: 개

NumWorkersWithFailingWorkerMetric

작업자 지표의 값 중 하나로 -1(작업자 지표 값을 사용할 수 없음)인 작업자 지표 항목의 수입니다.

측정치 수준: Summary

단위: 개

LeaseDeserializationFailureCount

역직렬화에 실패한 임대 테이블의 임대 항목입니다.

측정치 수준: Summary

단위: 개

InitializeTask

InitializeTask 작업은 KCL 애플리케이션의 레코드 프로세서를 초기화합니다. 이 작업의 로직에는 ​Kinesis Data Streams에서 샤드 반복자 가져오기 및 레코드 프로세서 초기화가 포함됩니다.

지표 설명
KinesisDataFetcher.getIterator.Success

KCL 애플리케이션별로 성공한 GetShardIterator 작업 수입니다.

측정치 수준: Detailed

단위: 개

KinesisDataFetcher.getIterator.Time

지정된 KCL 애플리케이션의 GetShardIterator 작업당 소요된 시간입니다.

측정치 수준: Detailed

단위: 밀리초

RecordProcessor.initialize.Time

레코드 프로세서의 초기화 메서드에 소요된 시간입니다.

측정치 수준: Summary

단위: 밀리초

Success

성공한 레코드 프로세서 초기화 수입니다.

측정치 수준: Summary

단위: 개

Time

KCL 워커가 레코드 프로세서를 초기화하는 데 소요된 시간입니다.

측정치 수준: Summary

단위: 밀리초

ShutdownTask

ShutdownTask 작업은 샤드 처리를 위해 종료 시퀀스를 시작합니다. 샤드가 분할되거나 병합되어 또는 작업자에서 샤드 리스가 손실된 경우 발생할 수 있습니다. 두 경우 모두 레코드 프로세서 shutdown() 함수가 호출됩니다. 샤드가 분할 또는 합병된 경우 새 샤드가 발견되어 새 샤드가 1개나 2개 생성됩니다.

지표 설명
CreateLease.Success

상위 샤드 종료 후 새로운 하위 샤드가 KCL 애플리케이션 DynamoDB 테이블에 성공적으로 추가된 횟수입니다.

측정치 수준: Detailed

단위: 개

CreateLease.Time

KCL 애플리케이션 DynamoDB 테이블에 새 하위 샤드 정보를 추가하는 데 소요된 시간입니다.

측정치 수준: Detailed

단위: 밀리초

UpdateLease.Success

레코드 프로세서 종료 중 성공한 최종 체크포인트 수입니다.

측정치 수준: Detailed

단위: 개

UpdateLease.Time

레코드 프로세서 종료 중 체크포인트 작업에 소요된 시간입니다.

측정치 수준: Detailed

단위: 밀리초

RecordProcessor.shutdown.Time

레코드 프로세서의 종료 메서드에 소요된 시간입니다.

측정치 수준: Summary

단위: 밀리초

Success

성공한 종료 작업 수입니다.

측정치 수준: Summary

단위: 개

Time

KCL 워커가 종료 작업에 소요한 시간입니다.

측정치 수준: Summary

단위: 밀리초

ShardSyncTask

ShardSyncTask 작업은 KCL 애플리케이션에서 새로운 샤드를 처리할 수 있도록 Kinesis 데이터 스트림의 샤드 정보 변경 사항을 검색합니다.

지표 설명
CreateLease.Success

KCL 애플리케이션 DynamoDB 테이블에 새 샤드 정보를 추가하려는 시도가 성공한 횟수입니다.

측정치 수준: Detailed

단위: 개

CreateLease.Time

KCL 애플리케이션 DynamoDB 테이블에 새 샤드 정보를 추가하는 데 소요된 시간입니다.

측정치 수준: Detailed

단위: 밀리초

Success

성공적인 샤드 동기화 작업 수입니다.

측정치 수준: Summary

단위: 개

Time

샤드 동기화 작업에 소요된 시간입니다.

측정치 수준: Summary

단위: 밀리초

BlockOnParentTask

샤드가 분할되거나 다른 샤드와 병합되면 새로운 하위 샤드가 생성됩니다. BlockOnParentTask 작업은 KCL이 상위 샤드를 완전히 처리할 때까지 새로운 샤드의 레코드 처리가 시작되지 않도록 보장합니다.

지표 설명
Success

성공적인 상위 샤드 완료 확인 수입니다.

측정치 수준: Summary

단위: 개

Time

상위 샤드 완료에 소요된 시간입니다.

측정치 수준: Summary

단위: 밀리초

PeriodicShardSyncManager

PeriodicShardSyncManager는 KCL 소비자 애플리케이션에서 처리 중인 데이터 스트림을 검사하고, 부분 리스가 있는 데이터 스트림을 식별하여 동기화를 위해 전달하는 역할을 합니다.

다음 지표는 KCL이 단일 데이터 스트림을 처리하도록 구성된 경우(NumStreamsToSync 및 NumStreamsWithPartialLeases 값이 1로 설정됨)와 KCL이 여러 데이터 스트림을 처리하도록 구성된 경우에 사용할 수 있습니다.

지표 설명
NumStreamsToSync

부분 임대를 포함하고 동기화를 위해 전달해야 하는 소비자 애플리케이션에서 처리 중인 데이터 스트림( AWS 계정당) 수입니다.

측정치 수준: Summary

단위: 개

NumStreamsWithPartialLeases

부분 임대가 포함된 소비자 애플리케이션이 처리 중인 데이터 스트림( AWS 계정당) 수입니다.

측정치 수준: Summary

단위: 개

Success

PeriodicShardSyncManager가 소비자 애플리케이션에서 처리 중인 데이터 스트림에서 부분 리스를 성공적으로 식별할 수 있었던 횟수입니다.

측정치 수준: Summary

단위: 개

Time

가 샤드 동기화가 필요한 데이터 스트림을 결정하기 위해 소비자 애플리케이션이 처리 중인 데이터 스트림을 검사하는 데 PeriodicShardSyncManager 걸리는 시간(밀리초)입니다.

측정치 수준: Summary

단위: 밀리초

MultistreamTracker

MultistreamTracker 인터페이스를 사용하면 여러 데이터 스트림을 동시에 처리할 수 있는 KCL 소비자 애플리케이션을 구축할 수 있습니다.

지표 설명
DeletedStreams.Count

이 기간에 삭제된 데이터 스트림 수입니다.

측정치 수준: Summary

단위: 개

ActiveStreams.Count

처리 중인 활성 데이터 스트림 수입니다.

측정치 수준: Summary

단위: 개

StreamsPendingDeletion.Count

FormerStreamsLeasesDeletionStrategy에 따라 삭제 보류 중인 데이터 스트림 수입니다.

측정치 수준: Summary

단위: 개

작업자별 지표

이러한 지표는 Amazon EC2 인스턴스와 같이 Kinesis 데이터 스트림의 데이터를 사용하는 모든 레코드 프로세서에서 집계됩니다.

WorkerMetricStatsReporter

WorkerMetricStatReporter 작업은 현재 작업자의 지표를 작업자 지표 테이블에 주기적으로 게시하는 역할을 합니다. 이러한 지표는 LeaseAssignmentManager 작업에서 임대 할당을 수행하는 데 사용됩니다.

지표 설명

InMemoryMetricStatsReporterFailure

일부 작업자 지표의 실패로 인해 메모리 내 작업자 지표 값을 캡처하지 못한 횟수입니다.

측정치 수준: Summary

단위: 개

WorkerMetricStatsReporter.Time

WorkerMetricsStats 작업에 소요된 시간입니다.

측정치 수준: Summary

단위: 밀리초

WorkerMetricStatsReporter.Success

WorkerMetricsStats 작업이 성공적으로 완료된 횟수입니다.

측정치 수준: Summary

단위: 개

LeaseDiscovery

작업은 LeaseDiscovery 작업에 의해 현재 작업자에게 할당된 새 임대를 식별하는 역할을 합니다LeaseAssignmentManager. 이 작업의 로직에는 리스 테이블의 글로벌 보조 인덱스를 읽어 현재 작업자에게 할당된 리스를 식별하는 작업이 포함됩니다.

지표 설명

ListLeaseKeysForWorker.Time

리스 테이블에서 글로벌 보조 인덱스를 호출하고 현재 작업자에게 할당된 리스 키를 가져오는 시간입니다.

측정치 수준: Detailed

단위: 밀리초

FetchNewLeases.Time

리스 테이블에서 모든 새 리스를 가져오는 시간입니다.

측정치 수준: Detailed

단위: 밀리초

NewLeasesDiscovered

작업자에게 할당된 새 리스의 총 수입니다.

측정치 수준: Detailed

단위: 개

Time

LeaseDiscovery 작업에서 소요된 시간입니다.

측정치 수준: Summary

단위: 밀리초

Success

LeaseDiscovery 작업이 성공적으로 완료된 횟수입니다.

측정치 수준: Summary

단위: 개

OwnerMismatch

GSI 응답 및 임대 테이블의 일관된 읽기와 소유자 불일치 수입니다.

측정치 수준: Detailed

단위: 개

RenewAllLeases

RenewAllLeases 작업은 특정 작업자 인스턴스가 소유한 샤드 리스를 주기적으로 갱신합니다.

지표 설명
RenewLease.Success

작업자의 성공한 리스 갱신 수입니다.

측정치 수준: Detailed

단위: 개

RenewLease.Time

리스 갱신 작업에 소요된 시간입니다.

측정치 수준: Detailed

단위: 밀리초

CurrentLeases

모든 리스가 갱신된 후 작업자가 소유한 샤드 리스 수입니다.

측정치 수준: Summary

단위: 개

LostLeases

작업자가 소유한 모든 리스를 갱신하려는 시도 후에 손실된 샤드 리스 수입니다.

측정치 수준: Summary

단위: 개

Success

작업자의 리스 갱신 작업이 성공한 횟수입니다.

측정치 수준: Summary

단위: 개

Time

작업자의 모든 리스 갱신에 소요된 시간입니다.

측정치 수준: Summary

단위: 밀리초

TakeLeases

TakeLeases 작업은 모든 KCL 워커 간에 레코드 처리의 균형을 유지합니다. 현재 KCL 워커가 필요한 것보다 적은 샤드 리스를 보유하면 오버로드된 다른 KCL 워커에서 샤드 리스를 가져옵니다.

지표 설명
ListLeases.Success

KCL 애플리케이션 DynamoDB 테이블에서 모든 샤드 리스가 성공적으로 검색된 횟수입니다.

측정치 수준: Detailed

단위: 개

ListLeases.Time

KCL 애플리케이션 DynamoDB 테이블에서 모든 샤드 리스를 검색하는 데 소요된 시간입니다.

측정치 수준: Detailed

단위: 밀리초

TakeLease.Success

워커가 다른 KCL 워커에서 샤드 리스를 성공적으로 가져온 횟수입니다.

측정치 수준: Detailed

단위: 개

TakeLease.Time

작업자가 가져온 리스로 리스 테이블을 업데이트하는데 소요된 시간입니다.

측정치 수준: Detailed

단위: 밀리초

NumWorkers

특정 작업자가 식별한 총 작업자 수입니다.

측정치 수준: Summary

단위: 개

NeededLeases

밸런싱된 샤드 처리 로드를 위해 현재 작업자에 필요한 샤드 리스 수입니다.

측정치 수준: Detailed

단위: 개

LeasesToTake

작업자가 가져오려고 시도할 리스 수입니다.

측정치 수준: Detailed

단위: 개

TakenLeases

작업자가 성공적으로 가져온 리스 수입니다.

측정치 수준: Summary

단위: 개

TotalLeases

KCL 애플리케이션에서 처리 중인 총 샤드 수입니다.

측정치 수준: Detailed

단위: 개

ExpiredLeases

특정 작업자가 식별한 대로 임의의 작업자가 처리하지 않는 총 샤드 수입니다.

측정치 수준: Summary

단위: 개

Success

TakeLeases 작업이 성공적으로 완료된 횟수입니다.

측정치 수준: Summary

단위: 개

Time

작업자의 TakeLeases 작업에 소요된 시간입니다.

측정치 수준: Summary

단위: 밀리초

샤드별 지표

이 측정치는 단일 레코드 프로세서에서 집계됩니다.

ProcessTask

ProcessTask 작업은 스트림에서 레코드를 검색하기 위해 현재 반복자 위치로 GetRecords를 직접적으로 호출하고 레코드 프로세서 processRecords 함수를 간접적으로 호출합니다.

지표 설명
KinesisDataFetcher.getRecords.Success

Kinesis 데이터 스트림 샤드별로 성공한 GetRecords 작업 수입니다.

측정치 수준: Detailed

단위: 개

KinesisDataFetcher.getRecords.Time

Kinesis 데이터 스트림 샤드의 GetRecords 작업당 소요된 시간입니다.

측정치 수준: Detailed

단위: 밀리초

UpdateLease.Success

지정된 샤드의 레코드 프로세서가 성공적으로 수행한 체크포인트 수입니다.

측정치 수준: Detailed

단위: 개

UpdateLease.Time

지정된 샤드의 각 체크포인트 작업에 소요된 시간입니다.

측정치 수준: Detailed

단위: 밀리초

DataBytesProcessed

ProcessTask 호출에서 바이트 단위로 처리된 레코드의 총 크기입니다.

측정치 수준: Summary

단위: 바이트

RecordsProcessed

ProcessTask 호출에서 처리된 레코드 수입니다.

측정치 수준: Summary

단위: 개

ExpiredIterator

GetRecords를 호출할 때 수신된 ExpiredIteratorException 수입니다.

측정치 수준: Summary

단위: 개

MillisBehindLatest 현재 반복자가 샤드의 최신 레코드(팁)에서 뒤쳐진 시간입니다. 이 값은 응답의 최신 레코드와 현재 시간의 시간 차이보다 작거나 같습니다. 이는 마지막 응답 레코드의 타임스탬프를 비교하는 것보다 샤드가 팁에서 얼마나 멀리 떨어져 있는지를 더 정확하게 반영합니다. 이 값은 각 레코드의 모든 타임스탬프의 평균이 아닌 최신 레코드 배치에 적용됩니다.

측정치 수준: Summary

단위: 밀리초

RecordProcessor.processRecords.Time

레코드 프로세서의 processRecords 메서드에 소요된 시간입니다.

측정치 수준: Summary

단위: 밀리초

Success

성공적인 process task 작업 수입니다.

측정치 수준: Summary

단위: 개

Time

process task 작업에 소요된 시간입니다.

측정치 수준: Summary

단위: 밀리초