【发布时间】:2015-03-17 15:11:08
【问题描述】:
我试图通过 grok 过滤器解析一些非常不同的异常,所以我在 rubular.com 的帮助下编写了一个 grok 过滤器来解析每种类型的异常。过滤器是:
grok {
match => { message => "^(?<year>\d{4})-(?<month>\d{1,2})-(?<day>\d{1,2})\W(?<hours>\d{2}):(?<minutes>\d{2}):(?<seconds>\d{2})(,)[0-9]*(.*)(?<log_level>(ERROR|INFO)) (?<exception>(.*\n^Axis.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*)|(com.*trying.*\ncom.*is:.*\n.*java.*)|(com.*\n^org.*\n###.*non valido\n\n.*^###.*\n^###.*\n^###.*)|(.*trying.*\n^com.*ServiceException.*\n### Error querying.*\n\n.*\n^###.*\n.*)|(.*trying.*\n^com.*ServiceException.*\n^###.*\n^###.*)|(.*trying.*\n^com.*)|(.*\n^org.*\n###.*Exception.*\n### Cause:.*)|(com.*\n^org.*\n###.*)|(.*\n^java.*CORBA.*\n.*)|(.*\n^java*.*)|(com.*\n^com.*)|(.*null\n^Axis.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*)|(.*\n))"}
}
您可以在异常字段中看到很多 OR 条件和很多 \n 来获取回车。问题是,据我了解,Logstash 一次只能读取一行并且不能匹配多行(因此,即使在 rubular 上,此模式运行良好,但在 logstash 中却没有)。 如何正确过滤异常?
【问题讨论】: