如何知道每个 Kinesis 分片的 activity?
How to know the activity of each Kinesis shard?
我将 AWS Kinesis 流与多个分片一起使用。我在将记录放入流中时设置的分区键不是常量,以便将记录映射到每个分片。
要确定每个碎片都被使用的事实,我如何监控碎片的activity?
我看到在增强级别的AWS Cloudwatch中,Kinesis的指标可以按分片进行拆分。那不是我的情况,因为我只是偶尔需要,所以我不想为此付费。
- 您可以在需要时启用分片级别指标,然后在不需要时禁用。尽管您指定不需要此解决方案,但这是迄今为止最好的方法。
- 在消费者端,您可以使用自定义日志记录。对于 IRecordProcessor 实现中处理的每个记录批次,您可以计算每个分片的传入数据计数。 Sample code here。您甚至可以添加第 3 方指标平台(例如 Prometheus)。
- 您可以自定义生产者,并记录
PutRecordResponse
s。它 returns "your data is placed under XXX shard" 用于每个 Put 调用。 See AWS Documentation for details.
通常,如果您对分片之间的数据分布不均匀有疑问,最好的方法是在 Kinesis Producer 应用程序中发送数据时使用随机分区键。
我将 AWS Kinesis 流与多个分片一起使用。我在将记录放入流中时设置的分区键不是常量,以便将记录映射到每个分片。
要确定每个碎片都被使用的事实,我如何监控碎片的activity?
我看到在增强级别的AWS Cloudwatch中,Kinesis的指标可以按分片进行拆分。那不是我的情况,因为我只是偶尔需要,所以我不想为此付费。
- 您可以在需要时启用分片级别指标,然后在不需要时禁用。尽管您指定不需要此解决方案,但这是迄今为止最好的方法。
- 在消费者端,您可以使用自定义日志记录。对于 IRecordProcessor 实现中处理的每个记录批次,您可以计算每个分片的传入数据计数。 Sample code here。您甚至可以添加第 3 方指标平台(例如 Prometheus)。
- 您可以自定义生产者,并记录
PutRecordResponse
s。它 returns "your data is placed under XXX shard" 用于每个 Put 调用。 See AWS Documentation for details.
通常,如果您对分片之间的数据分布不均匀有疑问,最好的方法是在 Kinesis Producer 应用程序中发送数据时使用随机分区键。