

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

# 데이터 전송 모니터링
<a name="data-delivery-monitoring"></a>

 이 주제를 사용하여 Amazon CloudWatch 지표, CloudWatch Logs 및를 사용하여 전송을 모니터링하는 방법을 알아봅니다 AWS CloudTrail.

## CloudWatch Metrics
<a name="data-delivery-monitoring-metrics"></a>

 각 전송은 `AWS/Kinesis` 네임스페이스의 CloudWatch에 지표를 게시합니다. 지표 이름은 범용 Amazon S3 전송의 `DeliveryToS3` 경우 , 스트리밍 테이블 전송의 경우 `DeliveryToIceberg`의 대상 유형에 따라 접두사가 지정됩니다. 이러한 지표를 사용하여 전송 상태와 성능을 모니터링합니다.


**Amazon S3 전송 지표(DeliveryToS3)**  

| 지표 이름 | 단위 | 설명 | 
| --- | --- | --- | 
| DeliveryToS3.DataFreshness | 초 | 대상에 아직 전송되지 않은 가장 오래된 레코드의 수명입니다. 상승 값은 전송이 지연되고 있음을 나타냅니다. | 
| DeliveryToS3.BytesIn | 바이트 | 스트림에서 전송 경로로 읽은 데이터의 볼륨입니다. | 
| DeliveryToS3.BytesProcessed | 바이트 | 전송에서 처리하는 데이터의 볼륨입니다. | 
| DeliveryToS3.BytesOut | 바이트 | 대상에 기록된 데이터의 볼륨입니다. | 
| DeliveryToS3.RecordCount | 개수 | 스트림에서 읽은 총 레코드 수입니다. | 
| DeliveryToS3.SuccessfulRecordCount | 개수 | 대상으로 성공적으로 전송된 레코드 수입니다. | 
| DeliveryToS3.FailedRecordCount | 개수 | 전송에 실패한 레코드 수입니다. 0이 아닌 값은 키 오류 신호입니다. | 
| DeliveryToS3.DeliverySuccess | 개수 | 성공적인 전송 작업 수입니다. | 
| DeliveryToS3.DLQDeliverySuccess | 개수 | 배달 못한 편지 대기열에 성공적으로 기록된 레코드 수입니다. | 


**스트리밍 테이블 전송 지표(DeliveryToIceberg)**  

| 지표 이름 | 단위 | 설명 | 
| --- | --- | --- | 
| DeliveryToIceberg.DataFreshness | 초 | 테이블에 아직 전송되지 않은 가장 오래된 레코드의 수명입니다. 상승 값은 전송이 지연되고 있음을 나타냅니다. | 
| DeliveryToIceberg.BytesIn | 바이트 | 스트림에서 전송 경로로 읽은 데이터의 볼륨입니다. | 
| DeliveryToIceberg.BytesProcessed | 바이트 | 전송에서 처리하는 데이터의 볼륨입니다. | 
| DeliveryToIceberg.BytesOut | 바이트 | 테이블에 기록된 데이터의 볼륨입니다. | 
| DeliveryToIceberg.TotalRowCount | 개수 | 스트림에서 읽은 총 행 수입니다. | 
| DeliveryToIceberg.SuccessfulRowCount | 개수 | 테이블에 성공적으로 전달된 행 수입니다. | 
| DeliveryToIceberg.FailedRowCount | 개수 | 전송에 실패한 행 수입니다. 0이 아닌 값은 키 오류 신호입니다. | 
| DeliveryToIceberg.CommitSuccess | 개수 | 성공한 Iceberg 커밋 수입니다. | 
| DeliveryToIceberg.DLQDeliverySuccess | 개수 | 배달 못한 편지 대기열에 성공적으로 기록된 레코드 수입니다. | 

### 측정 기준
<a name="data-delivery-monitoring-dimensions"></a>

 전송 지표는 다음 차원으로 게시됩니다.
+ `ChannelName` - 전송 이름입니다.
+ `ChannelId` - 전송의 고유 식별자입니다.
+ `StreamName` - 소스 Kinesis Data Streams 스트림의 이름입니다.

**참고**  
 CloudWatch 경보에서 특정 전송을 대상으로 하려면 세 가지 차원을 모두 지정합니다. `GetMetricData` 및를 사용하여 검색하거나 쿼리하려면 `ChannelName` 단독으로와 같은 차원 하위 집합을 기준으로 필터링`ListMetrics`할 수 있습니다.

### 권장되는 경보
<a name="data-delivery-monitoring-alarms"></a>


**전송에 권장되는 CloudWatch 경보**  

