使用亚马逊监控 Kinesis 客户端库 CloudWatch - Amazon Kinesis Data Streams

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用亚马逊监控 Kinesis 客户端库 CloudWatch

适用于 Amazon Kinesis Data Streams 的 Kinesis 客户端库 (KCL) 使用您的KCL应用程序名称作为命名空间,代表您发布自定义的亚马逊 CloudWatch 指标。您可以通过导航到CloudWatch 控制台并选择 “自定义指标” 来查看这些指标。有关自定义指标的更多信息,请参阅 Amazon CloudWatch 用户指南中的发布自定义指标

上传到 CloudWatch 的指标收取象征性费用KCL;具体而言,亚马逊 CloudWatch 自定义指标亚马逊 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为处理多个数据流,则默认情况下会启用所有指标维度(OperationShardIdStreamId、、和WorkerIdentifier)。此外,在 KCL 2.x 中,如果配置KCL为处理多个数据流,则无法禁用OperationStreamId维度。 StreamId维度仅适用于每个分片的指标。

在 KCL 1.x 中,默认情况下只有OperationShardId维度处于启用状态,并且该WorkerIdentifier维度处于禁用状态。在 KCL 1.x 中,无法禁用该Operation尺寸。

有关 CloudWatch 指标维度的更多信息,请参阅《亚马逊 CloudWatch 用户指南》中 “亚马逊 CloudWatch 概念” 主题中的 “度” 部分。

启用WorkerIdentifier维度后,如果每次特定KCL工作人员重新启动时对工作人员 ID 属性使用不同的值,则会将具有新WorkerIdentifier维度值的新指标集发送到 CloudWatch。如果您需要在特定KCL工作器重新启动时保持相同的WorkerIdentifier维度值,则必须在初始化期间为每个工作器明确指定相同的工作程序 ID 值。请注意,每个在职工作人员的工作人员 ID 值在所有KCLKCL工作人员中必须是唯一的。

指标配置

可以使用实例配置指标级别和启用的维度,该 KinesisClientLibConfiguration 实例在启动KCL应用程序时会传递给 Worker。 MultiLangDaemon 在这种情况下,可以在用于启动 MultiLangDaemon KCL应用程序metricsLevelmetricsEnabledDimensions .properties 文件中指定和属性。

可以为指标级别分配三个值之一:NONESUMMARY、或DETAILED。启用的维度值必须是以逗号分隔的字符串,其中包含指标允许使用的维度列表。 CloudWatch KCL应用程序使用的维度是OperationShardId、和WorkerIdentifier

指标的列表

下表列出了按范围和操作分组的KCL指标。

每个KCL应用程序的指标

这些指标汇总了应用程序范围内的所有KCL工作人员(由 Amazon CloudWatch 命名空间定义)。

InitializeTask

InitializeTask操作负责初始化KCL应用程序的记录处理器。此操作的逻辑包括从 Kinesis Data Streams 中获取分片迭代器并初始化记录处理程序。

指标 描述
KinesisDataFetcher。 getIterator. 成功

每个KCL应用程序的成功GetShardIterator操作数。

指标级别:详细

单位:计数

KinesisDataFetcher。 getIterator.Time

给定KCL应用程序每次GetShardIterator操作所花费的时间。

指标级别:详细

单位:毫秒

RecordProcessor.initialize.tim

记录处理器的初始化方法所花费的时间。

指标级别:汇总

单位:毫秒

成功

成功的记录处理程序初始化的数目。

指标级别:汇总

单位:计数

时间

KCL工作人员进行记录处理器初始化所花费的时间。

指标级别:汇总

单位:毫秒

ShutdownTask

ShutdownTask 操作初始化分片处理的关闭顺序。这可能是因为分片被拆分或合并,或者当分片租赁从工作程序中丢失时。在这两种情况下,将调用记录处理程序 shutdown() 函数。在分片被拆分或合并的情况下也会发现新的分片,这将创建一个或两个新的分片。

指标 描述
CreateLease. 成功

