如何编写CloudWatch Filter规则筛选OpenSearch日志中耗时超100ms的慢查询
适配Elasticsearch慢查询日志的CloudWatch过滤模式
失效原因说明
你之前的规则未生效,是因为CloudWatch无法自动将took_millis[xxx]格式中的数值提取为took_millis字段的可比较值,需要先匹配字段的方括号结构。
可用过滤方案
方案1:通配符字段匹配(配置最简单)
直接使用以下规则即可精准筛选took_millis≥100的日志:
[..., millis_field="took_millis[*]", ...] && millis_field >= 100
方案2:正则匹配(准确率最高,无误差)
如果担心通配符误命中其他字段,可以使用正则匹配规则,直接匹配阈值符合要求的日志段:
{ $.message =~ /took_millis\[([1-9][0-9]{2,}|[1-9][0-9]{3,})\]/ }
这个正则会匹配took_millis[后数字≥100的所有日志,不会误命中小数值记录。
验证说明
你提供的样例日志中took_millis[19]不会被上述规则匹配,若将数值改为100及以上则会正常命中,符合慢查询筛选需求。
内容的提问来源于stack exchange,提问作者Izain
相关产品推荐
相关产品推荐

