使用亚马逊监控 Kinesis 制作器库 CloudWatch - Amazon Kinesis Data Streams

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

使用亚马逊监控 Kinesis 制作器库 CloudWatch

亚马逊 Kinesis Data Streams 的 Kinesis 制作者库 (KPL) 代表你发布自定义的 CloudWatch 亚马逊指标。您可以通过导航到CloudWatch 控制台并选择 “自定义指标” 来查看这些指标。有关自定义指标的更多信息,请参阅 Amazon CloudWatch 用户指南中的发布自定义指标

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

指标、维度和命名空间

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

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

指标级别和粒度

有两个选项可以控制上传到的指标数量 CloudWatch:

指标级别

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

粒度

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

选择 SHARD 后,发出将流名称和分片 ID 作为维度的指标。此外,还发出仅具有流名称维度的相同指标和不带流名称的指标。这意味着,对于一个特定的指标,两个各有两个分片的流将生成七个 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

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

在用户记录完成时(成功时或不再能够重试时)发出数据。如果记录值 time-to-live 很大,则该指标可能会延迟很长时间。

指标级别:详细

单位:计数

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 中的用户记录的总数。这大致相当于之前两个指标的产品。在分片级别不可用。

指标级别:详细

单位:计数