本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
监控数据交付
使用本主题学习如何使用 Amazon CloudWatch 指标、 CloudWatch 日志和监控您的配送 Amazon CloudTrail。
CloudWatch 指标
每次交付都会将指标发布到AWS/Kinesis命名空间 CloudWatch 中。指标名称以目标类型为前缀:DeliveryToS3用于一般用途 Amazon S3 交付和DeliveryToIceberg流式传输表传输。使用这些指标来监控配送的运行状况和绩效。
下表列出了一般用途 Amazon S3 交付的指标 (DeliveryToS3)。
| 指标名称 | 单位 | 说明 |
|---|---|---|
DeliveryToS3.DataFreshness |
秒 | 尚未送达目的地的最早记录的年龄。价值上升表明交付落后。 |
DeliveryToS3.BytesIn |
字节 | 从流中读入传输路径的数据量。 |
DeliveryToS3.BytesProcessed |
字节 | 交付处理的数据量。 |
DeliveryToS3.BytesOut |
字节 | 写入目标的数据量。 |
DeliveryToS3.RecordCount |
计数 | 从流中读取的记录总数。 |
DeliveryToS3.SuccessfulRecordCount |
计数 | 成功传送到目的地的记录数。 |
DeliveryToS3.FailedRecordCount |
计数 | 传送失败的记录数。非零值是关键的错误信号。 |
DeliveryToS3.DeliverySuccess |
计数 | 成功交付操作的数量。 |
DeliveryToS3.DLQDeliverySuccess |
计数 | 成功写入死信队列的记录数。 |
下表列出了流式传输表交付的指标 (DeliveryToIceberg)。
| 指标名称 | 单位 | 说明 |
|---|---|---|
DeliveryToIceberg.DataFreshness |
秒 | 尚未送到表格的最早记录的年龄。价值上升表明交付落后。 |
DeliveryToIceberg.BytesIn |
字节 | 从流中读入传输路径的数据量。 |
DeliveryToIceberg.BytesProcessed |
字节 | 交付处理的数据量。 |
DeliveryToIceberg.BytesOut |
字节 | 写入表的数据量。 |
DeliveryToIceberg.TotalRowCount |
计数 | 从流中读取的总行数。 |
DeliveryToIceberg.SuccessfulRowCount |
计数 | 成功传送到表中的行数。 |
DeliveryToIceberg.FailedRowCount |
计数 | 传送失败的行数。非零值是关键的错误信号。 |
DeliveryToIceberg.CommitSuccess |
计数 | 成功提交 Iceberg 的次数。 |
DeliveryToIceberg.DLQDeliverySuccess |
计数 | 成功写入死信队列的记录数。 |
Dimensions
发布的配送指标采用以下维度:
-
ChannelName— 配送名称。 -
ChannelId— 交货的唯一标识符。 -
StreamName— 源 Kinesis Data Streams 流的名称。
注意
要在 CloudWatch 警报中定位特定的交付,请指定所有三个维度。要使用GetMetricData和进行浏览或查询ListMetrics,您可以按维度的子集进行筛选,例如ChannelName单独筛选。
建议的警报
下表列出了推荐的配送 CloudWatch 警报。
| 警报 | 指标 | 条件 | 说明 |
|---|---|---|---|
| 故障率高 | DeliveryToS3.FailedRecordCount |
> 0 持续 5 分钟 | 记录传送失败。调查架构不匹配或目标问题。 |
| 数据新鲜度降低 | DeliveryToS3.DataFreshness |
> 阈值 | 数据交付落在了后面。调查交付问题,例如缺少服务执行角色的权限或目的地的限制。 |
| 未传送任何数据 | DeliveryToS3.SuccessfulRecordCount |
= 0 持续 15 分钟 | 尚未提供任何记录。验证直播是否有数据并且传送处于活动状态。 |
| DLQ 交付失败 | DeliveryToS3.DLQDeliverySuccess |
大于 0 时 FailedRecordCount 为 0 | 失败的记录无法写入死信队列。检查 DLQ 存储桶权限。 |
注意
上述警报使用了 Amazon S3 交付的DeliveryToS3指标。对于流式表传输,请使用等效的DeliveryToIceberg指标(DeliveryToIceberg.FailedRowCountDeliveryToIceberg.DataFreshness、DeliveryToIceberg.SuccessfulRowCount、和DeliveryToIceberg.DLQDeliverySuccess)。
CloudWatch 日志
每次交付都可以将详细日志发布到日 CloudWatch 志,以便进行调试和查看操作。
默认情况下,交付会写入以下日志组和日志流:
-
默认日志组-
/aws/kinesis/channelName/channelId -
日志流 —
DestinationDelivery
通过 CLI 启用 CloudWatch 日志
使用以下命令在创建或更新交付时启用 CloudWatch 日志 Amazon CLI:
aws kinesis create-channel \ --channel-name "my-channel" \ --service-execution-role-arn "arn:aws:iam::111122223333:role/my-channel-role" \ --stream-configuration-list '[ { "StreamARN": "arn:aws:kinesis:us-east-1:111122223333:stream/my-stream", "RecordConfiguration": { "RecordFormatType": "JSON" } } ]' \ --s3-destination-configuration '{ "StorageConfiguration": { "BucketARN": "arn:aws:s3:::amzn-s3-demo-destination-bucket", "ExpectedBucketOwner": "111122223333", "CompressionType": "GZIP" } }' \ --logging-configuration '{ "CloudWatchLogs": { "Enabled": true } }'
如果在未指定 CloudWatch 日志组的情况下启用 Logs,则交付将使用默认日志组/aws/kinesis/。如果您指定自定义channelName/channelIdLogGroupName,请确保服务执行角色的 “ CloudWatch 日志” 权限仅限于同一个日志组。有关所需的权限,请参阅用于数据传输的 IAM 权限。
您还可以使用update-channel命令启用或更新现有交付的 CloudWatch 日志,传递相同的--logging-configuration值。
所需的权限
要启用 CloudWatch 日志,交付的服务执行角色必须具有以下权限:
-
logs:CreateLogGroup -
logs:CreateLogStream -
logs:PutLogEvents
将这些权限的范围限定为特定的日志组 ARN。可选 CloudWatch 日志权限有关完整的策略示例,请参阅。
Amazon CloudTrail 日志记录
所有交付 API 调用均由记录 Amazon CloudTrail。以下是CreateChannel呼叫的示例 Amazon 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>" }