父分片关闭后,新子分片成功添加到KCL应用程序 DynamoDB 表中的次数。

指标级别:详细

单位:计数

CreateLease.Time

在KCL应用程序 DynamoDB 表中添加新的子分片信息所花费的时间。

指标级别:详细

单位:毫秒

UpdateLease. 成功

记录处理程序关闭期间成功的最终检查点的数目。

指标级别:详细

单位:计数

UpdateLease.Time

记录处理程序关闭期间检查点操作所花费的时间。

指标级别:详细

单位:毫秒

RecordProcessor.shutdown.time

记录处理器的关闭方法所花费的时间。

指标级别:汇总

单位:毫秒

成功

成功的关闭任务的数目。

指标级别:汇总

单位:计数

时间

KCL工作人员执行关机任务所花费的时间。

指标级别:汇总

单位:毫秒

ShardSyncTask

ShardSyncTask操作会发现 Kinesis 数据流的分片信息的更改,因此应用程序可以处理新的分片。KCL

指标 描述
CreateLease. 成功

成功尝试向KCL应用程序 DynamoDB 表添加新分片信息的次数。

指标级别:详细

单位:计数

CreateLease.Time

在KCL应用程序 DynamoDB 表中添加新的分片信息所花费的时间。

指标级别:详细

单位:毫秒

成功

成功的分片同步操作的数目。

指标级别:汇总

单位:计数

时间

分片同步操作所花费的时间。

指标级别:汇总

单位:毫秒

BlockOnParentTask

如果一个分片被拆分或与其他分片合并,则会创建新的子分片。该BlockOnParentTask操作可确保新分片的记录处理直到父分片完全由处理完毕后才会开始。KCL

指标 描述
成功

父分片完成的成功检查的数目。

指标级别:汇总

单位:计数

时间

父分片完成所花费的时间。

指标级别:汇总

单位:毫秒

PeriodicShardSyncManager

负责检查使用KCL者应用程序正在处理的数据流,识别具有部分租约的数据流,并将其移交以进行同步。PeriodicShardSyncManager

当配置KCL为处理单个数据流(然后 NumStreamsToSync 和的值设置 NumStreamsWithPartialLeases 为 1)以及配置为处理多个数据流KCL时,以下指标可用。

指标 描述
NumStreamsToSync

消费者应用程序正在处理的数据流(每个 AWS 账户)的数量,这些数据流包含部分租约,并且必须移交以进行同步。

指标级别:汇总

单位:计数

NumStreamsWithPartialLeases

使用者应用程序正在处理的包含部分租约的数据流(每个 AWS 账户)的数量。

指标级别:汇总

单位:计数

成功

PeriodicShardSyncManager 能够成功识别消费端应用程序正在处理的数据流中部分租约的次数。

指标级别:汇总

单位:计数

时间

PeriodicShardSyncManager 检查消费端应用程序正在处理的数据流以确定哪些数据流需要分片同步所花费的时间(以毫秒为单位)。

指标级别:汇总

单位:毫秒

MultistreamTracker

MultistreamTracker接口使您能够构建可以同时处理多个数据流的使用KCL者应用程序。

指标 描述
DeletedStreams.Count

在指定时段内删除的数据流数量。

指标级别:汇总

单位:计数

ActiveStreams.Count

正在处理的活动数据流的数量。

指标级别:汇总

单位:计数

StreamsPendingDeletion.Count

依据 FormerStreamsLeasesDeletionStrategy 待删除的数据流的数量。

指标级别:汇总

单位:计数

每位工作人员的指标

这些指标汇总了使用来自 Kinesis 数据流(例如 Ama EC2 zon 实例)的数据的所有记录处理器。

RenewAllLeases

RenewAllLeases 操作定期续订由特定工作程序实例拥有的分片租约。

指标 描述
RenewLease. 成功

工作程序成功续订租约的数目。

指标级别:详细

单位:计数

RenewLease.Time

租约续订操作所花费的时间。

指标级别:详细

