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

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

使用 Amazon CloudWatch 监控监控 Kinesis 客户端库

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

对于由 KCL 上传到 CloudWatch 的指标,存在象征性的少许费用;具体而言,Amazon CloudWatch 自定义指标Amazon CloudWatch API 请求需支付费用。有关更多信息,请参阅 Amazon CloudWatch 定价

指标和命名空间

用于上传指标的命名空间是您在启动 KCL 时指定的应用程序名称。

指标级别和维度

可通过两个选项控制已上传到 CloudWatch 的指标:

指标级别

每个指标分配有一个独立的级别。在您设置指标报告级别后,独立级别低于报告级别的指标将不会发送到 CloudWatch。指标级别如下:汇总 NONESUMMARY, 和DETAILED。默认设置为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 指标维度的更多信息,请参阅Dimensions部分中的 “Amazon CloudWatch 概念” 主题的Amazon CloudWatch 用户指南

WorkerIdentifier维度,如果每次特定的 KCL 工作程序重新启动时使用的是不同的工作程序 ID 属性值,则会将新的指标组和新的WorkerIdentifier维度值将被发送到 CloudWatch。如果您需要WorkerIdentifier维度值在特定的 KCL 工作程序重新启动时保持不变,则必须在每个工作程序初始化时显式指定相同的工作程序 ID 值。请注意,每个有效 KCL 工作程序的工作程序 ID 值在所有 KCL 工作程序中必须是唯一的。

指标配置

指标级别和启用的维度可使用 KinesisClientLibConfiguration 实例进行配置,该实例将在启动 KCL 应用程序时将传递给工作程序。在多语言守护进程的情况下,metricsLevelmetricsEnabledDimensions属性可在用于启动 MultiLangDaemon KCL 应用程序的 .properties 文件中指定。

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

指标的列表

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

每 KCL 应用程序指标

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

InitializeTask

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

指标 描述
KinesisDataFetcher.getIterator.Success

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

指标级别:汇总 明细

单位:计数

KinesisDataFetcher.getIterator.Time

每个使用的时间GetShardIterator操作。

指标级别:汇总 明细

单位:毫秒

RecordProcessor.initialize.Time

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

指标级别:汇总 摘要

单位:毫秒

成功

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

指标级别:汇总 摘要

单位:计数

Time

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

指标级别:汇总 摘要

单位:毫秒

ShutdownTask

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

指标 描述
CreateLease.Success

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

指标级别:汇总 明细

单位:计数

CreateLease.Time

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

指标级别:汇总 明细

单位:毫秒

UpdateLease.Success

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

指标级别:汇总 明细

单位:计数

UpdateLease.Time

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

指标级别:汇总 明细

单位:毫秒

RecordProcessor.shutdown.Time

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

指标级别:汇总 摘要

单位:毫秒

成功

成功的关闭任务的数目。

指标级别:汇总 摘要

单位:计数

Time

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

指标级别:汇总 摘要

单位:毫秒

ShardSyncTask

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

指标 描述
CreateLease.Success

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

指标级别:汇总 明细

单位:计数

CreateLease.Time

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

指标级别:汇总 明细

单位:毫秒

成功

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

指标级别:汇总 摘要

单位:计数

Time

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

指标级别:汇总 摘要

单位:毫秒

BlockOnParentTask

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

指标 描述
成功

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

指标级别:汇总 摘要

单位:计数

Time

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

指标级别:汇总 摘要

Unit (单位):毫秒

PeriodicShardSyncManager

这些区域有:PeriodicShardSyncManager负责检查 KCL 使用者应用程序正在处理的数据流,识别具有部分租约的数据流,并将它们交给同步。

如果将 KCL 配置为处理单个数据流(然后将数流同步和带部分存储的数字流的值设置为 1),以及将 KCL 配置为处理多个数据流时,则可以使用以下度量。

指标 描述
数字流同步

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

指标级别:汇总 摘要

单位:计数

包含部分存储的数值流

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

指标级别:汇总 摘要

单位:计数

成功

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

指标级别:汇总 摘要

单位:计数

Time

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

指标级别:汇总 摘要

单位:毫秒

MultistreamTracker

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

指标 描述
已删除的流。计数

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

指标级别:汇总 摘要

单位:计数

活动流。计数

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

指标级别:汇总 摘要

单位:计数

流支出删除。计数

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

指标级别:汇总 摘要

单位:计数

Per-Worker 指标

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

RenewAllLeases

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

指标 描述
RenewLease.Success

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

指标级别:汇总 明细

单位:计数

RenewLease.Time

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

指标级别:汇总 明细

单位:毫秒

CurrentLeases

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

指标级别:汇总 摘要

单位:计数

LostLeases

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

指标级别:汇总 摘要

单位:计数

成功

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

指标级别:汇总 摘要

单位:计数

Time

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

指标级别:汇总 摘要

单位:毫秒

TakeLeases

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

指标 描述
ListLeases.Success

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

指标级别:汇总 明细

单位:计数

ListLeases.Time

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

指标级别:汇总 明细

单位:毫秒

TakeLease.Success

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

指标级别:汇总 明细

单位:计数

TakeLease.Time

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

指标级别:汇总 明细

单位:毫秒

NumWorkers

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

指标级别:汇总 摘要

单位:计数

NeededLeases

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

指标级别:汇总 明细

单位:计数

LeasesToTake

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

指标级别:汇总 明细

单位:计数

TakenLeases

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

指标级别:汇总 摘要

单位:计数

TotalLeases

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

指标级别:汇总 明细

单位:计数

ExpiredLeases

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

指标级别:汇总 摘要

单位:计数

成功

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

指标级别:汇总 摘要

单位:计数

Time

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

指标级别:汇总 摘要

单位:毫秒

Per-Shard 指标

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

ProcessTask

这些区域有:ProcessTask操作调用GetRecords与当前迭代器位置一起从流中检索记录并调用记录处理程序processRecordsfunction.

指标 描述
KinesisDataFetcher.getRecords.Success

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

指标级别:汇总 明细

单位:计数

KinesisDataFetcher.getRecords.Time

每个使用的时间GetRecords操作。

指标级别:汇总 明细

单位:毫秒

UpdateLease.Success

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

指标级别:汇总 明细

单位:计数

UpdateLease.Time

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

指标级别:汇总 明细

单位:毫秒

DataBytesProcessed

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

指标级别:汇总 摘要

单位:字节

RecordsProcessed

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

指标级别:汇总 摘要

单位:计数

ExpiredIterator

调用 GetRecords 时收到的 ExpiredIteratorException 的数量。

指标级别:汇总 摘要

单位:计数

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

指标级别:汇总 摘要

单位:毫秒

RecordProcessor.processRecords.Time

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

指标级别:汇总 摘要

单位:毫秒

成功

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

指标级别:汇总 摘要

单位:计数

Time

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

指标级别:汇总 摘要

单位:毫秒