包含字符串的 AWS Log Insights 查询
AWS Log Insights query with string contains
如何在 AWS 日志见解中查询包含字符串
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
我认为您需要将它们 select 作为字段,然后过滤它们的值。例如:
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/
| ...
(还没有测试过)
这应该可以正常工作
fields @timestamp, @message
| filter @message like /user not found/
| sort @timestamp desc
| limit 20
我正在寻找 contains 和 in 过滤器。允许的过滤选项是:
'in', 'and', 'or', 'not', 'like', '=~', '~=', '|', '|>', '^', '*', '/', '%', '+', '-', '<', '>', '<=', '>=', '=', '!='
所以使用 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!
您可以解析消息中的子字符串并将它们分配给一个字段,然后可以使用 equal 运算符 ("=") 对其进行过滤。在下面的示例中,您可以看到消息中没有“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
我最近 运行 遇到了同样的情况。 strcontains 将输入字符串作为第一个参数,将搜索值作为第二个参数。所以在你的情况下,以下应该可以正常工作。
fields @timestamp, @message
| filter strcontains(@message, "User not found")
| sort @timestamp desc
| limit 20
如何在 AWS 日志见解中查询包含字符串
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
我认为您需要将它们 select 作为字段,然后过滤它们的值。例如:
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/
| ...
(还没有测试过)
这应该可以正常工作
fields @timestamp, @message
| filter @message like /user not found/
| sort @timestamp desc
| limit 20
我正在寻找 contains 和 in 过滤器。允许的过滤选项是:
'in', 'and', 'or', 'not', 'like', '=~', '~=', '|', '|>', '^', '*', '/', '%', '+', '-', '<', '>', '<=', '>=', '=', '!='
所以使用 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!
您可以解析消息中的子字符串并将它们分配给一个字段,然后可以使用 equal 运算符 ("=") 对其进行过滤。在下面的示例中,您可以看到消息中没有“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
我最近 运行 遇到了同样的情况。 strcontains 将输入字符串作为第一个参数,将搜索值作为第二个参数。所以在你的情况下,以下应该可以正常工作。
fields @timestamp, @message
| filter strcontains(@message, "User not found")
| sort @timestamp desc
| limit 20