kum*_*mar 38 amazon-cloudwatch
如何使用 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
Run Code Online (Sandbox Code Playgroud)
小智 48
这应该可以正常工作
fields @timestamp, @message
| filter @message like /user not found/
| sort @timestamp desc
| limit 20
Run Code Online (Sandbox Code Playgroud)
sup*_*ova 17
我一直在寻找contains和in过滤器。允许的过滤选项有:
'in', 'and', 'or', 'not', 'like', '=~', '~=', '|', '|>', '^', '*', '/', '%', '+', '-', '<', '>', '<=', '>=', '=', '!='
Run Code Online (Sandbox Code Playgroud)
因此,使用like 的解决方案似乎也是运营商方面的最佳版本。
fields @timestamp, @message
| filter @message like /user not found/
| sort @timestamp desc
| limit 20
Run Code Online (Sandbox Code Playgroud)
尽管如此,还有另一种可能性来解析消息本身,并对需要更准确的用例进行同等比较。对于格式化的日志行,例如:
2020-12-24T19:08:18.180+01:00 [main] INFO com.foo.bar.FooBar - My log message!
Run Code Online (Sandbox Code Playgroud)
您可以解析消息中的子字符串并将它们分配给一个字段,然后可以使用等号运算符(“=”)过滤该字段。在下面的示例中,您可以看到消息中没有“INFO”字符串会干扰过滤严重性:
fields @timestamp, @message
| parse @message "[*] * *" as @level, @severity, @info
| filter @logStream like "my/stream/within/loggroup"
| filter @severity="INFO"
| sort @timestamp desc
| limit 20
Run Code Online (Sandbox Code Playgroud)
Car*_*los 16
我认为您需要选择它们作为字段,然后过滤它们的值。例如:
fields @timestamp, @message, strcontains(@message, "user not found") AS unf
| filter unf=1
| sort @timestamp desc
| limit 20
Run Code Online (Sandbox Code Playgroud)
或者使用正则表达式
fields @timestamp, @message
| filter @message like /User\snot\sfound/
| ...
Run Code Online (Sandbox Code Playgroud)
(尚未测试它们)
在 AWS Log Insights 中检查消息是否包含子字符串/文本的不同方法
LIKE
子句(文档)fields @timestamp, @message
| filter @message like /user not found/
| sort @timestamp desc
| limit 20
Run Code Online (Sandbox Code Playgroud)
strcontains
字符串方法(文档)fields @timestamp, @message
| filter strcontains(@message, "User not found")
| sort @timestamp desc
| limit 20
Run Code Online (Sandbox Code Playgroud)
fields @timestamp, @message
| filter @message =~ /.*User not found.*/
| sort @timestamp desc
| limit 20
Run Code Online (Sandbox Code Playgroud)
我最近遇到了同样的情况。strcontains 将输入字符串作为第一个参数,将搜索值作为第二个参数。所以在你的情况下,以下应该可以正常工作。
fields @timestamp, @message
| filter strcontains(@message, "User not found")
| sort @timestamp desc
| limit 20
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
25981 次 |
最近记录: |