AWS CloudWatch Insights查询问题:如何统计处理时长>5秒的消息数?
解决CloudWatch Insights统计耗时大于5秒消息数量的问题
你的查询中count(c_time>5.0)的写法存在问题:count()函数会统计所有非空的结果,不管表达式返回true还是false,所以导致filtered_count和total_count数值一致。以下是两种正确的实现方式:
方法一:使用sum()函数统计符合条件的数量
fields @timestamp, @message, @logStream, @log | filter @message like /Message studentInfo processed in/ | parse 'Message studentInfo processed in * seconds.' as c_time | stats count(c_time) as total_count, sum(c_time>5.0) as filtered_count
原理:布尔值在sum()计算中,true会被视为1,false视为0,求和后自然得到满足c_time>5.0的记录总数。
方法二:使用filter子句精准统计
fields @timestamp, @message, @logStream, @log | filter @message like /Message studentInfo processed in/ | parse 'Message studentInfo processed in * seconds.' as c_time | stats count(c_time) as total_count, count(*) as filtered_count filter (c_time>5.0)
原理:在stats语句中为filtered_count单独添加filter条件,仅统计满足c_time>5.0的记录,逻辑更直观。
内容的提问来源于stack exchange,提问作者user3625533
相关产品推荐
相关产品推荐

