本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
監控資料交付
使用此主題來了解如何使用 Amazon CloudWatch 指標、CloudWatch Logs 和 來監控您的交付 AWS CloudTrail。
CloudWatch 指標
每個交付都會將指標發佈至 AWS/Kinesis 命名空間中的 CloudWatch。指標名稱的字首是目的地類型:DeliveryToS3用於一般用途的 Amazon S3 交付和DeliveryToIceberg用於串流資料表交付。使用這些指標來監控交付的運作狀態和效能。
| 指標名稱 | 單位 | 說明 |
|---|---|---|
DeliveryToS3.DataFreshness |
秒鐘 | 尚未交付至目的地的最舊記錄的存留期。上升值表示交付落後。 |
DeliveryToS3.BytesIn |
位元組 | 從串流讀取至交付路徑的資料量。 |
DeliveryToS3.BytesProcessed |
位元組 | 交付處理的資料量。 |
DeliveryToS3.BytesOut |
位元組 | 寫入目的地的資料量。 |
DeliveryToS3.RecordCount |
計數 | 從串流讀取的記錄總數。 |
DeliveryToS3.SuccessfulRecordCount |
計數 | 成功交付到目的地的記錄數量。 |
DeliveryToS3.FailedRecordCount |
計數 | 交付失敗的記錄數目。非零值是金鑰錯誤訊號。 |
DeliveryToS3.DeliverySuccess |
計數 | 成功交付操作的數量。 |
DeliveryToS3.DLQDeliverySuccess |
計數 | 成功寫入無效字母佇列的記錄數目。 |
| 指標名稱 | 單位 | 說明 |
|---|---|---|
DeliveryToIceberg.DataFreshness |
秒鐘 | 尚未交付至資料表的最舊記錄的存留期。上升值表示交付落後。 |
DeliveryToIceberg.BytesIn |
位元組 | 從串流讀取至交付路徑的資料量。 |
DeliveryToIceberg.BytesProcessed |
位元組 | 交付處理的資料量。 |
DeliveryToIceberg.BytesOut |
位元組 | 寫入資料表的資料量。 |
DeliveryToIceberg.TotalRowCount |
計數 | 從串流讀取的資料列總數。 |
DeliveryToIceberg.SuccessfulRowCount |
計數 | 成功交付至資料表的資料列數。 |
DeliveryToIceberg.FailedRowCount |
計數 | 交付失敗的資料列數。非零值是金鑰錯誤訊號。 |
DeliveryToIceberg.CommitSuccess |
計數 | Iceberg 遞交成功的數量。 |
DeliveryToIceberg.DLQDeliverySuccess |
計數 | 成功寫入無效字母佇列的記錄數目。 |
維度
交付指標會以下列維度發佈:
-
ChannelName– 交付名稱。 -
ChannelId– 交付的唯一識別符。 -
StreamName– 來源 Kinesis Data Streams 串流的名稱。
注意
若要以 CloudWatch 警示中的特定交付為目標,請指定所有三個維度。對於使用 GetMetricData和 進行瀏覽或查詢ListMetrics,您可以依維度子集進行篩選,例如ChannelName單獨使用。
建議的警示
| 警示 | 指標 | 條件 | 說明 |
|---|---|---|---|
| 高故障率 | DeliveryToS3.FailedRecordCount |
> 0 持續 5 分鐘 | 記錄交付失敗。調查結構描述不相符或目的地問題。 |
| 資料新鮮度降級 | DeliveryToS3.DataFreshness |
> 閾值 | 資料交付落後。調查交付問題,例如缺少服務執行角色的許可或在目的地調節。 |
| 未交付資料 | DeliveryToS3.SuccessfulRecordCount |
= 0 持續 15 分鐘 | 尚未交付任何記錄。確認串流有資料且交付處於作用中狀態。 |
| DLQ 交付失敗 | DeliveryToS3.DLQDeliverySuccess |
= 失敗FailedRecordCount > 0 時為 0 | 失敗的記錄無法寫入無效字母佇列。檢查 DLQ 儲存貯體許可。 |
注意
上述警示使用 Amazon S3 交付的DeliveryToS3指標。對於串流資料表交付,請使用同等DeliveryToIceberg指標 (DeliveryToIceberg.FailedRowCount、DeliveryToIceberg.SuccessfulRowCount、 DeliveryToIceberg.DataFreshness和 DeliveryToIceberg.DLQDeliverySuccess)。
CloudWatch Logs
每個交付都可以將詳細日誌發佈至 CloudWatch Logs,以進行偵錯和操作可見性。
-
預設日誌群組 –
/aws/kinesis/channelName/channelId -
日誌串流 –
DestinationDelivery
透過 CLI 啟用 CloudWatch Logs
使用 建立或更新交付時啟用 CloudWatch Logs AWS CLI:
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/channelIdLogGroupName,請確定服務執行角色的 CloudWatch Logs 許可範圍為相同的日誌群組。如要了解必要的許可,請參閱 資料交付的 IAM 許可。
您也可以使用 update-channel命令在現有交付上啟用或停用 CloudWatch Logs,傳遞相同的--logging-configuration值。
所需的許可
若要啟用 CloudWatch Logs,交付的服務執行角色必須具有下列許可:
-
logs:CreateLogGroup -
logs:CreateLogStream -
logs:PutLogEvents
將這些許可範圍限定為特定的日誌群組 ARN。如需完整政策範例,選用 CloudWatch Logs 許可請參閱 。
AWS CloudTrail 記錄
所有交付 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>" }