我可以使用哪些指标来监控和解决 Kinesis 数据流问题?

2 分钟阅读
0

我想监控 Amazon Kinesis 数据流的传入和传出数据。

解决方法

使用流级别指标

您可以使用 Amazon CloudWatch 指标来持续监控 Amazon Kinesis 数据流的性能及其吞吐量。以下指标可以帮助您监控生产者和消费者问题。

GetRecords.IteratorAgeMilliseconds
GetRecords.IteratorAgeMilliseconds 以毫秒为单位测量所有 GetRecords 请求流中最后一条记录的寿命。如果该指标的值为零,则表示这条记录在此流中是最新的。值越低越好。要监控任何性能问题,请增加流的消费者数量,以便更快地处理数据。要优化您的应用程序代码,请增加消费者的数量以减少处理记录的延迟。

ReadProvisionedThroughputExceeded
ReadProvisionedThroughputExceeded 用于衡量在给定时间段内受到限制且超过 Kinesis 数据流的服务或分片限制的 GetRecords 调用次数。值为零表示数据消费者没有超过服务配额。任何其他值都表示已超过吞吐量限制,需要更多分片。该指标确认流中读取次数/秒/分片不超过五次,或吞吐量不超过 2 MB/秒/分片。您可以开启增强监控,以验证流中没有热分片。

WriteProvisionedThroughputExceeded
WriteProvisionedThroughputExceeded 会测量 PUT 或数据生产者(例如 ReadProvisionedThroughputExceeded),以帮助确定流是否受到限制。写入分片时,这超过了数据流的服务配额。确保 PUT 请求不超过 1 MB/秒/分片或 1,000 条记录/分片/秒。确保分区键均匀分布,并启用增强监控以检查流中是否存在热分片。根据分片饱和度,更新流中的分片数以增加吞吐量。

PutRecord.Success 和 PutRecords.Success
PutRecord.SuccessPutRecords.Success 衡量的是数据生产者在给定时间段内向流中成功提交 PutRecords 请求的记录数。该指标可以确认失败记录的有效重试逻辑。

GetRecords.Success
GetRecords.Success 用于衡量流中给定时间段内成功的 GetRecords 请求的数量。它可以确认失败记录的有效重试逻辑。

GetRecords.Latency
GetRecords.Latency 衡量在指定时间段内每次对流进行 GetRecords 操作所花费的时间。它可以确认有足够的物理资源或记录处理逻辑来处理增加的流吞吐量。它还处理更大批次的数据,以减少应用程序中的网络延迟和其他下游延迟。对于 Kinesis Client Library(KCL),查看 ProcessTask.Time 指标,以监控处理迟缓的应用程序的处理时间。GetRecords.Latency 指标可以确认 IDLE_TIME_BETWEEN_READS_IN_MILLIS 已设置为与流处理同步。

PutRecords.Latency
PutRecords.Latency 衡量在指定时间段内每次对流进行 PutRecords 操作所花的时间。如果 PutRecords.Latency 值很高,请将多条记录汇聚到一个更大的文件中,然后将数据分批输入 Kinesis 数据流。您也可以使用多线程写入数据。PutRecords API 上的节流和重试逻辑会影响延迟和流上每个 PutRecords 操作所花费的时间。然后,使用所列指标的平均统计数据来监控流的性能和吞吐量。
注意:对于 GetRecords.IteratorAgeMilliseconds,使用最大统计数据来降低任何读取操作滞后的消费者丢失数据的风险。配置 CloudWatch 告警以响应任何要评估的指标数据点。有关 CloudWatch 告警的更多信息,请参阅使用 Amazon CloudWatch 告警

如果您使用增强型扇出功能,请使用以下指标监控 Kinesis 数据流:

**SubscribeToShard.RateExceeded:**衡量每秒超出该操作允许的调用次数,或者由于已存在有效订阅而导致订阅尝试失败的情况。

**SubscribeToShard.Success:**验证 SubscribeToShard 操作是否成功。

**SubscribeToShardEvent.Success:**验证活动订阅事件是否成功发布。

**SubscribeToShardEvent.Bytes:**测量在指定时间段内分片中接收的字节数。

**SubscribeToShardEvent.Records:**衡量在指定时间段内分片中收到的记录数量。

**SubscribeToShardEvent.MillisBehindLatest:**测量写入流的 SubscribeToShard 事件的当前时间和最后一条记录之间的差异。

开启增强型分片指标

**注意:**如果在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请参阅排查 AWS CLI 错误。此外,请确保您使用的是最新版本的 AWS CLI

在 CloudWatch 中启用分片指标,以监控特定任务,并对数据生产者和消费者进行故障排除。例如,开启分片指标以帮助您识别工作负载分布不均等问题。要开启增强监控,请完成以下步骤:

**注意:**您还可以使用 EnableEnhancedMonitoring API 请求或 enable-enhanced-monitoring AWS CLI 命令。

  1. 打开 Kinesis 控制台
  2. 选择特定的区域
  3. 在导航窗格中,选择数据流
  4. 数据流名称下,选择您的 Kinesis 数据流。
  5. 选择配置
  6. 增强(分区级)指标下,选择编辑
  7. 从下拉菜单中,选择用于增强监控的指标。
  8. 选择保存更改

通过 API 调用进行其他故障排除

使用以下 API 调用从 Kinesis 数据流读取或写入数据:

当您使用这些 API 调用时,您可以监控 AWS CloudTrail 日志中的任何限制。有关 Kinesis 数据流 API 调用和 CloudTrail 的更多信息,请参阅 Logging Amazon Kinesis Data Streams API calls with AWS CloudTrail

相关信息

Amazon CloudWatch 定价

Monitoring the Amazon Kinesis Data Streams service with Amazon CloudWatch

AWS 官方
AWS 官方已更新 5 个月前