有的日志比较特殊,是多行数据为一个整体信息,这时候就需要将多行日志转换成一行日志,如下图所示,7行数据才是一条整体的日志。
如果正常去将日志在kibana中展示就会出现下面的情况,一条日志分成了7条数据,不便于我们观察和记录。
官网配置如下,将多行数据转换成一行日志记录:
根据官网上的解释,我们配一下filebeat.yml的内容
filebeat.inputs:
###################收集access日志#########################
- type: log
enabled: true
paths:
- /var/log/nginx/access.log
json.key_under_root: true
json.overwrite_keys: true
tags: ["access"]
####################收集error日志########################
- type: log
enabled: true
paths:
- /var/log/nginx/error.log
json.key_under_root: true
json.overwrite_keys: true
tags: ["error"]
####################收集es多行日志#######################
- type: log
enabled: true
paths:
- /tmp/1.log
multiline.pattern: '^\d{4}' #匹配4个数字年份开头的
multiline.negate: true #当前配置和下面的配置根据官网的解释配的
multiline.match: after
tags: ["es"]
output.elasticsearch:
hosts: ["172.123.154.13:9203"]
indices:
- index: "nginx-acess-%{+yyyy.MM.dd}"
when.contains:
tags: "access"
- index: "nginx-error-%{+yyyy.MM.dd}"
when.contains:
tags: "error"
- index: "es-java-%{+yyyy.MM.dd}"
when.contains:
tags: "es"
setup.kibana:
host: "172.123.154.13:5601"
setup.ilm.enabled: false
setup.template:
name: "nginx"
pattern: "nginx-*"
setup.template.overwrite: true
setup.template.enabled: false
在kibana中查看发现本来7行的数据现在变成了一行。