Rootop 服务器运维与web架构

filebeat配置多行日志合并为一条

java的错误日志通常有多行表示为一次完成的错误日志。收集的时候需要将其合并为一条。否则每行都会做为一条日志发送。
(logstash也是如此)

如:

13:20:05.491 [http-nio-8080-exec-10] ERROR com.xxx.modules.mall.controller.ApiMallGoodsController - 【商品详情】报错:
java.lang.NullPointerException: null
	at com.xxx.modules.mall.goods.service.MallGoodsService.apiMallGoodsInfo(MallGoodsService.java:279)
	...
	略

官方关于多行匹配参数:https://www.elastic.co/guide/en/beats/filebeat/current/multiline-examples.html

# 配置参数

[root@node3 filebeat]# cat filebeat-java.yml 
filebeat.inputs:
- type: log
  paths:
   - /home/dockermount/api/api*/logs/*-error.log
  fields:
   java: true
  fields_under_root: true
  multiline.pattern: '^[0-9]{2}:[0-9]{2}:[0-9]{2}.* \[http-nio'
  multiline.negate: true
  multiline.match: after

output.redis:
  hosts: ["172.19.34.91:50000"]
  password: "******"
  key: "filebeat-java"
  db: 8
  timeout: 10
multiline.pattern 是匹配一条完整日志开头的正则,如 13:20:05.491 [http-nio 开头
multiline.negate 可配置为true或false,如果为true,则代表 不匹配的行
multiline.match  可配置为before或after,对不匹配的行做什么动作。如果为after,则代表不匹配的行附加到之前匹配行的下面

原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/4740.html

作者:Venus

服务器运维与性能优化

评论已关闭。