利用 Amazon 监控 Kinesis 客户端库CloudWatch - Amazon Kinesis Data Streams
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

利用 Amazon 监控 Kinesis 客户端库CloudWatch

这些区域有:Kinesis 客户端库Amazon Kinesis Data Streams) 发布自定义 AmazonCloudWatch指标代表您使用 KCL 应用程序的名称作命名空间。您可以通过导航至CloudWatch控制台然后选择自定义指标. 有关自定义指标的更多信息,请参阅发布自定义指标中的亚马逊CloudWatch用户指南.

对于上传到的指标,存在象征性的少许费用。CloudWatch来自 KCL;具体而言,亚马逊CloudWatch自定义指标亚马逊CloudWatchAPI 请求将收取费用。有关更多信息,请参阅 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. 如果需要WorkerIdentifier维度值在特定的 KCL 工作程序重新启动时保持不变,则必须在每个工作程序初始化时显式指定相同的工作程序 ID 值。请注意,每个有效 KCL 工作程序的工作程序 ID 值在所有 KCL 工作程序中必须是唯一的。

指标配置

指标级别和启用的维度可使用KinesisClientLibConfiguration实例,该实例将在启动 KCL 应用程序时将传递给工作程序。在MultiLang守护进程案例,metricsLevelmetricsEnabledDimensions属性可在用于启动MultiLang守护程序 KCL 应用程序。

指标级别可分配三个值:无、摘要或详细。启用的维度值在 CloudWatch 指标允许的维度的列表中必须是以逗号分隔的字符串。KCL 应用程序使用的维度为OperationShardId, 和WorkerIdentifier.

指标的列表

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

每个 KCL 应用程序指标

这些指标跨应用程序范围内的所有 KCL 工作程序聚合一起,就像亚马逊所定义的那样。CloudWatch命名空间。

InitializeTask

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

指标 描述
KinesisDatafetcher.getiterator。成功

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

指标级别:明细

单位:计数

KinesisDatafetcher.getiterator .Time

每个需要的时间GetShardIterator对于给定 KCL 应用程序的操作。

指标级别:明细

单位:毫秒

RecordProcessor. 初始化 .time

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

指标级别:摘要

单位:毫秒

成功

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

指标级别:摘要

单位:计数

Time

KCL 工作程序初始化记录处理器所花费的时间。

指标级别:摘要

单位:毫秒

ShutdownTask

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

指标 描述
CreateLease.成功

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

指标级别:明细

单位:计数

CreateLease.Time

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

指标级别:明细

单位:毫秒

UpdateLease.成功

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

指标级别:明细

单位:计数

UpdateLease.Time

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

指标级别:明细

单位:毫秒

RecordProcessor.shutdown.Time

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

指标级别:摘要

单位:毫秒

成功

成功的关闭任务的数目。

指标级别:摘要

单位:计数

Time

KCL 工作程序关闭任务所花费的时间。

指标级别:摘要

单位:毫秒

ShardSync任务

这些区域有:ShardSyncTask操作会发现对 Kinesis 数据流的分片信息所做的更改,因此 KCL 应用程序可处理新的分片。

指标 描述
CreateLease.成功

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

指标级别:明细

单位:计数

CreateLease.Time

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

指标级别:明细

单位:毫秒

成功

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

指标级别:摘要

单位:计数

Time

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

指标级别:摘要

单位:毫秒

BlockOnParentTask

如果一个分片被拆分或与其他分片合并,则会创建新的子分片。这些区域有:BlockOnParentTask操作确保新分片的记录处理在完全处理父分片之前不会开始。

指标 描述
成功

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

指标级别:摘要

单位:计数

Time

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

指标级别:摘要

单位:毫秒

PeriodicShardSyncManager

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

如果将 KCL 配置为处理单个数据流(然后是NumStreamsToSync和NumStreamsWithPartial租赁设置为 1) 以及当 KCL 配置为处理多个数据流时也会设置为。

指标 描述
NumStreamsToSync

数据流的数量(每Amazon账户)由包含部分租约且必须移交才能同步的消费者应用程序处理。

指标级别:摘要

单位:计数

NumStreamsWithPartial租赁

数据流的数量(每Amazon账户),消费者应用程序正在处理包含部分租赁。

指标级别:摘要

单位:计数

成功

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

指标级别:摘要

单位:计数

Time

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

指标级别:摘要

单位:毫秒

MultistreamTracker

这些区域有:MultistreamTracker接口使您能够构建可以同时处理多个数据流的 KCL 消费者应用程序。

指标 描述
DeletedStreams.count

此时段删除的数据流的数量。

指标级别:摘要

单位:计数

ActiveStreams.count

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

指标级别:摘要

单位:计数

StreamsPending删除。计数

等待删除的数据流数量基于FormerStreamsLeasesDeletionStrategy.

指标级别:摘要

单位:计数

Per-Worker 指标

这些指标跨使用 Kinesis 数据流(例如 Amazon EC2 实例)中的数据的所有记录处理程序进行聚合。

RenewAll租赁

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

指标 描述
RenewLease.成功

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

指标级别:明细

单位:计数

RenewLease.Time

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

指标级别:明细

单位:毫秒

CurrentLeases

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

指标级别:摘要

单位:计数

LostLeases

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

指标级别:摘要

单位:计数

成功

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

指标级别:摘要

单位:计数

Time

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

指标级别:摘要

单位:毫秒

TakeLeases

这些区域有:TakeLeases操作在所有 KCL 工作程序之间平衡记录处理。如果当前 KCL 工作程序拥有的分片租约少于所需的分片租约,则将从已过载的另一个工作程序中提取分片租约。

指标 描述
ListLeases.成功

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

指标级别:明细

单位:计数

ListLeases.Time

从 KCL 应用程序 DynamoDB 表中检索所花费的时间。

指标级别:明细

单位:毫秒

TakeLease.成功

工作程序成功从其他 KCL 工作程序中获得分片租约的次数。

指标级别:明细

单位:计数

TakeLease.Time

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

指标级别:明细

单位:毫秒

NumWorkers

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

指标级别:摘要

单位:计数

NeededLeases

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

指标级别:明细

单位:计数

LeasesTo拿

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

指标级别:明细

单位:计数

TakenLeases

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

指标级别:摘要

单位:计数

TotalLeases

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

指标级别:明细

单位:计数

ExpiredLeases

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

指标级别:摘要

单位:计数

成功

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

指标级别:摘要

单位:计数

Time

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

指标级别:摘要

单位:毫秒

Per-Shard 指标

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

ProcessTask

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

指标 描述
KinesisDataFetcher.获取记录。成功

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

指标级别:明细

单位:计数

KinesisDatafetcher.get Records.Time

每个需要的时间GetRecordsKinesis Data Streams 分片的操作。

指标级别:明细

单位:毫秒

UpdateLease.成功

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

指标级别:明细

单位:计数

UpdateLease.Time

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

指标级别:明细

单位:毫秒

DataBytes已处理

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

指标级别:摘要

单位:字节

RecordsProcessed

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

指标级别:摘要

单位:计数

ExpiredIterator

的数量ExpiredIterator通话时收到异常GetRecords.

指标级别:摘要

单位:计数

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

指标级别:摘要

单位:毫秒

RecordProcessor.Process Records.Time

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

指标级别:摘要

单位:毫秒

成功

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

指标级别:摘要

单位:计数

Time

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

指标级别:摘要

单位:毫秒