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

Tob*_*tor 3 amazon-cloudwatch aws-cloudwatch-log-insights

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

<abc>108</abc>xyz<abc>22222</abc>
Run Code Online (Sandbox Code Playgroud)

我想统计<abc>CloudWatch 中特定时间段内 的出现情况。

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

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

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

我怎样才能实现这个目标?

Unk*_*nts 5

我没有看到任何一个函数可以满足您的需要,但是您可以执行以下操作:

fields @timestamp, @message
| filter strcontains(@message, "<abc>")
| fields (strlen(@message)-strlen(replace(@message, "<abc>", ""))) / strlen("<abc>")
Run Code Online (Sandbox Code Playgroud)