我如何在AWS Log见解中使用包含字符串进行查询
fields @timestamp, @message
filter @message = "user not found"
| sort @timestamp desc
| limit 20
fields @timestamp, @message
filter @message strcontains("User not found")
| sort @timestamp desc
| limit 20
答案 0 :(得分:15)
我认为您需要选择它们作为字段,然后根据其值进行过滤。例如:
fields @timestamp, @message, strcontains(@message, "user not found") AS unf
| filter unf=1
| sort @timestamp desc
| limit 20
或使用正则表达式
fields @timestamp, @message
| filter @message like /User\snot\sfound/
| ...
(尚未测试)
答案 1 :(得分:3)
这应该很好
fields @timestamp, @message
| filter @message like /user not found/
| sort @timestamp desc
| limit 20
答案 2 :(得分:2)
我最近遇到了同样的情况。 strcontains 将输入字符串作为第一个参数,将搜索值作为第二个参数。所以在你的情况下,以下应该可以正常工作。
fields @timestamp, @message
| filter strcontains(@message, "User not found")
| sort @timestamp desc
| limit 20
答案 3 :(得分:0)
我一直在寻找包含和过滤器。允许的过滤选项为:
460
因此,就运营商而言,使用like的解决方案似乎也是最佳版本。
'in', 'and', 'or', 'not', 'like', '=~', '~=', '|', '|>', '^', '*', '/', '%', '+', '-', '<', '>', '<=', '>=', '=', '!='
尽管如此,在某些需要更精确的用例中,还有另一种可能性可以解析按摩本身并进行相等的比较。对于像
这样的格式化日志行fields @timestamp, @message
| filter @message like /user not found/
| sort @timestamp desc
| limit 20
您可以解析消息中的子字符串,并将其分配给一个字段,然后可以使用等号运算符对其进行过滤:
2020-12-24T19:08:18.180+01:00 [main] INFO com.foo.bar.FooBar - My log message!