AWS Kinesis Firehose:PutRecordBatch指标差异是否反映Put失败?
PutRecordBatch.Requests与PutRecordBatch.Records指标差值能否体现Firehose Put操作失败?
核心结论
这两个指标的差值确实能反映PutRecordBatch操作里的部分记录级失败,但不是所有失败场景都会产生偏差,具体得看失败类型:
先搞懂两个指标的定义
PutRecordBatch.Requests:统计的是你发送给Firehose的批量请求次数,每调用一次PutRecordBatch就记1次,不管这个请求里有多少条记录,也不管请求最终成功与否。PutRecordBatch.Records:统计的是Firehose成功接收并处理的记录总数,是所有成功批量请求里,每条成功记录的累加值。
什么时候会出现差值?
当你发的批量请求本身成功返回,但里面部分记录处理失败(比如单条记录格式不对、大小超过限制),这时候:
PutRecordBatch.Requests会+1PutRecordBatch.Records只会加该请求里成功的记录数,不是请求的总记录数
这种情况下,两者的累计差值就是失败的记录总数。
什么时候不会出现差值?
有两种情况哪怕操作失败,也不会让这两个指标产生偏差:
- 整个批量请求直接失败:比如请求签名错了、没权限、Firehose流不存在,这时候
PutRecordBatch.Requests会+1,但PutRecordBatch.Records不会加任何数。不过这种情况你调用API时就会收到明确的错误返回,不会只靠指标差值发现。 - 记录被Firehose后续丢弃:比如记录到了Firehose后,因为转换失败、目标存储不可用被丢掉,这部分记录已经被算进
PutRecordBatch.Records里了,所以差值体现不出来,得看PutRecordBatch.RecordsFailed或者目标存储的失败指标。
为什么你没观察到偏差?
大概率是你的业务场景里,批量请求要么全成功要么全失败,没出现“请求成功但部分记录失败”的情况;或者失败的记录太少,在CloudWatch的时间粒度下被抹平了,没显示出明显偏差。
内容的提问来源于stack exchange,提问作者wsa225
相关产品推荐
相关产品推荐

