使用 Amazon CloudWatch 监控 Kinesis Producer Library - Amazon Kinesis Data Streams
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 Amazon CloudWatch 监控 Kinesis Producer Library

适用于 Amazon Kinesis Data Streams 的 Kinesis Producer Library(KPL)代表您发布自定义 Amazon CloudWatch 指标。您可以通过导航至 CloudWatch 控制台并选择自定义指标来查看这些指标。有关自定义指标的更多信息,请参阅《Amazon CloudWatch 用户指南》中的发布自定义指标

对于由 KPL 上传到 CloudWatch 的指标,系统会象征性地收取少许费用;具体而言,将对 Amazon CloudWatch 自定义指标和 Amazon CloudWatch API 请求收取费用。有关更多信息,请参阅 Amazon CloudWatch 定价。本地指标收集不会产生 CloudWatch 费用。

指标、维度和命名空间

您可在启动 KPL 时指定应用程序名称,该名称随后在上传指标时将用作命名空间的一部分。这是可选操作;如果未设置应用程序名称,则 KPL 会提供一个默认值。

您也可以配置 KPL 将任意其他维度添加到指标。这在您希望获得 CloudWatch 指标中的更详细数据时很有用。例如,您可将主机名作为维度添加,随后该维度将允许您标识实例集中不均匀的负载分配。所有 KPL 配置设置是不可变的,因此您在初始化 KPL 实例后将无法更改其他维度。

指标级别和粒度

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

指标级别

这是对指标重要性的粗略估计。为每个指标分配了一个级别。如果设置了级别,低于该级别的指标将不会发送到 CloudWatch。级别为 NONESUMMARYDETAILED。默认设置为 DETAILED;即,所有指标。NONE 表示没有任何指标,因此实际上未为该级别分配任何指标。

粒度

这可控制是否在其他粒度级别发出相同指标。级别为 GLOBALSTREAMSHARD。默认设置为 SHARD,其中包含粒度最高的指标。

选择 SHARD 后,发出将流名称和分片 ID 作为维度的指标。此外,还发出仅具有流名称维度的相同指标和不带流名称的指标。这意味着,对于特定指标,具有两个分片的两个流均会生成 7 个 CloudWatch 指标:一个针对每个分片的指标、一个针对每个流的指标以及一个针对整体的指标;所有指标都描述处于不同级别粒度的相同统计数据。有关说明,请见下图。

层次结构中的不同粒度级别与系统中的所有指标构成了一个基于指标名称的树:

MetricName (GLOBAL): Metric X Metric Y | | ----------------- ------------ | | | | StreamName (STREAM): Stream A Stream B Stream A Stream B | | -------- --------- | | | | ShardID (SHARD): Shard 0 Shard 1 Shard 0 Shard 1

并不会在分片级别提供所有指标;一些指标本来就属于流级别或全局级别。不会在分片级别生成这些指标,即使已启用分片级别指标(上图中的 Metric Y)。

在指定其他维度时,您需要提供 tuple:<DimensionName, DimensionValue, Granularity> 的值。粒度用于确定自定义维度在层次结构中的插入位置:GLOBAL 表示其他维度将插入到指标名称的后面;STREAM 表示其他维度将插入到流名称的后面;SHARD 表示其他维度将插入到分片 ID 的后面。如果为每个粒度级别提供多个其他维度,则这些维度将按给定顺序插入。

本地访问和 Amazon CloudWatch 上传

将实时本地提供当前 KPL 实例的指标;您可随时查询 KPL 以获得这些指标。KPL 本地计算每个指标的总和、平均值、最小值、最大值和计数,就像在 CloudWatch 中一样。

您可获取从程序启动到当前时间点或在过去 N 秒内(其中 N 为介于 1 和 60 之间的整数)使用滚动窗口累积的统计数据。

所有指标均可上传到 CloudWatch。这在跨多台主机聚合数据、监控和警报时特别有用。此功能在本地不可用。

如前所述,您可选择使用指标级别粒度 设置来上传的指标。未上传的指标在本地可用。

不支持单独上传数据点,因为如果流量过高,则每秒会生成数以百万计的上传。为此,KPL 会将指标本地聚合到 1 分钟存储桶中,并每分钟按启用的指标将统计数据对象上传到 CloudWatch 一次。

指标的列表

指标 描述
UserRecordsReceived

由放置操作的 KPL 内核接收的逻辑用户记录的计数。在分片级别不可用。

指标级别:详细

单位:计数

UserRecordsPending

当前挂起的用户记录的数目的定期取样。如果记录当前已缓冲并等待发送,或已发送和正在发送到后端服务,则记录处于挂起状态。在分片级别不可用。

KPL 提供了专用方法在全局级别检索此指标,以便客户管理其放置速率。

指标级别:详细

单位:计数

UserRecordsPut

已成功放置的逻辑用户记录的计数。

KPL 不计算此指标的失败记录数。这允许用于提供成功率的平均值、用于提供总尝试数的计数以及用于提供失败计数的计数与总和之间的差值。

指标级别:汇总

单位:计数

UserRecordsDataPut

逻辑用户记录成功放置的字节数。

指标级别:详细

单位:字节

KinesisRecordsPut

已成功放置的 Kinesis Data Streams 记录的计数(每条 Kinesis Data Streams 记录均可包含多条用户记录)。

KPL 会输出零作为失败记录数。这允许用于提供成功率的平均值、用于提供总尝试数的计数以及用于提供失败计数的计数与总和之间的差值。

指标级别:汇总

单位:计数

KinesisRecordsDataPut

Kinesis Data Streams 记录中的字节数。

指标级别:详细

单位:字节

ErrorsByCode

每种错误代码的计数。这引入了 ErrorCodeStreamName 等正常维度以及 ShardId 的其他维度。并非每个错误都可跟踪到分片。无法跟踪的错误仅在流或全局级别发出。此指标捕获有关限制、分片映射更改、内部故障、服务不可用、超时等的信息。

每条 Kinesis Data Streams 记录计算一次 Kinesis Data Streams API 错误。Kinesis Data Streams 记录中的多条用户记录不会生成多个计数。

指标级别:汇总

单位:计数

AllErrors

这是由与 Errors by Code 相同的错误引发的,但并不区分类型。这在常规监控错误率而不需要手动汇总所有不同类型错误的计数时非常有用。

指标级别:汇总

单位:计数

RetriesPerRecord

每个用户记录执行的重试次数。为一次性尝试成功的记录发出零。

在用户记录完成时(成功时或不再能够重试时)发出数据。如果记录生存时间是一个较大的值,则此指标可能显著延迟。

指标级别:详细

单位:计数

BufferingTime

用户记录到达 KPL 和离开前往后端之间的时间。此信息将基于记录传回给用户,还可用作聚合的统计数据。

指标级别:汇总

单位:毫秒

Request Time

执行 PutRecordsRequests 所花费的时间。

指标级别:详细

单位:毫秒

User Records per Kinesis Record

已聚合到单条 Kinesis Data Streams 记录中的逻辑用户记录的数目。

指标级别:详细

单位:计数

Amazon Kinesis Records per PutRecordsRequest

已聚合到单个 PutRecordsRequest 中的 Kinesis Data Streams 记录的数目。在分片级别不可用。

指标级别:详细

单位:计数

User Records per PutRecordsRequest

包含在 PutRecordsRequest 中的用户记录的总数。这大致相当于之前两个指标的产品。在分片级别不可用。

指标级别:详细

单位:计数