如何判断阅读器已处理的Kinesis流中的数据百分比?我知道每个读者都有一个每个分片检查点序列号,我也可以从describe-stream获取每个分片的StartingSequenceNumber,但是,我不知道读者目前在我的数据中有多远(我不知道#39;不知道分片的最新序列号。
我正在考虑为每个分片获取最新的迭代器并获取最后一个记录的序列号,但是如果自从我获得最新记录后没有新数据,这似乎无法工作迭代器。
在那里做任何想法或工具?
谢谢!
答案 0 :(得分:1)
我建议您在应用程序中实施自定义指标或指标以跟踪此情况。
例如,您可以在Kinesis消息中附加消息发送时间,并在处理消息时,将时差记录为AWS CloudWatch自定义指标。这将表明您的消费者与流的前端有多接近。
您还可以记录在推送应用程序中推送的消息数和在Kinesis消费者处收到的消息。如果您在CloudWatch的图表中对这些进行比较,您可以看到曲线大致相互跟随,表明消费者在跟上工作量方面做得很好。
您还可以尝试监控您的Kinesis消费者,查看它等待记录的频率(即,Kinesis没有返回结果,表明它位于流的前面并且所有记录都已处理完毕)
另请注意,没有办法跟踪"%"在流中处理,因为Kinesis消息在24小时后到期(因此消息的总数不断滚动)。还没有直接(API)函数来计算流中的消息数量(除非您已按上述方式记录此消息)。
答案 1 :(得分:1)
如果您使用KCL,您可以通过将来自Kinesis的cloudwatch内置指标的IncomingRecords与由KCL发布的自定义指标RecordsProcessed进行比较来实现。
然后选择时间范围和间隔为1天。
然后,您将获得以下类型的图表:
正如您所看到的,添加的记录多于处理过的记录。通过查看每个点的值,您将确切知道您的处理器是否落后。