我想要監控 Amazon Kinesis Data Streams 的傳入和傳出資料。
解決方案
使用串流層級指標
您可以使用 Amazon CloudWatch 指標來持續監控 Amazon Kinesis 資料串流的效能及其輸送量。下列指標可協助您監控生產者和取用者問題。
GetRecords.IteratorAgeMilliseconds
GetRecords.IteratorAgeMilliseconds 會測量所有 GetRecords 請求的串流中最後一筆記錄的存留期 (以毫秒為單位)。此指標的值為零表示記錄是串流內的最新記錄。較低的值為優先。若要監控任何效能問題,請增加串流的取用者數量,以便更快處理資料。若要最佳化應用程式碼,請增加取用者數量,以減少處理記錄的延遲。
ReadProvisionedThroughputExceeded
ReadProvisionedThroughputExceeded 會測量在指定期間受限流和超出 Kinesis Data Streams 的服務或碎片限制的 GetRecords 呼叫的計數。值為零表示資料取用者不超出服務配額。任何其他值都表示超出輸送量限制且需要額外碎片。此指標確認串流中沒有超過五次讀取/秒/碎片或 2 MB/秒/碎片的操作。您可以開啟增強型監控來驗證串流中沒有熱碎片。
WriteProvisionedThroughputExceeded
WriteProvisionedThroughputExceeded 會測量 PUT 或資料生產者 (例如 ReadProvisionedThroughputExceeded),以協助判斷串流是否受限流。這超出了寫入碎片時 Data Streams 的服務配額。請確保 PUT 請求不超出 1 MB/秒/碎片或 1000 個記錄/秒/碎片。確保分割區索引鍵分佈均勻,且已開啟增強型監控以驗證串流中的熱碎片。根據碎片飽和度,更新串流中的碎片計數以增加輸送量。
PutRecord.Success 和 PutRecords.Success
PutRecord.Success 和 PutRecords.Success 會測量在指定期間資料生產者放入串流中的 PutRecords 請求的成功記錄計數。此指標確認失敗記錄的有效重試邏輯。
GetRecords.Success
GetRecords.Success 會測量指定時段內串流中的成功 GetRecords 請求計數。它確認失敗記錄的有效重試邏輯。
GetRecords.Latency
GetRecords.Latency 會測量在指定時段內串流上的每個 GetRecords 操作所花費的時間。它確認有足夠的實體資源或記錄處理邏輯用於增加串流輸送量。它還會處理大型批次資料,以降低您的應用程式中的網路和其他下游延遲。對於 Kinesis Client Library (KCL),請調查 ProcessTask.Time 指標以監控滯後的應用程式的處理時間。GetRecords.Latency 指標會確認 IDLE_TIME_BETWEEN_READS_IN_MILLIS 設定已設為與串流處理保持同步。
PutRecords.Latency
PutRecords.Latency 會測量在指定時段內串流上的每個 PutRecords 操作所花費的時間。如果 PutRecords.Latency 值較高,請將記錄彙總到較大的檔案,以將批次資料放入 Kinesis 資料串流。您也可以使用多個執行緒來寫入資料。PutRecords API 上的限流和重試邏輯可能會影響延遲,以及串流上的每個 PutRecords 操作所花費的時間。然後,使用列出指標的平均值統計資料來監控串流的效能和輸送量。
注意事項:對於 GetRecords.IteratorAgeMilliseconds,使用最大值統計資料來降低在任何讀取操作之後延遲的取用者資料遺失風險。設定 CloudWatch 警示以回應要針對指標進行評估的任何資料點。如需有關 CloudWatch 警示的詳細資訊,請參閱使用 Amazon CloudWatch 警示。
如果您使用增強型散發功能,請使用下列指標來監控 Kinesis Data Streams:
**SubscribeToShard.RateExceeded:**測量每秒超出操作允許的呼叫次數,或因作用中訂閱已存在而導致訂閱嘗試失敗時的呼叫次數。
**SubscribeToShard.Success:**驗證 SubscribeToShard 操作是否成功。
**SubscribeToShardEvent.Success:**確認成功發布作用中訂閱的事件。
**SubscribeToShardEvent.Bytes:**測量指定時段內碎片中接收的位元組數。
**SubscribeToShardEvent.Records:**測量指定時段內碎片中接收的記錄數。
**SubscribeToShardEvent.MillisBehindLatest:**測量目前時間與寫入串流的 SubscribeToShard 事件的最後一筆記錄的差異。
開啟增強型碎片層級指標
**注意事項:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
在 CloudWatch 中開啟碎片層級指標來監控特定任務,並對資料生產者和取用者進行疑難排解。例如,開啟碎片層級指標,以協助您識別工作負載分佈不平均等問題。若要開啟增強型監控,請完成下列步驟:
**注意事項:**您也可以使用 EnableEnhancedMonitoring API 請求或 enable-enhanced-monitoring AWS CLI 命令。
- 開啟 Kinesis 主控台。
- 選擇特定的區域。
- 從導覽窗格中,選擇 Data Streams。
- 在資料串流名稱下,選取您的 Kinesis 資料串流。
- 選擇組態。
- 在增強型 (碎片層級) 指標下,選擇編輯。
- 從下拉式功能表中,選取用於增強型監控的指標。
- 選擇儲存變更。
使用 API 呼叫的其他疑難排解
使用下列 API 呼叫從 Kinesis Data Streams 讀取或寫入資料:
在使用這些 API 呼叫時,您可以監控 AWS CloudTrail 日誌中的任何限流。如需有關 Kinesis Data Streams API 呼叫和 CloudTrail 的詳細資訊,請參閱使用 AWS CloudTrail 記錄 Amazon Kinesis Data Streams API 呼叫。
相關資訊
Amazon CloudWatch 定價
使用 Amazon CloudWatch 監控 Amazon Kinesis Data Streams 服務