单位:毫秒

CurrentLeases

续订所有租约后由工作程序拥有的分片租约数。

指标级别:汇总

单位:计数

LostLeases

在尝试续订由工作程序拥有的所有租约后丢失的分片租约数。

指标级别:汇总

单位:计数

成功

工作程序的成功的租约续订操作次数。

指标级别:汇总

单位:计数

时间

续订工作程序的所有租约所花费的时间。

指标级别:汇总

单位:毫秒

TakeLeases

TakeLeases操作在所有KCL工作人员之间平衡记录处理。如果当前KCL工作人员的分片租约少于所需的分片租约,则它会从另一个超载的工作程序那里获得分片租约。

指标 描述
ListLeases. 成功

成功从应用程序 KCL DynamoDB 表中检索所有分片租约的次数。

指标级别:详细

单位:计数

ListLeases.Time

从应用程序 KCL DynamoDB 表中检索所有分片租约所花费的时间。

指标级别:详细

单位:毫秒

TakeLease. 成功

该工作人员成功从其他KCL工作人员那里获得分片租赁的次数。

指标级别:详细

单位:计数

TakeLease.Time

利用该工作程序提取的租约更新租约表所花费的时间。

指标级别:详细

单位:毫秒

NumWorkers

工作程序总数,由特定工作程序标识。

指标级别:汇总

单位:计数

NeededLeases

当前工作程序为平衡分片处理负载所需的分片租约数。

指标级别:详细

单位:计数

LeasesToTake

工作程序将尝试提取的租约的数目。

指标级别:详细

单位:计数

TakenLeases

工作程序已成功提取的租约的数目。

指标级别:汇总

单位:计数

TotalLeases

KCL应用程序正在处理的分片总数。

指标级别:详细

单位:计数

ExpiredLeases

未由任何工作程序处理的分片的总数,由特定工作程序标识。

指标级别:汇总

单位:计数

成功

TakeLeases 操作已成功完成的次数。

指标级别:汇总

单位:计数

时间

工作程序的 TakeLeases 操作所花费的时间。

指标级别:汇总

单位:毫秒

每个分片的指标

这些指标跨单个记录处理程序聚合一起。

ProcessTask

ProcessTask操作使用当前迭代器位置调GetRecords用以从流中检索记录,并调用记录处理器函数。processRecords

指标 描述
KinesisDataFetcher。 getRecords. 成功

每个 Kinesis 数据流分片的成功 GetRecords 操作数。

指标级别:详细

单位:计数

KinesisDataFetcher。 getRecords.Time

Kinesis 数据流分片的每个 GetRecords 操作所花费的时间。

指标级别:详细

单位:毫秒

UpdateLease. 成功

给定分片的记录处理程序完成的成功检查点的数目。

指标级别:详细

单位:计数

UpdateLease.Time

给定分片的每个检查点操作所花费的时间。

指标级别:详细

单位:毫秒

DataBytesProcessed

每个 ProcessTask 调用所处理的记录的总大小(以字节为单位)。

指标级别:汇总

单位:字节

RecordsProcessed

每个 ProcessTask 调用所处理的记录的数量。

指标级别:汇总

单位:计数

ExpiredIterator

呼叫时 ExpiredIteratorException 收到的数量GetRecords

指标级别:汇总

单位:计数

MillisBehindLatest 当前迭代器晚于分片中最新记录 (tip) 的时间。此值为小于或等于响应中最新一条记录的时间和当前时间之间的时差。与比较最新一条响应记录中的时间戳相比,此指标可以更精确地反映分片相对于末端的距离。此值适用于最近一批记录,而不是每条记录中所有时间戳的平均值。

指标级别:汇总

单位:毫秒

RecordProcessor。 processRecords.Time

记录处理器的 processRecords 方法所花费的时间。

指标级别:汇总

单位:毫秒

成功

成功处理任务操作的数目。

指标级别:汇总

单位:计数

时间

处理任务操作所花费的时间。

指标级别:汇总

单位:毫秒