一、Filebeat介绍
Filebeat是一种轻量型,开源的日志采集工具,安装于客户端中来收集指定的日志目录,将收集的日志发送到logstash、es、redis、kafka中,来代替logstash的数据采集方案,logstash在运行过程中相当耗费服务器资源,就算没有在收集日志一样会对CPU,内存造成一个相当高的损耗。
二、Filebeat工作流程
Prospector(6.3版本以后替换成了inputs)是filebeat的检测进程,用来检测指定的文件。
Harvester是filebeat的读取进程,用来读取日志文件的内容。
Spooler是filebeat的数据处理程序,它会进行一个日志数据的处理,然后集合这些最新的数据,最后发送至logstash、es、redis、kafka中。
三、Filebeat安装
- 从官网下载相应安装包
wget https://www.elastic.co/downloads/beats/filebea - 将安装包解压至相应目录(下面是6.3.2版本)
tar xf filebeat-6.3.2-linux-x86_64.tar.gz -C /usr/local - 重写配置文件(详细见四、Filebeat配置文件详解)
- 测试filebeat启动
cd /usr/local/filebeat6.3.2
./filebeat -e -c filebeat.yml -d "Publish" - 转入后台启动
./filebeat -e -c filebeat.yml -d "Publish" > /dev/null 2>&1 &
四、Filebeat配置文件详解
Inputs采集日志(Prospector在6.3版本中替换成了inputs,这里我们用6.3版本配置文件)
- 编辑filebeat的yml文件:
filebeat.inputs: - type: log #指定收集类型 paths: #指定路径如下 - /var/log/*.log include_files: [‘[ERROR]’] #使用正则匹配需要的数据 fields: type: #添加一个字段,用于区分不同的日志,方便logstash进行匹配 fields_under_root: true #添加此字段会使上面的字段与其他字段同级,使logstash方便拿到对应的数据。 multiline: #多行匹配 pattern: ’^[ERROR]’ #使用正则进行匹配 negate: true #不是以上面正则匹配的默认合并上一行 match: after #合并到上一行的末尾 #Output输出日志(输出至logstash中) output.logstash: hosts: [“192.168.1.131:5044”]
五、以下使用redis做演示修改配置文件
filebeat.yml配置文件,整理后格式:
filebeat.inputs: - type: log paths: - /logs/*/error/error.log tags: ["test"] #项目名 #exclude_lines: ['^DBG'] #include_lines: ['^[ERROR]'] fields: host_name: 192.168.1.130 document_type: "test" #平台名 fields_under_root: true multiline: pattern: '^[ERROR]' negate: true match: after output.redis: hosts: ["192.168.1.131:6379"] password: "密码" key: "filebeat" db: 0 datatype: list