乐趣区

关于前端: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 多行的报错日志了,能够显著看到,行变的高了,多行日志也就阐明合并在了一起

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

退出移动版