elk的logstash怎么过滤出报错的模块

zuodev 发布于 2016/08/26 23:37
阅读 668
收藏 0

日志示例:

2016-08-25 18:03:25 
[INFO]-[com.asin.module.industry.init()]: 初始化==null

2016-08-25 18:03:25 
[ERROR]-[com.asin.module.product.update()]: 更新异常!!! 
java.lang.NullPointerException 
    at com.asin.module.product(Aproduct.java:37) 
    at com.asin.module.product.productController.list(productController.java:64) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at com.jfinal.aop.Invocation.invoke(Invocation.java:73) 
    at com.asin.psa.interceptor.PsaLoginInterceptor.intercept(PsaLoginInterceptor.java:29) 
    at com.jfinal.aop.Invocation.invoke(Invocation.java:67) 
    at com.asin.sa.interceptor.SaLoginInterceptor.intercept(SaLoginInterceptor.java:32) 
    at com.jfinal.aop.Invocation.invoke(Invocation.java:67) 
    at com.asin.

需求:

1、过滤出ERROR的日志
2、过滤出ERROR、并匹配出模块

加载中
1
Feng_Yu
Feng_Yu

回复 @zuodev : 按照每个时间戳后面有个换行给你匹配了:

filter {
  grok {
    match => { "message" =>
      "%{TIMESTAMP_ISO8601:date} \n\[(?<loglevel>\w+)\]-\[(?<module>.+?)\]: %{GREEDYDATA:content}"
    }
    remove_field => "message"
  }
}



zuodev
zuodev
测了下下,基本可以满足需求了!!!
1
Feng_Yu
Feng_Yu
正则解析一把,把loglevel字段抓出来不就完了?这些在官方的grok filter都有相关文档的,自行阅读文档解决
zuodev
zuodev
回复 @Feng_Yu : 谢谢您的这番指点!
Feng_Yu
Feng_Yu
回复 @zuodev : 通常你可以认为前面几个都是日志的元数据,比如时间戳,日至级别,class等等。这些通常是不换行的,因为方便使用grep/sed等命令行工具进行日志过滤。换行的通常是最后的content部分。一旦换行就难以用grep/sed/awk这些工具处理。所以通常日志设置都是元数据在一行。看下面我的回复,抓出来了
zuodev
zuodev
我们公司比较创新,时间戳后面换行了。第一个问题解决了,第二个问题没解决
Feng_Yu
Feng_Yu
回复 @zuodev : 时间戳和日志正文还有个换行?我看你复制出来的怎么还有个换行?一般日志格式都不会这么设计的
zuodev
zuodev
回复 @Feng_Yu : 用 \s 或者 \n 表示换行,都不能被匹配
下一页
返回顶部
顶部