filebeat收集java程序多行报错

filebeat收集java程序多行报错

1.什么是java程序多行报错

一个java程序报错往往是一个事件,这个报错并不是一行就能展示完的,几乎需要几十行才能展示完这个报错内容,对于filebeat来说,filebeat每次都是把一行看成了一个日志,那么对于java多行报错就不是很友好了,即使收集过来也是将一个事件的报错日志分成很多行在kibana上展示,这样对于开发人员来看日志就很头疼了

如果对于多行报错的日志还用传统的收集方法,就像下图一样,完全不知道报错是什么了,不管谁看这个日志都需要去对比

多行报错日志:一般的报错日志都是1行就可以显示完整,但是有一些像java的项目一行就显示不完整报错内容,往往是多行一起分析才能看出来报错的内容

只要是需要将多行报错连在一起的日志都属于多行报错型日志

多行报错型日志收集方案:一个报错肯定是以xxx开头,到下一个xxx的时候结束,我们可以通过匹配规则,匹配到xxx,只要下一行日志内容不是xxx,就都连在一起,直到遇到下一个xxx为止

tomcat java报错日志举例

这就是一个典型的多行报错的日志

可以看到它就是以时间开始的,现在是20xx年嘛,所以可以匹配只要是以20开头的行,只要下一行不是20开头,就集合在一起,直到遇到下一个20就结束

2.配置filebeat收集多行tomcat程序java多行报错

部分配置项进行说明:

multiline.pattern: ‘^20’ //多行匹配规则,以xxx开头的,使用正则表达式 multiline.negate: true //值为true或flase,使用flase表示将匹配到的行合并到上一行,使用true表示将不匹配的行合并到上一行(用true的一般比较多,因为多行报错,肯定不是匹配的行合并在一起,那样就没有详细信息了) multiline.match: after //值为after和befor,使用after表示合并到匹配行的上一行末尾,使用before表示合并到匹配行的行首(一般就是after,合并到匹配行的上一行末尾就可以了)

2.1.配置filebeat收集多行报错

1.修改配置文件
[root@nginx02 /etc/filebeat]# vim filebeat.yml
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /data/tomcat/logs/catalina.out
  multiline.pattern: '^20'					#多行匹配规则
  multiline.negate: true					#将不匹配的规则的行合并在一起
  multiline.match: after				#合并到匹配规则的上一行末尾
  tags: ["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]# systemctl restart filebeat

2.2.制造java多行报错

随便打开配置文件,改错一个地方,来回启动就有了报错日志

[root@nginx02 /data/tomcat]# vim conf/server.xm
<ssssServer port="8005" shutdown="SHUTDOWN">

[root@nginx02 /data/tomcat]# ./bin/startup.sh 

2.3.查看es是否创建索引并产生数据

已经有了153条数据

3.在kibana上关联es索引并统计日志

3.1.关联索引

点击Managerment—索引模式—创建索引

创建成功

3.2.查询java多行报错日志

点击Discovery—选择java索引—搜索ERROR就可以看到java多行的报错日志了,可以明显看到,行变的高了,多行日志也就说明合并在了一起

点击日志的小三角,即可看到完整的报错内容

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340