

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

# Amazon CloudWatch를 사용한 Kinesis Client Library 모니터링
<a name="monitoring-with-kcl"></a>

Amazon Kinesis Data Streams용 [Kinesis Client Library](https://docs.aws.amazon.com/kinesis/latest/dev/developing-consumers-with-kcl.html)(KCL)는 KCL 애플리케이션의 이름을 네임스페이스로 사용하여 사용자 대신 사용자 지정 Amazon CloudWatch 지표를 게시합니다. [CloudWatch 콘솔](https://console.aws.amazon.com/cloudwatch/)로 이동하여 **사용자 지정 지표**를 선택하면 이러한 지표를 볼 수 있습니다. 사용자 지정 지표에 대한 자세한 내용을 알아보려면 **Amazon CloudWatch 사용 설명서의 [사용자 지정 지표 게시](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/publishingMetrics.html)를 참조하세요.

KCL이 CloudWatch에 업로드한 지표에는 일반 요금이 부과됩니다. 특히 **Amazon CloudWatch 사용자 지정 지표 및 **Amazon CloudWatch API 요청 요금이 적용됩니다. 자세한 내용은 [Amazon CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/)을 참조하세요.

**Topics**
+ [지표 및 네임스페이스](#metrics-namespace)
+ [지표 수준 및 차원](#metric-levels)
+ [지표 구성](#metrics-config)
+ [메트릭 목록](#kcl-metrics-list)

## 지표 및 네임스페이스
<a name="metrics-namespace"></a>

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

## 지표 수준 및 차원
<a name="metric-levels"></a>

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

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

활성화된 차원  
모든 KCL 지표에는 CloudWatch로도 전송되는 관련 측정기준이 있습니다. KCL 2.x에서 KCL이 단일 데이터 스트림을 처리하도록 구성된 경우 모든 지표 측정기준(`Operation`, `ShardId` 및 `WorkerIdentifier`)이 기본적으로 활성화됩니다. 또한 KCL 2.x에서 KCL이 단일 데이터 스트림을 처리하도록 구성된 경우 `Operation` 측정기준을 비활성화할 수 없습니다. KCL 2.x에서 KCL이 여러 데이터 스트림을 처리하도록 구성된 경우 모든 지표 차원(`Operation`, `ShardId`, `StreamId` 및 `WorkerIdentifier`)이 기본적으로 활성화됩니다. 또한 KCL 2.x에서 KCL이 여러 데이터 스트림을 처리하도록 구성된 경우 `Operation` 및 `StreamId` 측정기준을 비활성화할 수 없습니다. `StreamId` 측정기준은 샤드별 지표에만 사용할 수 있습니다.  
 KCL 1.x에서 기본적으로 `Operation` 및 `ShardId` 측정기준만 활성화되어 있으며 `WorkerIdentifier` 측정기준은 비활성화되어 있습니다. KCL 1.x에서는 `Operation` 측정기준을 비활성화할 수 없습니다.  
CloudWatch 지표 측정기준에 대한 자세한 내용은 **Amazon CloudWatch 사용 설명서의 Amazon CloudWatch 개념의 [측정기준](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/cloudwatch_concepts.html#Dimension) 섹션을 참조하세요.  
`WorkerIdentifier` 측정기준이 활성화하면 특정 KCL 워커가 다시 시작될 때마다 다른 값이 워커 ID 속성에 사용되는 경우 새로운 `WorkerIdentifier` 측정기준 값이 있는 새 지표 집합이 CloudWatch에 전송됩니다. 특정 KCL 워커가 다시 시작될 때 `WorkerIdentifier` 측정기준 값이 동일해야 하는 경우 각 워커의 초기화 중에 동일한 워커 ID 값을 명시적으로 지정해야 합니다. 각 활성 KCL 워커의 워커 ID 값은 모든 KCL 워커에서 고유해야 합니다.

## 지표 구성
<a name="metrics-config"></a>

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

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

## 메트릭 목록
<a name="kcl-metrics-list"></a>

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

**Topics**
+ [KCL 애플리케이션별 지표](#kcl-metrics-per-app)
+ [작업자별 지표](#kcl-metrics-per-worker)
+ [샤드별 지표](#kcl-metrics-per-shard)

### KCL 애플리케이션별 지표
<a name="kcl-metrics-per-app"></a>

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

**Topics**
+ [LeaseAssignmentManager](#lease-assignment-manager)
+ [InitializeTask](#init-task)
+ [ShutdownTask](#shutdown-task)
+ [ShardSyncTask](#shard-sync-task)
+ [BlockOnParentTask](#block-parent-task)
+ [PeriodicShardSyncManager](#periodic-task)
+ [MultistreamTracker](#multi-task)

#### LeaseAssignmentManager
<a name="lease-assignment-manager"></a>

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


| 지표 | 설명 | 
| --- | --- | 
| LeaseAndWorkerMetricsLoad.Time | KCL 3.x에 도입된 새로운 리스 할당 및 로드 밸런싱 알고리즘인 리스 할당 관리자(LAM)의 모든 리스 및 워커 지표 항목을 로드하는 데 걸리는 시간입니다.<br />측정치 수준: Detailed<br />단위: 밀리초 | 
| TotalLeases | 현재 KCL 애플리케이션의 총 리스 수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| NumWorkers | 현재 KCL 애플리케이션의 총 워커 수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| AssignExpiredOrUnassignedLeases.Time | 만료된 리스의 메모리 내 할당을 수행하는 시간입니다.<br />측정치 수준: Detailed<br />단위: 밀리초 | 
| LeaseSpillover | 워커당 최대 리스 수 또는 최대 처리량 한도에 도달하여 할당되지 않은 리스 수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| BalanceWorkerVariance.Time | 워커 간 리스의 메모리 내 밸런싱을 수행하는 시간입니다.<br />측정치 수준: Detailed<br />단위: 밀리초 | 
| NumOfLeasesReassignment | 현재 재할당 반복에서 수행된 총 리스 재할당 수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| FailedAssignmentCount | DynamoDB 리스 테이블에 대한 AssignLease 직접 호출의 실패 수입니다.<br />측정치 수준: Detailed<br />단위: 개 | 
| ParallelyAssignLeases.Time | DynamoDB 리스 테이블에 대한 새 할당을 플러시하는 시간입니다.<br />측정치 수준: Detailed<br />단위: 밀리초 | 
| ParallelyAssignLeases.Success | 새 할당의 성공적인 플러시 수입니다.<br />측정치 수준: Detailed<br />단위: 개 | 
| TotalStaleWorkerMetricsEntry | 정리해야 하는 워커 지표 항목의 총 수입니다.<br />측정치 수준: Detailed<br />단위: 개 | 
| StaleWorkerMetricsCleanup.Time | DynamoDB 워커 지표 테이블에서 워커 지표 항목 삭제를 수행하는 시간입니다.<br />측정치 수준: Detailed<br />단위: 밀리초 | 
| Time | `LeaseAssignmentManager` 작업에 소요된 시간입니다.<br />측정치 수준: Summary<br />단위: 밀리초 | 
| Success | `LeaseAssignmentManager` 작업이 성공적으로 완료된 횟수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| ForceLeaderRelease | 리스 할당 관리자가 3회 연속으로 실패했으며 리더 워커가 리더십을 해제하고 있음을 나타냅니다.<br />측정치 수준: Summary<br />단위: 개 | 
| NumWorkersWithInvalidEntry | 유효하지 않은 것으로 간주되는 워커 지표 항목 수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| NumWorkersWithFailingWorkerMetric | 워커 지표의 값 중 하나가 -1(워커 지표 값을 사용할 수 없음)인 워커 지표 항목의 수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| LeaseDeserializationFailureCount | 역직렬화에 실패한 리스 테이블의 리스 항목입니다.<br />측정치 수준: Summary<br />단위: 개 | 

#### InitializeTask
<a name="init-task"></a>

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


| 지표 | 설명 | 
| --- | --- | 
| KinesisDataFetcher.getIterator.Success | KCL 애플리케이션별로 성공한 `GetShardIterator` 작업 수입니다.<br />측정치 수준: Detailed<br />단위: 개 | 
| KinesisDataFetcher.getIterator.Time | 지정된 KCL 애플리케이션의 `GetShardIterator` 작업당 소요된 시간입니다.<br />측정치 수준: Detailed<br />단위: 밀리초 | 
| RecordProcessor.initialize.Time | 레코드 프로세서의 초기화 메서드에 소요된 시간입니다.<br />측정치 수준: Summary<br />단위: 밀리초 | 
| Success | 성공한 레코드 프로세서 초기화 수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| Time | KCL 워커가 레코드 프로세서를 초기화하는 데 소요된 시간입니다.<br />측정치 수준: Summary<br />단위: 밀리초 | 

#### ShutdownTask
<a name="shutdown-task"></a>

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


| 지표 | 설명 | 
| --- | --- | 
| CreateLease.Success | 상위 샤드 종료 후 새로운 하위 샤드가 KCL 애플리케이션 DynamoDB 테이블에 성공적으로 추가된 횟수입니다.<br />측정치 수준: Detailed<br />단위: 개 | 
| CreateLease.Time | KCL 애플리케이션 DynamoDB 테이블에 새 하위 샤드 정보를 추가하는 데 소요된 시간입니다.<br />측정치 수준: Detailed<br />단위: 밀리초 | 
| UpdateLease.Success | 레코드 프로세서 종료 중 성공한 최종 체크포인트 수입니다.<br />측정치 수준: Detailed<br />단위: 개 | 
| UpdateLease.Time | 레코드 프로세서 종료 중 체크포인트 작업에 소요된 시간입니다.<br />측정치 수준: Detailed<br />단위: 밀리초 | 
| RecordProcessor.shutdown.Time | 레코드 프로세서의 종료 메서드에 소요된 시간입니다.<br />측정치 수준: Summary<br />단위: 밀리초 | 
| Success | 성공한 종료 작업 수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| Time | KCL 워커가 종료 작업에 소요한 시간입니다.<br />측정치 수준: Summary<br />단위: 밀리초 | 

#### ShardSyncTask
<a name="shard-sync-task"></a>

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


| 지표 | 설명 | 
| --- | --- | 
| CreateLease.Success | KCL 애플리케이션 DynamoDB 테이블에 새 샤드 정보를 추가하려는 시도가 성공한 횟수입니다.<br />측정치 수준: Detailed<br />단위: 개 | 
| CreateLease.Time | KCL 애플리케이션 DynamoDB 테이블에 새 샤드 정보를 추가하는 데 소요된 시간입니다.<br />측정치 수준: Detailed<br />단위: 밀리초 | 
| Success | 성공적인 샤드 동기화 작업 수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| Time | 샤드 동기화 작업에 소요된 시간입니다.<br />측정치 수준: Summary<br />단위: 밀리초 | 

#### BlockOnParentTask
<a name="block-parent-task"></a>

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


| 지표 | 설명 | 
| --- | --- | 
| Success | 성공적인 상위 샤드 완료 확인 수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| Time | 상위 샤드 완료에 소요된 시간입니다.<br />측정치 수준: Summary<br />단위: 밀리초 | 

#### PeriodicShardSyncManager
<a name="periodic-task"></a>

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

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


| 지표 | 설명 | 
| --- | --- | 
| NumStreamsToSync | 부분 임대를 포함하고 동기화를 위해 전달해야 하는 소비자 애플리케이션에서 처리 중인 데이터 스트림( AWS 계정당) 수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| NumStreamsWithPartialLeases | 부분 임대가 포함된 소비자 애플리케이션이 처리 중인 데이터 스트림( AWS 계정당) 수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| Success | `PeriodicShardSyncManager`가 소비자 애플리케이션에서 처리 중인 데이터 스트림에서 부분 리스를 성공적으로 식별할 수 있었던 횟수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| Time | 샤드 동기화가 필요한 데이터 스트림을 결정하기 위해 `PeriodicShardSyncManager`가 소비자 애플리케이션에서 처리 중인 데이터 스트림을 검사하는 데 걸리는 시간(밀리초)입니다.<br />측정치 수준: Summary<br />단위: 밀리초 | 

#### MultistreamTracker
<a name="multi-task"></a>

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


| 지표 | 설명 | 
| --- | --- | 
| DeletedStreams.Count | 이 기간에 삭제된 데이터 스트림 수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| ActiveStreams.Count | 처리 중인 활성 데이터 스트림 수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| StreamsPendingDeletion.Count | `FormerStreamsLeasesDeletionStrategy`에 따라 삭제 보류 중인 데이터 스트림 수입니다.<br />측정치 수준: Summary<br />단위: 개 | 

### 작업자별 지표
<a name="kcl-metrics-per-worker"></a>

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

**Topics**
+ [WorkerMetricStatsReporter](#worker-metrics-stats)
+ [LeaseDiscovery](#lease-discovery)
+ [RenewAllLeases](#renew-leases)
+ [TakeLeases](#take-leases)

#### WorkerMetricStatsReporter
<a name="worker-metrics-stats"></a>

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


| 지표 | 설명 | 
| --- | --- | 
| InMemoryMetricStatsReporterFailure | 일부 워커 지표의 실패로 인해 메모리 내 워커 지표 값을 캡처하지 못한 횟수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| WorkerMetricStatsReporter.Time | `WorkerMetricsStats` 작업에 소요된 시간입니다.<br />측정치 수준: Summary<br />단위: 밀리초 | 
| WorkerMetricStatsReporter.Success | `WorkerMetricsStats` 작업이 성공적으로 완료된 횟수입니다.<br />측정치 수준: Summary<br />단위: 개 | 

#### LeaseDiscovery
<a name="lease-discovery"></a>

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


| 지표 | 설명 | 
| --- | --- | 
| ListLeaseKeysForWorker.Time | 리스 테이블에서 글로벌 보조 인덱스를 직접 호출하고 현재 워커에 할당된 리스 키를 가져오는 시간입니다.<br />측정치 수준: Detailed<br />단위: 밀리초 | 
| FetchNewLeases.Time | 리스 테이블에서 모든 새 리스를 가져오는 시간입니다.<br />측정치 수준: Detailed<br />단위: 밀리초 | 
| NewLeasesDiscovered | 워커에 할당된 새 리스의 총 수입니다.<br />측정치 수준: Detailed<br />단위: 개 | 
| Time | `LeaseDiscovery` 작업에 소요된 시간입니다.<br />측정치 수준: Summary<br />단위: 밀리초 | 
| Success | `LeaseDiscovery` 작업이 성공적으로 완료된 횟수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| OwnerMismatch | GSI 응답과 리스 테이블의 일관된 읽기에서 소유자가 불일치한 횟수입니다.<br />측정치 수준: Detailed<br />단위: 개 | 

#### RenewAllLeases
<a name="renew-leases"></a>

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


| 지표 | 설명 | 
| --- | --- | 
| RenewLease.Success | 작업자의 성공한 리스 갱신 수입니다.<br />측정치 수준: Detailed<br />단위: 개 | 
| RenewLease.Time | 리스 갱신 작업에 소요된 시간입니다.<br />측정치 수준: Detailed<br />단위: 밀리초 | 
| CurrentLeases | 모든 리스가 갱신된 후 작업자가 소유한 샤드 리스 수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| LostLeases | 작업자가 소유한 모든 리스를 갱신하려는 시도 후에 손실된 샤드 리스 수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| Success | 워커의 리스 갱신 작업 성공 횟수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| Time | 작업자의 모든 리스 갱신에 소요된 시간입니다.<br />측정치 수준: Summary<br />단위: 밀리초 | 

#### TakeLeases
<a name="take-leases"></a>

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


| 지표 | 설명 | 
| --- | --- | 
| ListLeases.Success | KCL 애플리케이션 DynamoDB 테이블에서 모든 샤드 리스가 성공적으로 검색된 횟수입니다.<br />측정치 수준: Detailed<br />단위: 개 | 
| ListLeases.Time | KCL 애플리케이션 DynamoDB 테이블에서 모든 샤드 리스를 검색하는 데 소요된 시간입니다.<br />측정치 수준: Detailed<br />단위: 밀리초 | 
| TakeLease.Success | 워커가 다른 KCL 워커에서 샤드 리스를 성공적으로 가져온 횟수입니다.<br />측정치 수준: Detailed<br />단위: 개 | 
| TakeLease.Time | 작업자가 가져온 리스로 리스 테이블을 업데이트하는데 소요된 시간입니다.<br />측정치 수준: Detailed<br />단위: 밀리초 | 
| NumWorkers | 특정 작업자가 식별한 총 작업자 수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| NeededLeases | 밸런싱된 샤드 처리 로드를 위해 현재 작업자에 필요한 샤드 리스 수입니다.<br />측정치 수준: Detailed<br />단위: 개 | 
| LeasesToTake | 작업자가 가져오려고 시도할 리스 수입니다.<br />측정치 수준: Detailed<br />단위: 개 | 
| TakenLeases | 작업자가 성공적으로 가져온 리스 수입니다.<br />측정치 수준: Summary<br />단위: 개  | 
| TotalLeases | KCL 애플리케이션에서 처리 중인 총 샤드 수입니다.<br />측정치 수준: Detailed<br />단위: 개 | 
| ExpiredLeases | 특정 작업자가 식별한 대로 임의의 작업자가 처리하지 않는 총 샤드 수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| Success | `TakeLeases` 작업이 성공적으로 완료된 횟수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| Time | 작업자의 `TakeLeases` 작업에 소요된 시간입니다.<br />측정치 수준: Summary<br />단위: 밀리초 | 

### 샤드별 지표
<a name="kcl-metrics-per-shard"></a>

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

#### ProcessTask
<a name="process-task"></a>

`ProcessTask` 작업은 스트림에서 레코드를 검색하기 위해 현재 반복자 위치로 [GetRecords](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetRecords.html)를 직접적으로 호출하고 레코드 프로세서 `processRecords` 함수를 간접적으로 호출합니다.


| 지표 | 설명 | 
| --- | --- | 
| KinesisDataFetcher.getRecords.Success | Kinesis 데이터 스트림 샤드별로 성공한 `GetRecords` 작업 수입니다.<br />측정치 수준: Detailed<br />단위: 개 | 
| KinesisDataFetcher.getRecords.Time | Kinesis 데이터 스트림 샤드의 `GetRecords` 작업당 소요된 시간입니다.<br />측정치 수준: Detailed<br />단위: 밀리초 | 
| UpdateLease.Success | 지정된 샤드의 레코드 프로세서가 성공적으로 수행한 체크포인트 수입니다.<br />측정치 수준: Detailed<br />단위: 개 | 
| UpdateLease.Time | 지정된 샤드의 각 체크포인트 작업에 소요된 시간입니다.<br />측정치 수준: Detailed<br />단위: 밀리초 | 
| DataBytesProcessed | 각 `ProcessTask` 호출에서 바이트 단위로 처리된 레코드의 총 크기입니다.<br />측정치 수준: Summary<br />단위: 바이트 | 
| RecordsProcessed | 각 `ProcessTask` 호출에서 처리된 레코드 수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| ExpiredIterator | `GetRecords`를 호출할 때 수신된 ExpiredIteratorException 수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| MillisBehindLatest | 현재 반복자가 샤드의 최신 레코드(팁)에서 뒤쳐진 시간입니다. 이 값은 응답의 최신 레코드와 현재 시간의 시간 차이보다 작거나 같습니다. 마지막 응답 레코드의 타임스탬프와 비교하는 것보다 팁에서 샤드가 얼마나 멀리 있는지 반영하는 것이 더 정확합니다. 각 레코드에 있는 모든 타임스탬프의 평균이 아니라 최신 레코드 배치에 이 값이 적용됩니다.측정치 수준: Summary<br />단위: 밀리초 | 
| RecordProcessor.processRecords.Time | 레코드 프로세서의 `processRecords` 메서드에 소요된 시간입니다.<br />측정치 수준: Summary<br />단위: 밀리초 | 
| Success | 성공적인 process task 작업 수입니다.<br />측정치 수준: Summary<br />단위: 개 | 
| Time | process task 작업에 소요된 시간입니다.<br />측정치 수준: Summary<br />단위: 밀리초 | 