

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

# Kinesis Data Streams 모니터링
<a name="monitoring"></a>

다음 기능을 사용하여 Amazon Kinesis Data Streams의 데이터 스트림을 모니터링할 수 있습니다.
+ [CloudWatch 지표](monitoring-with-cloudwatch.md) - Kinesis Data Streams는 각 스트림에 대한 세부 모니터링과 함께 Amazon CloudWatch 사용자 지정 지표를 전송합니다.
+ [Kinesis 에이전트](agent-health.md) - Kinesis 에이전트는 사용자 지정 CloudWatch 지표를 게시하여 에이전트가 예상대로 작동하는지 평가할 수 있도록 지원합니다.
+ [API 로깅](logging-using-cloudtrail.md) - Kinesis Data Streams는 AWS CloudTrail 을 사용하여 API 호출을 기록하고 Amazon S3 버킷에 데이터를 저장합니다.
+ [Kinesis Client Library](monitoring-with-kcl.md) – Kinesis Client Library(KCL)는 샤드, 워커 및 KCL 애플리케이션별 지표를 제공합니다.
+ [Kinesis Producer Library](monitoring-with-kpl.md) - Amazon Kinesis Producer Library(KPL)는 샤드, 워커 및 KPL 애플리케이션별 지표를 제공합니다.

