CloudWatch Logs 过滤不区分大小写的多个术语或已连接

CloudWatch Logs Filter case insensitive multiple terms or connected

我只是想创建一个基于 CloudWatch Logs 过滤器的警报,它会在多个条件(或连接、非和)上触发并且不区分大小写

使用 "error warning" 作为模式无效

我正在寻找对以下所有错误和警告做出反应的过滤器模式:

ERROR: first sample
Error: second sample
error: third sample
{ ERROR: "fourth sample"}
{type: "error"}
WARNING: SOMETHING BAD!
{ WARNING: "fifth sample"}

根据有关 Filter and Pattern Syntax 的 AWS 文档,您不能使用 "error warning" 来捕获 "OR" 关系,因为:

  • You can specify multiple terms in a metric filter pattern, but all terms must appear in a log event for there to be a match.

或者换句话说,CloudWatch Log 指标过滤器需要一个 "AND" 关系。

同样:

  • Metric filters are case sensitive.

因此您将无法使用单个过滤器实现此目的。对于希望写入 Cloudwatch Logs 的 "error" 和 "warning" 的每个区分大小写的排列,您需要一个过滤器。

为了对所有这些过滤器设置单个警报,只需将每个过滤器配置为使用相同的 CloudWatch 指标即可。这是来自 AWS 控制台的示例,其中我的每个指标过滤器都针对我的 LogMetric/test 指标:

然后我可以简单地创建一个基于 LogMetric/test 指标的 CloudWatch 警报,以对这些不同指标过滤器的总和发出警报。

如果您需要过滤某些字符串,您可以 OR 它们如下:

?"String1" ?"String2" 

等等。试试吧。

让我们提出两种解决问题的方法...

I - 使用过滤器(日志组)

  1. 转到 AWS CloudWatch;
  2. 单击“日志组”(“日志”);
  3. 搜索所需的日志组;
  4. Select 所需的日志组;
  5. 点击“搜索日志组”;
  6. 在相关字段中应用所需的过滤器和其他所需的搜索参数。

过滤器示例

?"ERROR" ?"Error" ?"error" ?"EXCEPT" ?"Except" ?"except"

注意: 允许您搜索多个案例 - “不区分大小写”的解决方法 - 以及所需的字符串部分。术语之间的连接符将是“或”。

II - 使用查询 (Logs Insights)

  1. 转到 AWS CloudWatch;
  2. 点击“Logs Insights”(“日志”);
  3. 搜索所需的日志组;
  4. Select 所需的日志组;
  5. 插入您的查询;
  6. 应用其他所需的搜索参数;
  7. 单击“运行 查询”。

查询示例

fields @timestamp, @message
| filter @message like /(?i)(error|except)/
| sort @timestamp desc
| limit 20

注意: 允许您不区分大小写并按所需的字符串部分进行搜索。术语之间的连接符将是“或”。

谢谢!

[参考: