CloudWatch:统计日志文件中特定字符串的出现次数



我有包含特定弹簧模式的日志文件。这些字符串模式在每个日志事件中频繁出现。例如:

<abc>108</abc>xyz<abc>22222</abc>

我想在CloudWatch中统计特定时间段内<abc>的出现次数。

我这样做是为了统计每分钟发生的次数:

fields @timestamp
| parse @message "<abc>" as abc
| filter strcontains(@message, "<abc>")
| stats count(abc) by bin(1m)

但对于至少包含一次<abc>的日志事件,它只计算一个。在上面的例子中,我希望有两个。

我怎样才能做到这一点?

我看不到任何一个函数能满足您的需求,但您可以这样做:

fields @timestamp, @message
| filter strcontains(@message, "<abc>")
| fields (strlen(@message)-strlen(replace(@message, "<abc>", ""))) / strlen("<abc>")

最新更新