ELK-FileBeat简介

Filebeat是本地文件的日志数据采集器,可监控日志目录或特定日志文件(tail file),
并将它们转发给Elasticsearch或Logstatsh进行索引、kafka等。
带有内部模块(auditd,Apache,Nginx,System和MySQL),
可通过一个指定命令来简化通用日志格式的收集,解析和可视化。

参考:https://www.jianshu.com/p/0a5acf831409
           https://blog.51cto.com/12182612/2384231
  1. 下载
https://www.newbe.pro/Mirrors/Mirrors-Filebeat/
感谢这个大佬,这里下载非常块

或者

链接:https://pan.baidu.com/s/1g6wdMH7d_wtkHEgjDhHqTg 
提取码:a489

2.解压

tar -zxvf filebeat-6.7.0-linux-x86_64.tar.gz

3.修改配置文件 filebeat.yml 仅贴出简单使用部分,具体参数大家可以参考官方文档

filebeat.prospectors:
- type: log                              # 指定文件的输入类型log(默认)或者stdin
  paths: ["/data/log/*.out"]     # 日志文件所在路径
  enable: true	             		#开启监视,不开不采集
  multiline.pattern: '^\-'         #多行合并,正则表达式匹配规则
  multiline.negate: true        #定义是否为否定模式,也就是和上面定义的模式相反。 默认为false。
  multiline.match: after        #指定Filebeat如何将匹配的行组合到事件中。 设置在之后 (after) 或之前 (before)。 这些设置的行为取决于你为否定指定的内容:
output.logstash.hosts: ["xxx.xxx.xxx.xx:5044"]      #logstash的路径

4.启动

./filebeat -e -c filebeat.yml

filebeat启动成功后,会读取指定文件夹的日志,然后发往logstash;

logstash如果也是运行正常的话,会在Logstash的控制台看到打印日志;

filebeat采集日志直接到加密ES_java


filebeat采集日志直接到加密ES_filebeat采集日志直接到加密ES_02


5.在kibana查看是否已经生成索引

filebeat采集日志直接到加密ES_正则表达式_03


filebeat采集日志直接到加密ES_正则表达式_04


6.具体解释多行合并

multiline.pattern:  '^\-' 
multiline.negate: true
multiline.match: after
当不配置以上代码,fileBeat会一行一行的将日志记录输送到logstash中,那么在kibana体现出来的效果,原本应该在一行的日志,会被拆分成多行;

filebeat采集日志直接到加密ES_filebeat采集日志直接到加密ES_05

所以需要增加多行合并配置;

参考配置含义:
multiline.pattern

指定要匹配的正则表达式模式。 请注意,Filebeat支持的正则表达式模式与Logstash支持的模式有些不同。

multiline.negate

定义是否为否定模式,默认为false,意思就是与正则表达式匹配;

multiline.match

指定Filebeat如何将匹配的行组合到事件中。 设置在之后 (after) 或之前 (before)。 这些设置的行为取决于你为否定指定的内容:

filebeat采集日志直接到加密ES_正则表达式_06

5.具体示例:

filebeat采集日志直接到加密ES_运维_07

参考我的日志输出格式,代码中做了统一日志处理,形成日志统一按照下面这种格式分割
--------------------------------------------------------------------------------
xxxxxxx
--------------------------------------------------------------------------------
xxxxxxx
--------------------------------------------------------------------------------
multiline.pattern:  '^\-' 
multiline.negate: true
multiline.match: after

解释:将所有不以 - 开头的行,追加到以 - 开头的行后面,形成一行数据,传送给Logstash;

filebeat采集日志直接到加密ES_日志文件_08

是不是格式就跟我输出的日志一模一样了,看上去效果非常好;
但是其实我的message很长的,它没有完全展示出来;
需要修改 truncate:maxHeight = 0

filebeat采集日志直接到加密ES_java_09


filebeat采集日志直接到加密ES_正则表达式_10

修改此配置后,日志完美展示出来

filebeat采集日志直接到加密ES_filebeat采集日志直接到加密ES_11