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
- 下载
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的控制台看到打印日志;
5.在kibana查看是否已经生成索引
6.具体解释多行合并
multiline.pattern: '^\-'
multiline.negate: true
multiline.match: after
当不配置以上代码,fileBeat会一行一行的将日志记录输送到logstash中,那么在kibana体现出来的效果,原本应该在一行的日志,会被拆分成多行;
所以需要增加多行合并配置;
参考配置含义:
multiline.pattern
指定要匹配的正则表达式模式。 请注意,Filebeat支持的正则表达式模式与Logstash支持的模式有些不同。
multiline.negate
定义是否为否定模式,默认为false,意思就是与正则表达式匹配;
multiline.match
指定Filebeat如何将匹配的行组合到事件中。 设置在之后 (after) 或之前 (before)。 这些设置的行为取决于你为否定指定的内容:
5.具体示例:
参考我的日志输出格式,代码中做了统一日志处理,形成日志统一按照下面这种格式分割
--------------------------------------------------------------------------------
xxxxxxx
--------------------------------------------------------------------------------
xxxxxxx
--------------------------------------------------------------------------------
multiline.pattern: '^\-'
multiline.negate: true
multiline.match: after
解释:将所有不以 - 开头的行,追加到以 - 开头的行后面,形成一行数据,传送给Logstash;
是不是格式就跟我输出的日志一模一样了,看上去效果非常好;
但是其实我的message很长的,它没有完全展示出来;
需要修改 truncate:maxHeight = 0
修改此配置后,日志完美展示出来