使用 Amazon 監控 Kinesis 用戶端程式庫 CloudWatch - Amazon Kinesis Data Streams

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Amazon 監控 Kinesis 用戶端程式庫 CloudWatch

適用於 Amazon Kinesis 資料串流的 Kinesis 用戶端程式庫 (KCL) 會代您發佈自訂的 Amazon CloudWatch 指標,並使用您的 KCL 應用程式的名稱做為命名空間。您可以瀏覽至CloudWatch 主控台並選擇「自訂量度」,以檢視這些指標。如需有關自訂指標的詳細資訊,請參閱 Amazon CloudWatch 使用者指南中的發佈自訂指

KCL 上傳到的指標需支付象徵性費 CloudWatch 用;特別是,Amazon CloudWatch 自訂指標和 Amazon CloudWatch API 請求會收取費用。如需詳細資訊,請參閱 Amazon CloudWatch 定價

指標和命名空間

用來上傳指標的命名空間是當您啟動 KCL 時指定的應用程式名稱。

指標層級與維度

有兩個選項可控制要將哪些量度上傳至 CloudWatch:

指標層級

每個指標會獲指派個別層級。當您設定量度報告層級時,個別層級低於報表層級的量度不會傳送至 CloudWatch。層級為:NONESUMMARYDETAILED。預設設定為DETAILED;也就是說,所有量度都會傳送至 CloudWatch。NONE 報告層級表示不會傳送任何指標。如需有關指派哪些層級給哪些指標的詳細資訊,請參閱 指標的清單

已啟用的維度

每個 KCL 量度都有相關聯的維度,這些維度也會傳送至 CloudWatch。在 KCL 2.x 中,如果 KCL 設定為處理單一資料串流,則預設會啟用所有指標維度 (OperationShardId、和 WorkerIdentifier)。此外,在 KCL 2.x 中,如果 KCL 設定為處理單一資料串流,則無法停用 Operation 維度。在 KCL 2.x 中,如果 KCL 設定為處理多個資料串流,則預設會啟用所有指標維度 (OperationShardIdStreamIdWorkerIdentifier)。此外,在 KCL 2.x 中,如果 KCL 設定為處理多個資料串流,則無法停用 OperationStreamId 維度。StreamId 維度僅適用於每個碎片指標。

在 KCL 1.x 中,預設情況下,只有 OperationShardId 維度是啟用的,WorkerIdentifier 維度是停用的。在 KCL 1.x 中,無法停用該 Operation 維度。

如需有關指標維 CloudWatch 度的詳細資訊,請參閱 Amazon CloudWatch 使用者指南中的 Amazon CloudWatch 概念主題中的「度」一節。

啟用WorkerIdentifier維度時,如果每次特定 KCL Worker 重新啟動時針對 Worker ID 屬性使用不同的值,則會將具有新WorkerIdentifier維度值的新量度集傳送至 CloudWatch。如果您需要 WorkerIdentifier 維度值在特定 KCL 工作者重新啟動時是相同的,您必須在每個工作者的初始化期間明確指定相同的工作者 ID 值。請注意,每個作用中 KCL 工作者的工作者 ID 值,在所有 KCL 工作者間必須是唯一的。

指標組態

您可以使用執行個體來設定量度層級和已啟用的維度, KinesisClientLibConfiguration 執行個體會在啟動 KCL 應用程式時傳送至 Worker。在這 MultiLangDaemon 種情況下metricsLevelmetricsEnabledDimensions可以在用來啟動 MultiLangDaemon KCL 應用程式的 .properties 檔案中指定和屬性。

您可以對指標層級指派下列三個值中的其中之一:NONE、SUMMARY 或 DETAILED。啟用的維度值必須是逗號分隔的字串,其中包含量度允許的維 CloudWatch 度清單。KCL 應用程式使用的維度為 OperationShardIdWorkerIdentifier

指標的清單

下表列出 KCL 指標,依範圍和操作分組。

每一 KCL 應用程式指標

這些指標會根據 Amazon CloudWatch 命名空間的定義,彙總應用程式範圍內的所有 KCL 工作者。

InitializeTask

InitializeTask 操作負責初始化 KCL 應用程式的記錄處理器。此操作的邏輯包含取得來自 Kinesis Data Streams 的碎片反覆運算器和初始化記錄處理器。

指標 描述
KinesisDataFetcher. 平衡器. 成功

每一 KCL 應用程式成功 GetShardIterator 操作的數量。

指標層級:詳細

單位:計數

KinesisDataFetcher. 攝影器. 時間

指定 KCL 應用程式的每個 GetShardIterator 操作耗費的時間。

