filebeat和logstach都是日志采集工具,不过logstach可以进行数据清洗。在应用服务器上直接安装Logstash比较消耗性能,所以需要安装filebeat来获取数据,再转发到logstash进行数据清洗。

filebeat安装

filebeat很小巧,只有8M,通过配置yum源就能安装。不过我是在官网下载的安装包。
官网下载地址:https://www.elastic.co/downloads/beats/filebeat
下载完以后在应用服务器上解压,并编辑配置文件filebeat.yml。

filebeat.prospectors:

- input_type: log
  paths:
    - /usr/local/server/nginx/logs/access.log
  fields:
    logIndex: nginx
    docType: nginx-access
output.logstash:
 hosts: ["127.0.0.1:5044"]

修改完成后启动filebeat
nohup ./filebeat -e -c filebeat.yml >/dev/null 2>&1 &

filebeat配置说明

paths:日志检测路径。可以是指定到文件或文件夹,也可以通过*号匹配
- /var/log/*.log
output.logstash:把数据发送给logstash。

output.logstash:
hosts: ["127.0.0.1:5044"]

json.keys_under_root: true 若收取日志格式为json的log,请开启此配置
encoding:指定被监控的文件的编码类型,使用plain和utf-8都是可以处理中文日志的。

input_type:指定文件的输入类型log(默认)或者stdin。

exclude_lines:在输入中排除符合正则表达式列表的那些行。

include_lines:包含输入中符合正则表达式列表的那些行(默认包含所有行),include_lines执行完毕之后会执行exclude_lines。

exclude_files:忽略掉符合正则表达式列表的文件(默认为每一个符合paths定义的文件都创建一个harvester)。

fields:向输出的每一条日志添加额外的信息,比如“level:debug”,方便后续对日志进行分组统计。默认情况下,会在输出信息的fields子目录下以指定的新增fields建立子目录,例如fields.level。

fields_under_root:如果该选项设置为true,则新增fields成为顶级目录,而不是将其放在fields目录下。自定义的field会覆盖filebeat默认的field。

ignore_older:可以指定Filebeat忽略指定时间段以外修改的日志内容,比如2h(两个小时)或者5m(5分钟)。

close_older:如果一个文件在某个时间段内没有发生过更新,则关闭监控的文件handle。默认1h,change只会在下一次scan才会被发现

force_close_files:Filebeat会在没有到达close_older之前一直保持文件的handle,如果在这个时间窗内删除文件会有问题,所以可以把force_close_files设置为true,只要filebeat检测到文件名字发生变化,就会关掉这个handle。

scan_frequency:Filebeat以多快的频率去prospector指定的目录下面检测文件更新(比如是否有新增文件),如果设置为0s,则Filebeat会尽可能快地感知更新(占用的CPU会变高)。默认是10s。

document_type:设定Elasticsearch输出时的document的type字段,也可以用来给日志进行分类。

harvester_buffer_size:每个harvester监控文件时,使用的buffer的大小。

max_bytes:日志文件中增加一行算一个日志事件,max_bytes限制在一次日志事件中最多上传的字节数,多出的字节会被丢弃。

multiline:适用于日志中每一条日志占据多行的情况,比如各种语言的报错信息调用栈。

tail_files:如果设置为true,Filebeat从文件尾开始监控文件新增内容,把新增的每一行文件作为一个事件依次发送,而不是从文件开始处重新发送所有内容。

backoff:Filebeat检测到某个文件到了EOF之后,每次等待多久再去检测文件是否有更新,默认为1s。

max_backoff:Filebeat检测到某个文件到了EOF之后,等待检测文件更新的最大时间,默认是10秒。

backoff_factor:定义到达max_backoff的速度,默认因子是2,到达max_backoff后,变成每次等待max_backoff那么长的时间才backoff一次,直到文件有更新才会重置为backoff。

如果设置成1,意味着去使能了退避算法,每隔backoff那么长的时间退避一次。

spool_size:spooler的大小,spooler中的事件数量超过这个阈值的时候会清空发送出去(不论是否到达超时时间)。

idle_timeout:spooler的超时时间,如果到了超时时间,spooler也会清空发送出去(不论是否到达容量的阈值)。

registry_file:记录filebeat处理日志文件的位置的文件

config_dir:如果要在本配置文件中引入其他位置的配置文件,可以写在这里(需要写完整路径),但是只处理prospector的部分。

publish_async:是否采用异步发送模式(实验功能)。