| 경보 | 지표 | 조건 | 설명 | 
| --- | --- | --- | --- | 
| 높은 실패율 | DeliveryToS3.FailedRecordCount | 5분 동안 > 0 | 레코드가 전송에 실패합니다. 스키마 불일치 또는 대상 문제를 조사합니다. | 
| 데이터 신선도 저하 | DeliveryToS3.DataFreshness | > 임계값 | 데이터 전송이 지연되고 있습니다. 서비스 실행 역할에 대한 권한 누락 또는 대상에서의 제한과 같은 전송 문제를 조사합니다. | 
| 전송된 데이터 없음 | DeliveryToS3.SuccessfulRecordCount | 15분 동안 = 0 | 전송된 레코드가 없습니다. 스트림에 데이터가 있고 전송이 활성 상태인지 확인합니다. | 
| DLQ 전송 실패 | DeliveryToS3.DLQDeliverySuccess | FailedRecordCount > 0인 경우 = 0 | 실패한 레코드는 배달 못한 편지 대기열에 쓸 수 없습니다. DLQ 버킷 권한을 확인합니다. | 

**참고**  
 위의 경보는 Amazon S3 전송에 대한 `DeliveryToS3` 지표를 사용합니다. 스트리밍 테이블 전송의 경우 동등한 `DeliveryToIceberg` 지표(`DeliveryToIceberg.FailedRowCount`, `DeliveryToIceberg.DataFreshness`, `DeliveryToIceberg.SuccessfulRowCount`및 `DeliveryToIceberg.DLQDeliverySuccess`)를 사용합니다.

## CloudWatch Logs
<a name="data-delivery-monitoring-logs"></a>

 각 전송은 디버깅 및 운영 가시성을 위해 CloudWatch Logs에 세부 로그를 게시할 수 있습니다.
+ **기본 로그 그룹** - `/aws/kinesis/{{channelName}}/{{channelId}}`
+ **로그 스트림** - `DestinationDelivery`

### CLI를 통해 CloudWatch Logs 활성화
<a name="data-delivery-monitoring-logs-enable"></a>

 AWS CLI다음을 사용하여 전송을 생성하거나 업데이트할 때 CloudWatch Logs를 활성화합니다.

```
aws kinesis create-channel \
    --channel-name "my-channel" \
    --service-execution-role-arn "arn:aws:iam::123456789012:role/my-channel-role" \
    --stream-configuration-list '[
        {
            "StreamARN": "arn:aws:kinesis:us-east-1:123456789012:stream/my-stream",
            "RecordConfiguration": { "RecordFormatType": "JSON" }
        }
    ]' \
    --s3-destination-configuration '{
        "StorageConfiguration": {
            "BucketARN": "arn:aws:s3:::my-destination-bucket",
            "ExpectedBucketOwner": "123456789012",
            "CompressionType": "GZIP"
        }
    }' \
    --logging-configuration '{
        "CloudWatchLogs": {
            "Enabled": true
        }
    }'
```

 로그 그룹을 지정하지 않고 CloudWatch Logs를 활성화하면 전송에서 기본 로그 그룹를 사용합니다`/aws/kinesis/{{channelName}}/{{channelId}}`. 사용자 지정을 지정하는 경우 서비스 실행 역할의 CloudWatch Logs 권한이 동일한 로그 그룹으로 범위가 지정되었는지 `LogGroupName`확인합니다. 필요한 권한에 대해서는 [데이터 전송을 위한 IAM 권한](data-delivery-iam.md)을 참조하세요.

 `update-channel` 명령을 사용하여 기존 전송에서 CloudWatch Logs를 활성화하거나 업데이트하여 동일한 `--logging-configuration` 값을 전달할 수도 있습니다.

### 필수 권한
<a name="data-delivery-monitoring-logs-permissions"></a>

 CloudWatch Logs를 활성화하려면 전송의 서비스 실행 역할에 다음 권한이 있어야 합니다.
+ `logs:CreateLogGroup`
+ `logs:CreateLogStream`
+ `logs:PutLogEvents`

 이러한 권한의 범위를 특정 로그 그룹 ARN으로 지정합니다. 전체 정책 예제는 섹션을 참조[선택적 CloudWatch Logs 권한](data-delivery-iam.md#data-delivery-iam-cloudwatch-logs)하세요.

## AWS CloudTrail 로깅
<a name="data-delivery-monitoring-cloudtrail"></a>

 모든 전송 API 호출은에 의해 기록됩니다 AWS CloudTrail. 다음은 `CreateChannel` 호출의 예제 AWS CloudTrail 이벤트입니다.

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROA1EXAMPLE:user-session",
        "arn": "arn:aws:sts::<account-id>:assumed-role/<role-name>/user-session",
        "accountId": "<account-id>"
    },
    "eventTime": "2026-07-20T20:00:00Z",
    "eventSource": "kinesis.amazonaws.com",
    "eventName": "CreateChannel",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "192.0.2.1",
    "userAgent": "aws-cli/2.x",
    "requestParameters": {
        "streamName": "my-stream",
        "channelName": "my-channel"
    },
    "responseElements": {
        "channelARN": "arn:aws:kinesis:us-east-1:<account-id>:channel/<channel-id>"
    },
    "requestID": "a1b2c3d4-example",
    "eventID": "e5f6g7h8-example",
    "readOnly": false,
    "eventType": "AwsApiCall",
    "recipientAccountId": "<account-id>"
}
```