指標層級:詳細

單位:毫秒

RecordProcessor. 初始化.

記錄處理器的 initialize 方法耗費的時間。

指標層級:摘要

單位:毫秒

Success (成功)

成功的記錄處理器初始化的數量。

指標層級:摘要

單位:計數

時間

KCL 工作者的記錄處理器初始化耗費的時間。

指標層級:摘要

單位:毫秒

ShutdownTask

ShutdownTask 操作會初始化碎片處理的關閉序列。因為碎片分割或合併,或當工作者遺失碎片租用時可能會發生此情況。在這兩種情況下,會叫用記錄處理器 shutdown() 函數。當碎片分割或合併造成建立一或兩個新的碎片的情況下,也會發現新的碎片。

指標 描述
CreateLease. 成功。

在父碎片關閉之後將新子碎片成功新增到 KCL 應用程式 DynamoDB 資料表的次數。

指標層級:詳細

單位:計數

CreateLease. 時間

在 KCL 應用程式 DynamoDB 資料表中新增子碎片資訊耗費的時間。

指標層級:詳細

單位:毫秒

UpdateLease. 成功。

記錄處理器關閉期間成功的最終檢查點數量。

指標層級:詳細

單位:計數

UpdateLease. 時間

記錄處理器關閉期間檢查點操作耗費的時間。

指標層級:詳細

單位:毫秒

RecordProcessor. 關閉. 時間

記錄處理器的 shutdown 方法耗費的時間。

指標層級:摘要

單位:毫秒

Success (成功)

成功關閉任務的數量。

指標層級:摘要

單位:計數

時間

KCL 工作者的關閉任務耗費的時間。

指標層級:摘要

單位:毫秒

ShardSyncTask

ShardSyncTask 操作會探索對 Kinesis 資料串流碎片資訊的變更,使得 KCL 應用程式可以處理新的碎片。

指標 描述
CreateLease. 成功。

成功嘗試將新的碎片資訊新增至 KCL 應用程式 DynamoDB 資料表的數量。

指標層級:詳細

單位:計數

CreateLease. 時間

在 KCL 應用程式 DynamoDB 資料表中新增碎片資訊耗費的時間。

指標層級:詳細

單位:毫秒

Success (成功)

成功的碎片同步操作數量。

指標層級:摘要

單位:計數

時間

碎片同步操作耗費的時間。

指標層級:摘要

單位:毫秒

BlockOnParentTask

如果碎片分割或與其他碎片合併,則會建立新的子碎片。BlockOnParentTask 操作可確保新碎片的記錄處理不會開始,直到 KCL 已完全處理父碎片為止。

指標 描述
Success (成功)

成功的父碎片完成檢查數量。

指標層級:摘要

單位:計數

時間

父碎片完成耗費的時間。

指標層級:摘要

單位:毫秒

PeriodicShardSyncManager

PeriodicShardSyncManager 負責檢查 KCL 取用者應用程式正在處理的資料串流,識別具有部分租用的資料串流,並將其移交以進行同步處理。

當 KCL 設定為處理單一資料串流 (然後是和的值設為 1),以 NumStreamsToSync 及將 KCL 設定 NumStreamsWithPartialLeases 為處理多個資料串流時,下列測量結果可用。

指標 描述
NumStreamsToSync

消費者應用程式正在處理的資料串流 (每個 AWS 帳戶) 包含部分租約,且必須交給同步處理的資料串流數目。

指標層級:摘要

單位:計數

NumStreamsWithPartialLeases

消費者應用程式正在處理包含部分租賃的資料串流數目 (每個 AWS 帳戶)。

指標層級:摘要

單位:計數

Success (成功)

PeriodicShardSyncManager 能夠在取用者應用程式正在處理的資料串流中成功識別部分租用的次數。

指標層級:摘要

單位:計數

時間

PeriodicShardSyncManager 檢查取用者應用程式正在處理的資料串流所需的時間 (毫秒),以判斷哪些資料串流需要碎片同步處理。

指標層級:摘要

單位:毫秒

MultistreamTracker

MultistreamTracker 介面可讓您建置可同時處理多個資料串流的 KCL 取用者應用程式。

指標 描述
DeletedStreams. 計數

在此期間刪除的資料串流數目。

指標層級:摘要

單位:計數

ActiveStreams. 計數

正在處理的作用中資料串流數目。

指標層級:摘要

單位:計數

StreamsPendingDeletion. 計數

擱置刪除的資料串流數目 (依據 FormerStreamsLeasesDeletionStrategy)。

指標層級:摘要

單位:計數

每一工作者指標

