filebeat主要用于收集和转发日志。filebeat监视指定的日志文件和位置,收集日志事件,并将它们转发到es或logstash进行索引。
安装
官网:https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-installation.html
# curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.5.2-x86_64.rpm# sudo rpm -vi filebeat-6.5.2-x86_64.rpm
说明
Filebeat的工作原理:启动Filebeat时,它会启动一个或多个inputs,这些inputs将查找指定的log的路径。对于查找到的每个日志,Filebeat将启动一个harvester。每个harvester读取单个日志的新内容,并将新日志数据发送到libbeat,libbeat聚合事件并将聚合数据发送到配置的output。
我们采用的是 filebeat -> kafka ->logstash -> es。
配置文件
filebeat 配置文件比较简单, 只需要配置一个filebeat.yml :
input 配置要读取的日志文件的路径
#============== Filebeat prospectors ===========filebeat.inputs: # 6.3以前是 filebeat.prospectors:- type: log # 默认为log 。6.0以前配置是 - input_type: log paths: - /var/log/java/test-java.log - /var/log/java/*.log - /var/log/*/*.log fields: log_topic: java_log # 附加的可选字段,以向output添加额外的信息。output里面可以使用这个变量 multiline.pattern: '^\[' #多行合并 同logstash的multiline用法 multiline.negate: true multiline.match: after - type: log # 一个配置文件里面可以同时收集多个日志。 enabled: true paths: - /var/log/nginx/*.log fields: log_topic: nginx_log
output 配置输入的位置,比如kafka,logstash等
#================================ Outputs =====================================#-------------------------Kafka output ------------------------------output.kafka: hosts: ["localhost:9092"] topic: '%{[fields.log_topic]}' partition.round_robin: reachable_only: false version: 0.10.0.0 required_acks: 1 compression: none max_message_bytes: 1000000#output.logstash:# hosts: ["localhost:5044"]
还可以有一些其他配置,比如processor处理器配置(不是必需的)
#====================Preocessors=====================processors: - drop_fields: #删除字段,不再kibana里面展示,默认情况kibana里面会自动展示这些beat字段 fields: ["beat.hostname","beat.version","beat.name","prospector.type","input.type"]#也可以在logstash里面通过remove_field 删除字段#mutate{ # remove_field => ["[beat][hostname]","[beat][version]","[input][type]","[prospector][type]"]# }
配置完filebeat.yml,启动filebeat 即可。# /etc/init.d/filebeat start