일반적인 모니터링 문제, 질문 및 문제 해결에 대한 자세한 내용은 다음을 참조하세요.
+  [Kinesis Data Streams 문제를 모니터링하고 해결하려면 어떤 지표를 사용해야 합니까?](https://aws.amazon.com/premiumsupport/knowledge-center/kinesis-data-streams-troubleshoot/)
+ [Kinesis Data Streams의 IteratorAgeMilliseconds 값이 계속 증가하는 이유는 무엇인가요?](https://aws.amazon.com/premiumsupport/knowledge-center/kinesis-data-streams-iteratorage-metric/)

# Amazon CloudWatch를 사용한 Amazon Kinesis Data Streams 서비스 모니터링
<a name="monitoring-with-cloudwatch"></a>

Amazon Kinesis Data Streams와 Amazon CloudWatch가 통합되어 Kinesis 데이터 스트림에 대한 CloudWatch 지표를 수집, 확인, 분석할 수 있습니다. 예를 들어 샤드 사용을 추적하기 위해 `IncomingBytes` 지표와 `OutgoingBytes` 지표를 모니터링하여 이 값을 스트림의 샤드 수와 비교할 수 있습니다.

구성한 스트림 지표 및 샤드 수준 지표는 1분마다 자동으로 수집되어 CloudWatch에 푸시됩니다. 측정치는 2주 간 보관되고 그 후에는 삭제됩니다.

다음 표에서는 Kinesis 데이터 스트림의 기본 스트림 수준 및 향상된 샤드 수준 모니터링을 설명합니다.


| Type | 설명 | 
| --- | --- | 
|  기본(스트림 수준)  |  자동으로 스트림 수준 데이터가 1분마다 무료로 전송됩니다.  | 
|  향상(샤드 수준)  |  추가 비용을 부담하면 샤드 수준 데이터가 1분마다 전송됩니다. 이 수준의 데이터를 가져오려면 [EnableEnhancedMonitoring](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_EnableEnhancedMonitoring.html) 작업을 사용하여 스트림에 해당 수준을 사용하도록 설정해야 합니다. 요금에 대한 자세한 내용은 [Amazon CloudWatch 제품 페이지](https://aws.amazon.com/cloudwatch)를 참조하세요.  | 

## Amazon Kinesis Data Streams 측정기준 및 지표
<a name="kinesis-metrics"></a>

Kinesis Data Streams는 스트림 수준과 샤드 수준(선택 사항)이라는 두 가지 수준에서 CloudWatch로 지표를 전송합니다. 스트림 수준 지표는 정상적인 조건에서 가장 일반적인 모니터링 사용 사례를 위한 것입니다. 샤드 수준 지표는 주로 문제 해결과 관련된 특정 모니터링 작업에 사용되며 [EnableEnhancedMonitoring](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_EnableEnhancedMonitoring.html) 작업을 사용하여 활성화됩니다.

CloudWatch 지표에서 수집한 통계에 대한 설명은 **Amazon CloudWatch 사용 설명서의 [CloudWatch 통계](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/cloudwatch_concepts.html#Statistic)를 참조하세요.

**Topics**
+ [

### 기본적인 스트림 수준 지표
](#kinesis-metrics-stream)
+ [

### 향상된 샤드 수준 지표
](#kinesis-metrics-shard)
+ [

### Amazon Kinesis Data Streams 지표의 차원
](#kinesis-metricdimensions)
+ [

### 권장되는 Amazon Kinesis Data Streams 지표
](#kinesis-metric-use)

### 기본적인 스트림 수준 지표
<a name="kinesis-metrics-stream"></a>

`AWS/Kinesis` 네임스페이스에는 다음과 같은 스트림 수준 지표가 포함되어 있습니다.

Kinesis Data Streams에서 이러한 스트림 수준 지표를 1분마다 CloudWatch에 전송합니다. 이 지표는 언제든지 사용할 수 있습니다.


| 지표 | 설명 | 
| --- | --- | 
| GetRecords.Bytes |  지정한 기간 동안 측정된, Kinesis 스트림에서 가져온 바이트 수입니다. Minimum, Maximum 및 Average 통계는 지정한 시간에 스트림에 사용된 단일 `GetRecords` 작업의 바이트 수를 의미합니다. 샤드 수준 지표 이름: `OutgoingBytes` 측정 기준: StreamName 통계: Minimum, Maximum, Average, Sum, Samples 단위: 바이트  | 
| GetRecords.IteratorAge |  이 지표는 더 이상 사용되지 않습니다. `GetRecords.IteratorAgeMilliseconds`를 사용합니다.  | 
| GetRecords.IteratorAgeMilliseconds |  Kinesis 스트림에 대한 모든 `GetRecords` 호출에서 지정한 기간 동안 측정된 마지막 레코드의 경과 시간입니다. 여기에서 경과 시간이란 현재 시간과 마지막 `GetRecords` 호출 레코드가 스트림에 작성된 시간의 차이를 말합니다. Minimum 통계와 Maximum 통계는 Kinesis 소비자 애플리케이션의 진행 상황을 추적하는 데 사용할 수 있습니다. 값이 0이면 읽어오는 레코드가 스트림을 완전히 따라잡았다는 것을 의미합니다. 샤드 수준 지표 이름: `IteratorAgeMilliseconds` 측정 기준: StreamName 통계: Minimum, Maximum, Average, Samples 단위: 밀리초  | 
| GetRecords.Latency |  `GetRecords` 작업 1건당 지정한 시간 동안 측정된 소요 시간 측정 기준: StreamName Statistics: Minimum, Maximum, Average 단위: 밀리초  | 
| GetRecords.Records |  지정한 시간 동안 측정하며, 샤드에서 가져온 레코드 수. Minimum, Maximum 및 Average 통계는 지정한 시간에 스트림에 사용된 단일 `GetRecords` 작업의 레코드 수를 의미합니다. 샤드 수준 지표 이름: `OutgoingRecords` 측정 기준: StreamName 통계: Minimum, Maximum, Average, Sum, Samples 단위: 개  | 
| GetRecords.Success |  지정한 시간 동안 측정하며, 스트림 1회마다 성공한 `GetRecords` 작업 수 측정 기준: StreamName 통계: Average, Sum, Samples 단위: 개  | 
| IncomingBytes |  지정한 기간 동안 Kinesis 스트림에 성공적으로 입력된 바이트 수입니다. 이 지표에는 `PutRecord` 작업과 `PutRecords` 작업의 바이트 수도 포함됩니다. Minimum, Maximum 및 Average 통계는 지정한 시간에 스트림에 사용된 단일 입력 작업의 바이트 수를 의미합니다. 샤드 수준 지표 이름: `IncomingBytes` 측정 기준: StreamName 통계: Minimum, Maximum, Average, Sum, Samples 단위: 바이트  | 
| IncomingRecords |  지정한 기간 동안 Kinesis 스트림에 성공적으로 입력된 레코드 수입니다. 이 지표에는 `PutRecord` 작업과 `PutRecords` 작업의 레코드 수도 포함됩니다. Minimum, Maximum 및 Average 통계는 지정한 시간에 스트림에 사용된 단일 입력 작업의 레코드 수를 의미합니다. 샤드 수준 지표 이름: `IncomingRecords` 측정 기준: StreamName 통계: Minimum, Maximum, Average, Sum, Samples 단위: 개  | 
| PutRecord.Bytes |  지정한 기간 동안 `PutRecord` 작업을 사용하여 Kinesis 스트림에 입력된 바이트 수입니다. 측정 기준: StreamName 통계: Minimum, Maximum, Average, Sum, Samples 단위: 바이트  | 
| PutRecord.Latency |  `PutRecord` 작업 1건당 지정한 시간 동안 측정된 소요 시간 측정 기준: StreamName Statistics: Minimum, Maximum, Average 단위: 밀리초  | 
| PutRecord.Success |  지정한 시간 동안 측정된, Kinesis 스트림당 성공한 `PutRecord` 작업 수입니다. Average는 스트림에 대한 성공적인 쓰기 작업 비율을 반영합니다. 측정 기준: StreamName 통계: Average, Sum, Samples 단위: 개  | 
| PutRecords.Bytes |  지정한 기간 동안 `PutRecords` 작업을 사용하여 Kinesis 스트림에 입력된 바이트 수입니다. 측정 기준: StreamName 통계: Minimum, Maximum, Average, Sum, Samples 단위: 바이트  | 
| PutRecords.Latency |  `PutRecords` 작업 1건당 지정한 시간 동안 측정된 소요 시간 측정 기준: StreamName Statistics: Minimum, Maximum, Average 단위: 밀리초  | 
| PutRecords.Records |  이 지표는 더 이상 사용되지 않습니다. `PutRecords.SuccessfulRecords`를 사용합니다. 측정 기준: StreamName 통계: Minimum, Maximum, Average, Sum, Samples 단위: 개  | 
| PutRecords.Success |  지정한 기간 동안 측정된, Kinesis 스트림당 최소 1개 이상의 레코드가 성공한 `PutRecords` 작업 수입니다. 측정 기준: StreamName 통계: Average, Sum, Samples 단위: 개  | 
| PutRecords.TotalRecords |  지정된 기간 동안 측정된, Kinesis 데이터 스트림당 `PutRecords` 작업에서 전송된 총 레코드 수입니다. 측정 기준: StreamName 통계: Minimum, Maximum, Average, Sum, Samples 단위: 개  | 
| PutRecords.SuccessfulRecords |  지정한 기간 동안 측정된, Kinesis 데이터 스트림당 `PutRecords` 작업에서 성공한 레코드 수입니다. 측정 기준: StreamName 통계: Minimum, Maximum, Average, Sum, Samples 단위: 개  | 
| PutRecords.FailedRecords |  지정된 기간 동안 측정된, Kinesis 데이터 스트림당 `PutRecords` 작업에서 내부 오류로 인해 거부된 레코드 수입니다. 간헐적인 내부 오류가 예상되므로 재시도가 필요합니다. 측정 기준: StreamName 통계: Minimum, Maximum, Average, Sum, Samples 단위: 개  | 
| PutRecords.ThrottledRecords |  지정된 기간 동안 측정된, Kinesis 데이터 스트림당 `PutRecords` 작업에서 제한으로 인해 거부된 레코드 수입니다. 측정 기준: StreamName 통계: Minimum, Maximum, Average, Sum, Samples 단위: 개  | 
| ReadProvisionedThroughputExceeded |  지정한 시간 동안 측정하며, 스트림 병목 형상을 초래한 `GetRecords` 호출 수. 이 지표에서 가장 흔하게 사용되는 통계는 Average입니다. Minimum 통계 값이 1일 때는 지정한 시간 동안 모든 레코드가 스트림 병목 현상을 초래한 것을 의미합니다. Maximum 통계 값이 0(영)일 때는 지정한 시간 동안 스트림 병목 현상을 초래한 레코드가 없다는 것을 의미합니다. 샤드 수준 지표 이름: `ReadProvisionedThroughputExceeded` 측정 기준: StreamName 통계: Minimum, Maximum, Average, Sum, Samples 단위: 개  | 
| SubscribeToShard.RateExceeded | 이 측정치는 동일한 소비자에 의한 활성 구독이 이미 있기 때문에 새로운 구독 시도가 실패할 경우 또는 이 작업에 허용되는 초당 호출 수를 초과할 경우 생성됩니다.측정 기준: StreamName, ConsumerName | 
| SubscribeToShard.Success |  이 측정치는 SubscribeToShard 구독이 성공적으로 설정되었는지 여부를 기록합니다. 구독은 최대 5분간만 지속됩니다. 따라서 이 측정치는 적어도 5분마다 한 번 생성됩니다. 측정 기준: StreamName, ConsumerName  | 
| SubscribeToShardEvent.Bytes |  지정한 시간 동안 측정하며, 샤드로부터 수신한 바이트 수. Minimum, Maximum 및 Average 통계는 지정한 시간 동안 단일 이벤트에 게시된 바이트 수를 의미합니다. 샤드 수준 지표 이름: `OutgoingBytes` 측정 기준: StreamName, ConsumerName 통계: Minimum, Maximum, Average, Sum, Samples 단위: 바이트  | 
| SubscribeToShardEvent.MillisBehindLatest |  읽기 레코드가 스트림 팁보다 뒤처진 시간(밀리초)으로, 소비자가 현재 시간보다 얼마나 뒤처져 있는지를 나타냅니다. 측정 기준: StreamName, ConsumerName 통계: Minimum, Maximum, Average, Samples 단위: 밀리초  | 
| SubscribeToShardEvent.Records |  지정한 시간 동안 측정하며, 샤드로부터 수신한 레코드 수. Minimum, Maximum 및 Average 통계는 지정한 시간 동안 단일 이벤트의 레코드 수를 의미합니다. 샤드 수준 지표 이름: `OutgoingRecords` 측정 기준: StreamName, ConsumerName 통계: Minimum, Maximum, Average, Sum, Samples 단위: 개  | 
| SubscribeToShardEvent.Success | 이 측정치는 이벤트가 성공적으로 게시될 때마다 생성됩니다. 활성 구독이 있는 경우에만 생성됩니다.측정 기준: StreamName, ConsumerName통계: Minimum, Maximum, Average, Sum, Samples단위: 개 | 
| WriteProvisionedThroughputExceeded |  지정한 시간 동안 스트림 병목 현상으로 인해 거부된 레코드 수. 이 지표에는 `PutRecord` 작업과 `PutRecords` 작업에서 발생하는 병목 현상도 포함됩니다. 이 지표에서 가장 흔하게 사용되는 통계는 Average입니다. Minimum 통계가 0이 아닌 값일 때는 지정한 시간 동안 레코드에 스트림 병목 현상이 발생하였다는 것을 의미합니다. Maximum 통계 값이 0(영)일 때는 지정한 시간 동안 스트림 병목 현상이 발생한 레코드가 없다는 것을 의미합니다. 샤드 수준 지표 이름: `WriteProvisionedThroughputExceeded` 측정 기준: StreamName 통계: Minimum, Maximum, Average, Sum, Samples 단위: 개  | 

### 향상된 샤드 수준 지표
<a name="kinesis-metrics-shard"></a>

`AWS/Kinesis` 네임스페이스에는 다음과 같은 샤드 수준 지표가 포함되어 있습니다.

Kinesis는 다음 샤드 수준 지표를 1분마다 CloudWatch에 전송합니다. 각 지표 측정기준은 1개의 CloudWatch 지표를 생성하고 매월 약 4만 3,200개의 `PutMetricData` API 호출을 수행합니다. 이 지표는 기본적으로 활성화되어 있지 않습니다. Kinesis에서 내보낸, 향상된 지표에는 요금이 부과됩니다. 자세한 내용은 제목 **Amazon CloudWatch 사용자 지정 지표 아래의 [Amazon CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/)을 참조하세요. 요금은 매월 지표당 공유마다 부과됩니다.


| 지표 | 설명 | 
| --- | --- | 
| IncomingBytes |  지정한 시간 동안 샤드에 성공적으로 입력된 바이트 수. 이 지표에는 `PutRecord` 작업과 `PutRecords` 작업의 바이트 수도 포함됩니다. Minimum, Maximum 및 Average 통계는 지정한 시간에 샤드에 사용된 단일 입력 작업의 바이트 수를 의미합니다. 스트림 수준 지표 이름: `IncomingBytes` 차원: StreamName, ShardId 통계: Minimum, Maximum, Average, Sum, Samples 단위: 바이트  | 
| IncomingRecords |  지정한 시간 동안 샤드에 성공적으로 입력된 레코드 수. 이 지표에는 `PutRecord` 작업과 `PutRecords` 작업의 레코드 수도 포함됩니다. Minimum, Maximum 및 Average 통계는 지정한 시간에 샤드에 사용된 단일 입력 작업의 레코드 수를 의미합니다. 스트림 수준 지표 이름: `IncomingRecords` 차원: StreamName, ShardId 통계: Minimum, Maximum, Average, Sum, Samples 단위: 개  | 
| IteratorAgeMilliseconds |  샤드에 대한 모든 `GetRecords` 호출에서 지정한 기간 동안 측정된 마지막 레코드의 경과 시간. 여기에서 경과 시간이란 현재 시간과 마지막 `GetRecords` 호출 레코드가 스트림에 작성된 시간의 차이를 말합니다. Minimum 통계와 Maximum 통계는 Kinesis 소비자 애플리케이션의 진행 상황을 추적하는 데 사용할 수 있습니다. 값이 0(영)이면 읽어오는 레코드가 스트림을 완전히 따라잡았다는 것을 의미합니다. 스트림 수준 지표 이름: `GetRecords.IteratorAgeMilliseconds` 차원: StreamName, ShardId 통계: Minimum, Maximum, Average, Samples 단위: 밀리초  | 
| OutgoingBytes |  지정한 시간 동안 측정하며, 샤드에서 가져온 바이트 수. Minimum, Maximum 및 Average 통계는 지정한 시간 동안 단일 `GetRecords` 작업에서 반환된 또는 샤드의 단일 `SubscribeToShard` 이벤트에서 게시된 바이트 수를 의미합니다. 스트림 수준 지표 이름: `GetRecords.Bytes` 차원: StreamName, ShardId 통계: Minimum, Maximum, Average, Sum, Samples 단위: 바이트  | 
| OutgoingRecords |  지정한 시간 동안 측정하며, 샤드에서 가져온 레코드 수. Minimum, Maximum 및 Average 통계는 지정한 시간 동안 단일 `GetRecords` 작업에서 반환된 또는 샤드의 단일 `SubscribeToShard` 이벤트에서 게시된 레코드 수를 의미합니다. 스트림 수준 지표 이름: `GetRecords.Records` 차원: StreamName, ShardId 통계: Minimum, Maximum, Average, Sum, Samples 단위: 개  | 
| ReadProvisionedThroughputExceeded |  지정한 시간 동안 측정하며, 샤드 병목 형상을 초래한 `GetRecords` 호출 수. 이 예외 수는 1초마다 샤드 1개당 읽기 수가 5개이거나, 샤드 1개마다 초당 읽기 크기가 2MB로 제한되는 모든 차원에 적용됩니다. 이 지표에서 가장 흔하게 사용되는 통계는 Average입니다. Minimum 통계 값이 1일 때는 지정한 시간 동안 모든 레코드가 샤드 병목 현상을 초래한 것을 의미합니다. Maximum 통계 값이 0(영)일 때는 지정한 시간 동안 샤드 병목 현상을 초래한 레코드가 없다는 것을 의미합니다. 스트림 수준 지표 이름: `ReadProvisionedThroughputExceeded` 차원: StreamName, ShardId 통계: Minimum, Maximum, Average, Sum, Samples 단위: 개  | 
| WriteProvisionedThroughputExceeded |  지정한 시간 동안 샤드 병목 현상으로 인해 거부된 레코드 수. 이 지표는 `PutRecord` 작업과 `PutRecords` 작업의 병목 현상도 포함되며, 샤드 1개마다 초당 레코드 수가 1,000개이거나, 혹은 샤드 1개마다 초당 레코드 크기가 1MB로 제한되는 모든 차원에 적용됩니다. 이 지표에서 가장 흔하게 사용되는 통계는 Average입니다. Minimum 통계가 0이 아닌 값일 때는 지정한 시간 동안 레코드에 샤드 병목 현상이 발생하였다는 것을 의미합니다. Maximum 통계 값이 0(영)일 때는 지정한 시간 동안 샤드 병목 현상이 발생한 레코드가 없다는 것을 의미합니다. 스트림 수준 지표 이름: `WriteProvisionedThroughputExceeded` 차원: StreamName, ShardId 통계: Minimum, Maximum, Average, Sum, Samples 단위: 개  | 

### Amazon Kinesis Data Streams 지표의 차원
<a name="kinesis-metricdimensions"></a>


|  차원  |  설명  | 
| --- | --- | 
|  StreamName  |  Kinesis 비디오 스트림의 이름입니다. 사용 가능한 모든 통계는 `StreamName`로 필터링됩니다.  | 

### 권장되는 Amazon Kinesis Data Streams 지표
<a name="kinesis-metric-use"></a>

Kinesis Data Streams 고객은 몇 가지 Amazon Kinesis Data Streams 지표에 특히 관심을 가질 수 있습니다. 다음은 권장되는 측정치와 그 용도 목록입니다.


| 지표 | 사용 관련 참고 사항 | 
| --- | --- | 
|  `GetRecords.IteratorAgeMilliseconds`  |  스트림의 모든 샤드와 소비자에서 읽기 위치를 추적합니다. 반복자 수명이 보존 기간(기본적으로 24시간, 최대 7일까지 구성 가능)의 50%를 경과하면 레코드 만료로 인해 데이터가 손실될 위험이 있습니다. 데이터가 손실되기 전에 알리도록 최대 통계에 CloudWatch 경보를 사용하는 것이 좋습니다. 이 측정치가 사용되는 시나리오의 예는 [소비자 레코드 처리 속도가 느려지는 경우](troubleshooting-consumers.md#record-processing-falls-behind)를 참조하십시오.  | 
|  `ReadProvisionedThroughputExceeded`  |  소비자 측 레코드 처리 속도가 느려질 때 병목 현상이 일어난 위치를 알기 어려울 때가 있습니다. 이 측정치를 사용하여 읽기 처리량 제한 초과로 인해 읽기가 제한되고 있는지 확인하십시오. 이 지표에서 가장 흔하게 사용되는 통계는 Average입니다.  | 
| WriteProvisionedThroughputExceeded | ReadProvisionedThroughputExceeded 측정치와 같은 용도지만 스트림의 생산자(넣기) 측에 사용됩니다. 이 지표에서 가장 흔하게 사용되는 통계는 Average입니다. | 
| PutRecord.Success, PutRecords.Success | 레코드가 스트림에 대해 실패할지 나타내기 위해 Average 통계에 CloudWatch 경보를 사용하는 것이 좋습니다. 생산자가 무엇을 사용하는지에 따라 put 유형을 한 개 또는 둘 다 선택합니다. Amazon Kinesis Producer Library(KPL)를 사용하는 경우 PutRecords.Success를 사용합니다. | 
| GetRecords.Success | 레코드가 스트림에서 실패할지 나타내기 위해 평균 통계에 CloudWatch 경보를 사용하는 것이 좋습니다. | 

## Kinesis Data Streams에 대한 Amazon CloudWatch 지표에 액세스
<a name="cloudwatch-metrics"></a>

CloudWatch 콘솔, 명령줄 또는 CloudWatch API를 사용하여 Kinesis Data Streams에 대한 지표를 모니터링할 수 있습니다. 다음의 절차는 이처럼 다양한 방법을 사용하여 측정치에 액세스하는 방법을 설명합니다.

**CloudWatch 콘솔을 사용하여 지표에 액세스**

1. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1. 탐색 모음에서 리전을 선택합니다.

1. 탐색 창에서 **지표(Metrics)**를 선택합니다.

1. **CloudWatch Metrics by Category(범주별 CloudWatch 지표)** 창에서 **Kinesis Metrics(Kinesis 지표)**를 선택합니다.

1. 관련 행을 클릭하여 지정된 **MetricName** 및 **StreamName**의 통계를 봅니다.

   **참고:** 대부분의 콘솔 통계 이름은 **읽기 처리량**과 **쓰기 처리량**을 제외하고 앞에 나열된 해당 CloudWatch 지표 이름과 일치합니다. 이러한 통계는 5분 간격으로 계산됩니다. **쓰기 처리량**은 `IncomingBytes` 지표를 모니터링하고 **읽기 처리량**은 `GetRecords.Bytes`를 모니터링합니다.

1. (선택 사항) 그래프 창에서 통계와 시간 기간을 선택한 후 다음 설정을 사용하여 CloudWatch 경보를 생성합니다.

**를 사용하여 지표에 액세스하려면 AWS CLI**  
[list-metrics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/list-metrics.html) 명령과 [get-metric-statistics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/get-metric-statistics.html) 명령을 사용합니다.

**CloudWatch 콘솔을 사용하여 지표에 액세스**  
[mon-list-metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/cli/cli-mon-list-metrics.html) 명령과 [mon-get-stats](https://docs.aws.amazon.com/AmazonCloudWatch/latest/cli/cli-mon-get-stats.html) 명령을 사용합니다.

**CloudWatch API를 사용하여 지표에 액세스**  
[ListMetrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_ListMetrics.html) 작업과 [GetMetricStatistics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html) 작업을 사용합니다.

# Amazon CloudWatch를 사용한 Kinesis Data Streams 에이전트 상태 모니터링
<a name="agent-health"></a>

에이전트는 **AWS KinesisAgent**라는 네임스페이스를 사용하여 사용자 지정 CloudWatch 지표를 게시합니다. 이러한 지표는 에이전트가 지정된 대로 Kinesis Data Streams에 데이터를 제출하고 있는지, 에이전트가 정상이며 데이터 생산자에서 적절한 양의 CPU와 메모리 리소스를 소비하고 있는지 평가하는 데 도움이 됩니다. 전송된 레코드 수와 바이트 등의 지표는 에이전트가 스트림에 데이터를 제출하는 속도를 이해하는 데 유용합니다. 이러한 측정치가 예상 임계값에 다소 못 미치거나 0으로 떨어지는 경우, 구성 문제, 네트워크 오류 또는 에이전트 상태 문제를 나타낼 수 있습니다. 호스트상의 CPU 및 메모리 소비 등의 측정치와 에이전트 오류 카운터는 데이터 생산자의 리소스 사용량을 나타내며, 잠재적인 구성 또는 호스트 오류에 대한 통찰을 제공합니다. 마지막으로 에이전트는 서비스 예외도 로깅하여 에이전트 문제를 조사하는 데 도움을 줍니다. 이러한 측정치는 에이전트 구성 설정 `cloudwatch.endpoint`에 지정된 리전에서 보고됩니다. 여러 Kinesis 에이전트에서 게시된 CloudWatch 지표는 집계되거나 결합됩니다. 에이전트 구성에 대한 자세한 내용은 [에이전트 구성 설정 지정](writing-with-agents.md#agent-config-settings) 단원을 참조하세요.

## CloudWatch를 사용하여 모니터링
<a name="agent-metrics"></a>

Kinesis Data Streams 에이전트는 CloudWatch에 다음 지표를 전송합니다.


| 지표 | 설명 | 
| --- | --- | 
| BytesSent |  지정된 기간 동안 Kinesis Data Streams에 전송된 바이트 수입니다. 단위: 바이트  | 
| RecordSendAttempts |  지정된 기간 동안 `PutRecords`에 대한 호출에서 시도한 레코드 수입니다(처음 또는 다시 시도). 단위: 개  | 
| RecordSendErrors |  지정한 기간 동안 재시도를 포함해 `PutRecords`에 대한 호출에서 실패 상태를 반환한 레코드 수입니다. 단위: 개  | 
| ServiceErrors |  지정된 기간 동안 서비스 오류(조절 오류 제외)를 일으킨 `PutRecords`에 대한 호출 수입니다. 단위: 개  | 

# 를 사용하여 Amazon Kinesis Data Streams API 호출 로깅 AWS CloudTrail
<a name="logging-using-cloudtrail"></a>

Amazon Kinesis Data Streams는 Kinesis Data Streams에서 사용자 AWS CloudTrail, 역할 또는 서비스가 수행한 작업에 대한 레코드를 제공하는 AWS 서비스와 통합됩니다. CloudTrail은 Kinesis Data Streams에 대한 모든 API 호출을 이벤트로 캡처합니다. 캡처되는 호출에는 Kinesis Data Streams 콘솔로부터의 호출과 Kinesis Data Streams API 작업에 대한 코드 호출이 포함됩니다. 추적을 생성하면 Kinesis Data Streams 이벤트를 비롯하여 CloudTrail 이벤트를 Amazon S3 버킷으로 지속적으로 배포하도록 할 수 있습니다. 추적을 구성하지 않은 경우에도 **이벤트 기록**에서 CloudTrail 콘솔의 최신 이벤트를 볼 수 있습니다. CloudTrail에서 수집한 정보를 사용하여 Kinesis Data Streams에 수행된 요청, 요청이 수행된 IP 주소, 요청을 수행한 사람, 요청이 수행된 시간 및 추가 세부 정보를 확인할 수 있습니다.

구성 및 활성화 방법을 포함하여 CloudTrail에 대한 자세한 내용은 [AWS CloudTrail 사용자 안내서](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)를 참조하세요.

## CloudTrail의 Kinesis Data Streams 정보
<a name="service-name-info-in-cloudtrail"></a>

 AWS 계정을 생성할 때 계정에서 CloudTrail이 활성화됩니다. 지원되는 이벤트 활동이 Kinesis Data Streams에서 발생하면 해당 활동은 **이벤트 기록**의 다른 AWS 서비스 이벤트와 함께 CloudTrail 이벤트에 기록됩니다. AWS 계정에서 최근 이벤트를 보고 검색하고 다운로드할 수 있습니다. 자세한 설명은 [CloudTrail 이벤트 기록으로 이벤트 보기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)를 참조하세요.

Kinesis Data Streams에 대한 이벤트를 포함하여 AWS 계정에 이벤트를 지속적으로 기록하려면 추적을 생성합니다. CloudTrail은 *추적*을 사용하여 Amazon S3 버킷으로 로그 파일을 전송할 수 있습니다. 기본적으로 콘솔에서 추적을 생성하면 추적이 모든 AWS 리전에 적용됩니다. 추적은 AWS 파티션의 모든 리전에서 이벤트를 로깅하고 지정한 Amazon S3 버킷으로 로그 파일을 전송합니다. 또한 CloudTrail 로그에서 수집된 이벤트 데이터를 추가로 분석하고 조치를 취하도록 다른 AWS 서비스를 구성할 수 있습니다. 자세한 내용은 다음 자료를 참조하세요.
+ [추적 생성 개요](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail 지원 서비스 및 통합](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [CloudTrail에서 Amazon SNS 알림 구성](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ [여러 리전으로부터 CloudTrail 로그 파일 받기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html) 및 [여러 계정으로부터 CloudTrail 로그 파일 받기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

Kinesis Data Streams는 CloudTrail 로그 파일에 다음 작업을 이벤트로 로깅합니다.
+ [AddTagsToStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_AddTagsToStream.html)
+ [CreateStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_CreateStream.html)
+ [DecreaseStreamRetentionPeriod](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DecreaseStreamRetentionPeriod.html)
+ [DeleteStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DeleteStream.html)
+ [DeregisterStreamConsumer](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DeregisterStreamConsumer.html)
+ [DescribeStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DescribeStream.html)
+ [DescribeStreamConsumer](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DescribeStreamConsumer.html)
+ [DisableEnhancedMonitoring](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DisableEnhancedMonitoring.html)
+ [EnableEnhancedMonitoring](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_EnableEnhancedMonitoring.html)
+ [GetRecords](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetRecords.html)
+ [GetShardIterator](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetShardIterator.html)
+ [IncreaseStreamRetentionPeriod](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_IncreaseStreamRetentionPeriod.html)
+ [ListStreamConsumers](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListStreamConsumers.html)
+ [ListStreams](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListStreams.html)
+ [ListTagsForStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListTagsForStream.html)
+ [MergeShards](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_MergeShards.html)
+ [PutRecord](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecord.html)
+ [PutRecords](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecords.html)
+ [RegisterStreamConsumer](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_RegisterStreamConsumer.html)
+ [RemoveTagsFromStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_RemoveTagsFromStream.html)
+ [SplitShard](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_SplitShard.html)
+ [StartStreamEncryption](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_StartStreamEncryption.html)
+ [StopStreamEncryption](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_StopStreamEncryption.html)
+ [SubscribeToShard](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_SubscribeToShard.html)
+ [UpdateShardCount](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_UpdateShardCount.html)
+ [UpdateStreamMode](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_UpdateStreamMode.html)

모든 이벤트 또는 로그 항목에는 요청을 생성했던 사용자에 관한 정보가 포함됩니다. ID 정보를 이용하면 다음을 쉽게 판단할 수 있습니다.
+ 요청이 루트 또는 AWS Identity and Access Management (IAM) 사용자 자격 증명으로 이루어졌는지 여부입니다.
+ 역할 또는 페더레이션 사용자의 임시 자격 증명을 사용하여 요청이 생성되었는지 여부.
+ 요청이 다른 AWS 서비스에 의해 이루어졌는지 여부입니다.

자세한 설명은 [CloudTrail userIdentity 요소](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)를 참조하세요.

## 예: Kinesis Data Streams 로그 파일 항목
<a name="understanding-service-name-entries"></a>

추적이란 지정한 Amazon S3 버킷에 이벤트를 로그 파일로 입력할 수 있게 하는 구성입니다. CloudTrail 로그 파일에는 하나 이상의 로그 항목이 포함될 수 있습니다. 이벤트는 모든 소스로부터의 단일 요청을 나타내며 요청 작업, 작업 날짜와 시간, 요청 파라미터 등에 대한 정보가 들어 있습니다. CloudTrail 로그 파일은 퍼블릭 API 직접 호출의 주문 스택 트레이스가 아니므로 특정 순서로 표시되지 않습니다.

다음은 `CreateStream`, `DescribeStream`, `ListStreams`, `DeleteStream`, `SplitShard` 및 `MergeShards` 작업을 보여주는 CloudTrail 로그 항목이 나타낸 예입니다.

```
{
    "Records": [
        {
            "eventVersion": "1.01",
            "userIdentity": {
                "type": "IAMUser",
                "principalId": "EX_PRINCIPAL_ID",
                "arn": "arn:aws:iam::012345678910:user/Alice",
                "accountId": "012345678910",
                "accessKeyId": "EXAMPLE_KEY_ID",
                "userName": "Alice"
            },
            "eventTime": "2014-04-19T00:16:31Z",
            "eventSource": "kinesis.amazonaws.com",
            "eventName": "CreateStream",
            "awsRegion": "us-east-1",
            "sourceIPAddress": "127.0.0.1",
            "userAgent": "aws-sdk-java/unknown-version Linux/x.xx",
            "requestParameters": {
                "shardCount": 1,
                "streamName": "GoodStream"
            },
            "responseElements": null,
            "requestID": "db6c59f8-c757-11e3-bc3b-57923b443c1c",
            "eventID": "b7acfcd0-6ca9-4ee1-a3d7-c4e8d420d99b"
        },
        {
            "eventVersion": "1.01",
            "userIdentity": {
                "type": "IAMUser",
                "principalId": "EX_PRINCIPAL_ID",
                "arn": "arn:aws:iam::012345678910:user/Alice",
                "accountId": "012345678910",
                "accessKeyId": "EXAMPLE_KEY_ID",
                "userName": "Alice"
            },
            "eventTime": "2014-04-19T00:17:06Z",
            "eventSource": "kinesis.amazonaws.com",
            "eventName": "DescribeStream",
            "awsRegion": "us-east-1",
            "sourceIPAddress": "127.0.0.1",
            "userAgent": "aws-sdk-java/unknown-version Linux/x.xx",
            "requestParameters": {
                "streamName": "GoodStream"
            },
            "responseElements": null,
            "requestID": "f0944d86-c757-11e3-b4ae-25654b1d3136",
            "eventID": "0b2f1396-88af-4561-b16f-398f8eaea596"
        },
        {
            "eventVersion": "1.01",
            "userIdentity": {
                "type": "IAMUser",
                "principalId": "EX_PRINCIPAL_ID",
                "arn": "arn:aws:iam::012345678910:user/Alice",
                "accountId": "012345678910",
                "accessKeyId": "EXAMPLE_KEY_ID",
                "userName": "Alice"
            },
            "eventTime": "2014-04-19T00:15:02Z",
            "eventSource": "kinesis.amazonaws.com",
            "eventName": "ListStreams",
            "awsRegion": "us-east-1",
            "sourceIPAddress": "127.0.0.1",
            "userAgent": "aws-sdk-java/unknown-version Linux/x.xx",
            "requestParameters": {
                "limit": 10
            },
            "responseElements": null,
            "requestID": "a68541ca-c757-11e3-901b-cbcfe5b3677a",
            "eventID": "22a5fb8f-4e61-4bee-a8ad-3b72046b4c4d"
        },
        {
            "eventVersion": "1.01",
            "userIdentity": {
                "type": "IAMUser",
                "principalId": "EX_PRINCIPAL_ID",
                "arn": "arn:aws:iam::012345678910:user/Alice",
                "accountId": "012345678910",
                "accessKeyId": "EXAMPLE_KEY_ID",
                "userName": "Alice"
            },
            "eventTime": "2014-04-19T00:17:07Z",
            "eventSource": "kinesis.amazonaws.com",
            "eventName": "DeleteStream",
            "awsRegion": "us-east-1",
            "sourceIPAddress": "127.0.0.1",
            "userAgent": "aws-sdk-java/unknown-version Linux/x.xx",
            "requestParameters": {
                "streamName": "GoodStream"
            },
            "responseElements": null,
            "requestID": "f10cd97c-c757-11e3-901b-cbcfe5b3677a",
            "eventID": "607e7217-311a-4a08-a904-ec02944596dd"
        },
        {
            "eventVersion": "1.01",
            "userIdentity": {
                "type": "IAMUser",
                "principalId": "EX_PRINCIPAL_ID",
                "arn": "arn:aws:iam::012345678910:user/Alice",
                "accountId": "012345678910",
                "accessKeyId": "EXAMPLE_KEY_ID",
                "userName": "Alice"
            },
            "eventTime": "2014-04-19T00:15:03Z",
            "eventSource": "kinesis.amazonaws.com",
            "eventName": "SplitShard",
            "awsRegion": "us-east-1",
            "sourceIPAddress": "127.0.0.1",
            "userAgent": "aws-sdk-java/unknown-version Linux/x.xx",
            "requestParameters": {
                "shardToSplit": "shardId-000000000000",
                "streamName": "GoodStream",
                "newStartingHashKey": "11111111"
            },
            "responseElements": null,
            "requestID": "a6e6e9cd-c757-11e3-901b-cbcfe5b3677a",
            "eventID": "dcd2126f-c8d2-4186-b32a-192dd48d7e33"
        },
        {
            "eventVersion": "1.01",
            "userIdentity": {
                "type": "IAMUser",
                "principalId": "EX_PRINCIPAL_ID",
                "arn": "arn:aws:iam::012345678910:user/Alice",
                "accountId": "012345678910",
                "accessKeyId": "EXAMPLE_KEY_ID",
                "userName": "Alice"
            },
            "eventTime": "2014-04-19T00:16:56Z",
            "eventSource": "kinesis.amazonaws.com",
            "eventName": "MergeShards",
            "awsRegion": "us-east-1",
            "sourceIPAddress": "127.0.0.1",
            "userAgent": "aws-sdk-java/unknown-version Linux/x.xx",
            "requestParameters": {
                "streamName": "GoodStream",
                "adjacentShardToMerge": "shardId-000000000002",
                "shardToMerge": "shardId-000000000001"
            },
            "responseElements": null,
            "requestID": "e9f9c8eb-c757-11e3-bf1d-6948db3cd570",
            "eventID": "77cf0d06-ce90-42da-9576-71986fec411f"
        }
    ]
}
```

# 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)의 모든 리스 및 워커 지표 항목을 로드하는 데 걸리는 시간입니다. 측정치 수준: 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
<a name="init-task"></a>

`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
<a name="shutdown-task"></a>

`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
<a name="shard-sync-task"></a>

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


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

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

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


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

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

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

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


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

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

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


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

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

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

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


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

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

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


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

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

`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 단위: 밀리초  | 

### 샤드별 지표
<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` 작업 수입니다. 측정치 수준: 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 단위: 밀리초  | 

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

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

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

**Topics**
+ [

## 지표, 차원 및 네임스페이스
](#kpl-metrics)
+ [

## 지표 수준 및 세부 수준
](#kpl-metrics-granularity)
+ [

## 로컬 액세스 및 Amazon CloudWatch 업로드
](#kpl-metrics-local-upload)
+ [

## 메트릭 목록
](#kpl-metrics-list)

## 지표, 차원 및 네임스페이스
<a name="kpl-metrics"></a>

KPL을 시작할 때 애플리케이션 이름을 지정할 수 있으며, 이 이름은 지표를 업로드할 때 네임스페이스의 일부로 사용됩니다. 이 이름은 선택 사항이며 애플리케이션 이름을 설정하지 않으면 KPL에서 기본값을 제공합니다.

지표에 임의의 다른 측정기준을 추가하도록 KPL을 구성할 수도 있습니다. CloudWatch 지표의 데이터를 세분화하려는 경우 이 방법이 유용합니다. 예를 들어, 호스트 이름을 차원으로 추가하여 플릿에서 고르지 못한 로드 분산을 식별할 수 있습니다. 모든 KPL 구성 설정은 변경할 수 없으므로 KPL 인스턴스가 초기화된 후에는 이 추가 측정기준을 변경할 수 없습니다.

## 지표 수준 및 세부 수준
<a name="kpl-metrics-granularity"></a>

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

*지표 수준*  
측정치의 중요성을 나타내는 대략적인 게이지입니다. 모든 측정치에는 수준이 할당됩니다. 수준을 설정하면 해당 값보다 낮은 수준의 지표는 CloudWatch에 전송되지 않습니다. 수준은 `NONE`, `SUMMARY` 및 `DETAILED`입니다. 기본 설정은 `DETAILED`, 즉 모든 지표입니다. `NONE`은 지표가 전혀 없음을 의미하므로 실제로 해당 수준에 지표가 할당되지 않습니다.

*세부 수준*  
추가 세부 수준에서 동일한 측정치를 내보내는지 여부를 제어합니다. 수준은 `GLOBAL`, `STREAM` 및 `SHARD`입니다. 기본 설정은 가장 세분화된 측정치를 포함하는 `SHARD`입니다.  
`SHARD`를 선택하면 스트림 이름과 샤드 ID를 차원으로 하여 측정치를 내보냅니다. 또한 스트림 이름이 없는 측정치와 스트림 이름 차원만으로도 동일한 측정치를 내보냅니다. 특정 지표에 대해 샤드가 2개씩 있는 스트림 2개가 CloudWatch 지표 7개(각 샤드에 1개, 각 스트림에 1개, 전체적으로 1개)를 생성한다는 의미입니다. 서로 다른 세수 수준에서 모두 동일한 통계를 나타냅니다. 다음 다이어그램을 참조하십시오.  
여러 세부 수준이 계층 구조를 형성하고 시스템의 모든 지표는 지표 이름을 토대로 트리를 형성합니다.  

```
MetricName (GLOBAL):           Metric X                    Metric Y
                                  |                           |
                           -----------------             ------------
                           |               |             |          |
StreamName (STREAM):    Stream A        Stream B      Stream A   Stream B
                           |               |
                        --------        ---------
                        |      |        |       |
ShardID (SHARD):     Shard 0 Shard 1  Shard 0 Shard 1
```
모든 측정치를 샤드 수준에서 사용할 수 있는 것은 아니며 본질적으로 스트림 수준이나 전역 수준에서 사용할 수 있는 측정치도 있습니다. 샤드 수준 지표를 활성화한 경우에도 이 측정치가 샤드 수준에서 생성되지 않습니다(위 다이어그램의 `Metric Y`).  
추가 차원을 지정할 때 `tuple:<DimensionName, DimensionValue, Granularity>`에 값을 제공해야 합니다. 사용자 지정 차원이 계층 구조에 삽입되는 위치를 결정하기 위해 세부 수준을 사용합니다. `GLOBAL`은 지표 이름 뒤, `STREAM`은 스트림 이름 뒤, `SHARD`는 샤드 ID 뒤에 추가 차원을 삽입한다는 의미입니다. 여러 추가 차원이 세부 수준별로 제공되면 지정된 순서대로 삽입됩니다.

## 로컬 액세스 및 Amazon CloudWatch 업로드
<a name="kpl-metrics-local-upload"></a>

현재 KPL 인스턴스의 지표는 로컬에서 실시간으로 사용할 수 있으며 언제든지 KPL을 쿼리하여 가져올 수 있습니다. KPL은 CloudWatch와 마찬가지로 모든 지표의 합계, 평균, 최소값, 최대값 및 개수를 로컬에서 컴퓨팅합니다.

프로그램 시작부터 현재 시점까지 누적된 통계를 가져오거나 지난 *N*초(*N*은 1\$160 사이의 정수) 동안 롤링 윈도우를 사용하여 통계를 가져올 수 있습니다.

모든 지표를 CloudWatch에 업로드할 수 있습니다. 특히 여러 호스트의 데이터 집계, 모니터링 및 경보에 유용합니다. 로컬에서는 이 기능을 사용할 수 없습니다.

전에 설명한 대로 *측정치 수준* 및 *세부 수준* 설정으로 업로드할 측정치를 선택할 수 있습니다. 업로드되지 않은 측정치를 로컬에서 사용할 수 있습니다.

트래픽이 많을 때 초당 수백만 개의 업로드가 이루어지기 때문에 데이터 요소를 개별적으로 업로드하는 것은 적절하지 않습니다. 그래서 KPL은 로컬에서 지표를 1분 버킷으로 집계하고 활성화된 지표별로 분당 1회 CloudWatch에 통계 객체를 업로드합니다.



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


| 지표 | 설명 | 
| --- | --- | 
| UserRecordsReceived |  넣기 작업을 위해 KPL 코어에 수신된 논리적 사용자 레코드 수입니다. 샤드 수준에서 사용할 수 없습니다. 측정치 수준: Detailed  단위: 수   | 
| UserRecordsPending |  현재 대기 중인 사용자 레코드 수의 주기적 샘플입니다. 레코드가 현재 버퍼되고 전송을 기다리고 있거나 백엔드 서비스로 전송 및 이동 중일 경우 레코드는 대기 중 상태입니다. 샤드 수준에서 사용할 수 없습니다. KPL은 전용 메서드를 제공하여 고객이 넣기 속도를 관리할 수 있도록 전역 수준에서 이 지표를 검색합니다. 측정치 수준: Detailed  단위: 수   | 
| UserRecordsPut |  성공적으로 입력된 논리적 사용자 레코드 수입니다. KPL은 실패한 레코드에 대해 0을 출력합니다. 평균을 통해 성공률을, 개수를 통해 총 시도 수를, 개수와 합계의 차이를 통해 실패 수를 알 수 있습니다. 측정치 수준: Summary 단위: 수  | 
| UserRecordsDataPut |  성공적으로 입력된 논리적 사용자 레코드의 바이트입니다. 측정치 수준: Detailed  단위: 바이트   | 
| KinesisRecordsPut |  성공적으로 입력된 Kinesis Data Streams 레코드 수입니다. 각 Kinesis Data Streams 레코드에는 여러 사용자 레코드가 포함될 수 있습니다. KPL은 실패한 레코드에 대해 0을 출력합니다. 평균을 통해 성공률을, 개수를 통해 총 시도 수를, 개수와 합계의 차이를 통해 실패 수를 알 수 있습니다. 측정치 수준: Summary  단위: 수   | 
| KinesisRecordsDataPut |  Kinesis Data Streams 레코드의 바이트 수입니다. 측정치 수준: Detailed  단위: 바이트   | 
| ErrorsByCode |  각 오류 코드 유형의 개수입니다. `ErrorCode` 및 `StreamName`와 같은 일반 차원 이외에 `ShardId`의 추가 차원이 있습니다. 모든 오류를 샤드로 추적할 수 있는 것은 아닙니다. 스트림 또는 전역 수준에서만 추적할 수 없는 오류를 내보냅니다. 조절, 샤드 맵 변경, 내부 오류, 서비스 사용 불가, 시간 초과 등에 대한 정보가 이 측정치에 캡처됩니다. Kinesis Data Streams API 오류는 Kinesis Data Streams 레코드당 한 번 계산됩니다. Kinesis Data Streams 레코드에 있는 여러 사용자 레코드는 여러 번 계산되지 않습니다. 측정치 수준: Summary  단위: 수   | 
| AllErrors |  **Errors by Code(코드별 오류)**와 동일한 오류로 트리거되지만 유형을 구별하지 않습니다. 다른 모든 유형의 오류 개수 합계를 수동으로 계산하지 않고도 오류 비율을 전반적으로 모니터링할 수 있어 유용합니다. 측정치 수준: Summary  단위: 수   | 
| RetriesPerRecord |  사용자 레코드마다 수행한 재시도 수입니다. 레코드가 한 번에 성공하면 0을 내보냅니다. 사용자 레코드가 완료(성공하거나 더 이상 재시도할 수 없는 경우)되면 데이터를 내보냅니다. 레코드 time-to-live가 큰 값인 경우 이 측정치가 상당히 지연될 수 있습니다. 측정치 수준: Detailed  단위: 수   | 
| BufferingTime |  사용자 레코드가 KPL에 도착했다가 백엔드로 나가는 사이의 시간입니다. 레코드별로 이 정보를 사용자에게 다시 전송하지만 집계된 통계로 사용할 수도 있습니다. 측정치 수준: Summary  단위: 밀리초   | 
| Request Time |  `PutRecordsRequests`를 수행하는 데 소요되는 시간입니다. 측정치 수준: Detailed  단위: 밀리초   | 
| User Records per Kinesis Record |  단일 Kinesis Data Streams 레코드에 집계된 논리적 사용자 레코드 수입니다. 측정치 수준: Detailed  단위: 수   | 
| Amazon Kinesis Records per PutRecordsRequest |  단일 `PutRecordsRequest`에 집계된 Kinesis Data Streams 레코드 수입니다. 샤드 수준에서 사용할 수 없습니다. 측정치 수준: Detailed  단위: 수   | 
| User Records per PutRecordsRequest |  `PutRecordsRequest`에 포함된 총 사용자 레코드 수입니다. 앞의 두 측정치의 결과와 거의 비슷합니다. 샤드 수준에서 사용할 수 없습니다. 측정치 수준: Detailed  단위: 수   | 