系統會針對耗用來自 Kinesis 資料串流 (例如:Amazon EC2 執行個體) 之資料的所有記錄處理器彙總這些指標。

RenewAllLeases

RenewAllLeases 操作會定期更新特定工作者執行個體擁有的碎片租用。

指標 描述
RenewLease. 成功。

成功的工作者租用更新數量。

指標層級:詳細

單位:計數

RenewLease. 時間

租用更新操作耗費的時間。

指標層級:詳細

單位:毫秒

CurrentLeases

在更新所有租用之後,工作者擁有的碎片租用數量。

指標層級:摘要

單位:計數

LostLeases

嘗試更新工作者擁有的所有租用之後,遺失的碎片租用數量。

指標層級:摘要

單位:計數

Success (成功)

工作者成功的租用更新操作次數。

指標層級:摘要

單位:計數

時間

更新工作者所有租用耗費的時間。

指標層級:摘要

單位:毫秒

TakeLeases

TakeLeases 操作會平衡所有 KCL 工作者之間的記錄處理。如果目前的 KCL 工作者擁有的碎片較所需的碎片更少,則會從另一個過載的工作者取得碎片租用。

指標 描述
ListLeases. 成功。

已成功從 KCL 應用程式 DynamoDB 資料表擷取之所有碎片租用的次數。

指標層級:詳細

單位:計數

ListLeases. 時間

從 KCL 應用程式 DynamoDB 資料表擷取所有碎片租用耗費的時間。

指標層級:詳細

單位:毫秒

TakeLease. 成功。

工作者成功從其他 KCL 工作者取得碎片租用的次數。

指標層級:詳細

單位:計數

TakeLease. 時間

更新工作者取得之租用的租用資料表耗費的時間。

指標層級:詳細

單位:毫秒

NumWorkers

工作者的總數量,如特定工作者所識別。

指標層級:摘要

單位:計數

NeededLeases

目前的工作者對平衡碎片處理負載所需的碎片租用數量。

指標層級:詳細

單位:計數

LeasesToTake

工作者將嘗試取得的租用數量。

指標層級:詳細

單位:計數

TakenLeases

工作者成功取得的租用數量。

指標層級:摘要

單位:計數

TotalLeases

KCL 應用程式正在處理的碎片總數量。

指標層級:詳細

單位:計數

ExpiredLeases

任何工作者未處理的碎片總數量,如特定工作者所識別。

指標層級:摘要

單位:計數

Success (成功)

成功完成 TakeLeases 操作的次數。

指標層級:摘要

單位:計數

時間

工作者的 TakeLeases 操作耗費的時間。

指標層級:摘要

單位:毫秒

每一碎片指標

系統會對單一記錄處理器彙總這些指標。

ProcessTask

GetRecords與當前迭代器位置的ProcessTask操作調用從流檢索記錄,並調用記錄處理器processRecords函數。

指標 描述
KinesisDataFetcher獲取記錄. 成功

每一 Kinesis 資料串流碎片成功的 GetRecords 操作數量。

指標層級:詳細

單位:計數

KinesisDataFetcher獲取記錄. 時間

Kinesis 資料串流碎片的每個 GetRecords 操作耗費的時間。

指標層級:詳細

單位:毫秒

UpdateLease. 成功。

記錄處理器針對指定碎片進行的成功檢查點數量。

指標層級:詳細

單位:計數

UpdateLease. 時間

針對指定碎片的每個檢查點操作耗費的時間。

指標層級:詳細

單位:毫秒

DataBytesProcessed

每個 ProcessTask 叫用上處理的記錄總大小 (以位元組為單位)。

指標層級:摘要

單位:位元組

RecordsProcessed

每個 ProcessTask 叫用上處理的記錄數。

指標層級:摘要

單位:計數

ExpiredIterator

撥打電話時 ExpiredIteratorException 接收的數量GetRecords

指標層級:摘要

單位:計數

MillisBehindLatest 目前反覆運算器落後碎片中最新記錄 (頂端) 的時間。這個值小於或等於回應中最新記錄與目前時間之間的時間差異。相較於比較上次回應記錄中的時間戳記,此能更準確地反映碎片與頂端的距離。此值適用於最新的記錄批次,而不是每個記錄中所有時間戳記的平均。

指標層級:摘要

單位:毫秒

RecordProcessor. 進程記錄.

記錄處理器的 processRecords 方法耗費的時間。

指標層級:摘要

單位:毫秒

Success (成功)

成功的處理任務操作數量。

指標層級:摘要

單位:計數

時間

處理任務操作耗費的時間。

指標層級:摘要

單位:毫秒