Filebeat收集java程序多行报错1、什么是java程序多行报错?一个java程序报错往往是一个事件。此错误报告无法在一行中显示。显示错误内容差不多需要几十行。以filebeat为例,filebeat每次都把一行当成一条log,所以对java多行报错不是很友好。就算采集了,它也会把一个事件的错误日志分成很多行显示在kibana上,这对开发者来说非常方便。看着日志很头疼。多行错误日志,如果你还是用传统的收集方式,如下图,你不知道错误是什么。不管是谁看这个日志,都需要对比一下多行错误日志:一般的错误日志可以一行显示完整,但是有些项目比如java,一行显示不完整的错误内容,往往需要分析多行连在一起看错误内容只要多行报错需要连在一起。所有日志都属于多行报错类型日志。多行报错式日志采集方案:一条报错必须以xxx开头,下一个xxx结束。我们可以通过匹配规则来匹配xxx,只要log下一行的内容不是xxx,它们就都连在一起,直到遇到下一个xxx。tomcatjava错误日志示例这是一个典型的多行错误日志。你可以看到它是从时间开始的。现在是20xx,所以只要是20开头的行都可以匹配到,只要下一行不是20开头的,就一起分组,直到遇到下一个202.配置filebeat,收集multi-linetomcat程序java多行报错部分配置项:multiline.pattern:'^20'//多行匹配规则,以xxx开头,使用正则表达式multiline.negate:true//值为true或flase,使用flase表示将匹配到的行合并到上一行,使用true表示将不匹配的行合并到上一行(更常用true,因为多行报错,一定不是合并在一起的匹配行,所以不会有详细信息)multiline.match:after//取值为after和before,使用after表示合并到匹配行的上一行的末尾,并且使用before表示合并到匹配行的开头(一般之后,合并到匹配行的上一行的末尾即可)2.1。配置filebeat采集多行报错1.修改配置文件[root@nginx02/etc/filebeat]#vimfilebeat.ymlfilebeat.inputs:-type:logenabled:truepaths:-/data/tomcat/logs/catalina.outmultiline.pattern:'^20'#多行匹配规则multiline.negate:true#Mergelinesofunmatchedrulestogethermultiline.match:after#Mergetothepreviouslineofthematchingruletags:["java"]output.elasticsearch:hosts:["192.168.81.210:9200"]indices:-index:"tomcat-java-%{+yyyy.MM.dd}"when.contains:tags:"java"2.重启filebeat[root@nginx02/etc/filebeat]#systemctlrestartfilebeat2.2.createjavamulti-lineerror随便打开配置文件,纠正一个错误,来回启动会有错误日志[root@nginx02/data/tomcat]#vimconf/server.xm
