在看filebeat之前我们先来看下Beats,Beats 平台是 Elastic.co 从 packetbeat 发展出来的数据收集器系统。beat 收集器可以直接写入 Elasticsearch,也可以传输给 Logstash。其中抽象出来的 libbeat,提供了统一的数据发送方法,输入配置解析,日志记录框架等功能。也就是说,所有的 beat 工具,在配置上,除了 input 以外,在output、filter、shipper、logging、run-options 上的配置规则都是完全一致的
而这里的filebeat就是beats 的一员,目前beat可以发送数据给Elasticsearch,Logstash,File,Console四个目的地址。filebeat 是基于原先 logstash-forwarder 的源码改造出来的。换句话说:filebeat 就是新版的 logstash-forwarder,也会是 ELK Stack 在 shipper 端的第一选择。
当我们安装完filebeat之后,我们可以在filebeat的安装目录下看到两个文件
filebeat.template.json (输出的文件格式,在filebeat的template中指定,当服务启动时,会被加载)
filebeat.yml(所有的配置都在该文件下进行)
整体架构理解:上边我们也说了filebeat是用来收集日志的,那么在filebeat.yml中会配置指定的监听文件,也就是上图中的一个个log,这个log的目录是在prospectors中设置,在看配置文件的时候便可以很明白的看出来,对于prospectors定位每个日志文件,Filebeat启动harvester。每个harvester读取新的内容一个日志文件,新的日志数据发送到spooler(后台处理程序),它汇集的事件和聚合数据发送到你已经配置了Filebeat输出。
环境准备要开始使用自己的Filebeat设置,安装和配置这些相关产品:
Elasticsearch存储和索引数据。
Kibana为UI。
Logstash(可选)将数据插入到Elasticsearch。
部署filebeatdeb:
curl -L -O https://download.elastic.co/beats/filebeat/filebeat_1.3.1_amd64.deb
sudo dpkg -i filebeat_1.3.1_amd64.deb
rpm:
curl -L -O https://download.elastic.co/beats/filebeat/filebeat-1.0.1-x86_64.rpm
sudo rpm -vi filebeat-1.0.1-x86_64.rpm
mac:
curl -L -O https://download.elastic.co/beats/filebeat/filebeat-1.3.1-darwin.tgz
tar xzvf filebeat-1.3.1-darwin.tgz
win:
在启动filebeat服务之前,需要先修改配置文件,接下来我们看下配置文件
配置解析上边我么也说了FileBeat的四种输出方式为输出到Elasticsearch,logstash,file和console,下面我们具体看下示例
PS:
这里说的是需要修改的配置文件,没有提的就是不需要修改
每次修改完配置文件都需要重启filebeat服务
这里不要追究时间的问题,小主是测试,主要是为了方便记录
这里主要是自定义监听文件的路劲,我设置的是/opt/elk/log/*.log
然后在filebeat.yml中的prospectors路径设置如下(该配置为以下四种方式通用)
paths:
- /opt/elk/log/*.log
filebeat.yml中output的配置将除了es之外注释掉
output elasticsearch: hosts: ["192.168.197.128:9200"] #es的ip地址和端口,如果有多个,中间用逗号分隔 worker: 1 #对应es的个数 index: "filebeat" #索引根名称 template: name: "filebeat" #模板名字和对应的json文件 path: "filebeat.template.json" max_retries: 3 #发送到特定logstash的最大尝试次数。如果达到该次数仍不成功,事件将被丢弃。默认是3,值0表示禁用重试。值小于0将无限重试知道事件已经发布。 bulk_max_size: 20000 #单个elasticsearch批量API索引请求的最大事件数。默认是50 timeout: 90 #elasticsearch请求超时事件。默认90秒 flush_interval: 5 #新事件两个批量API索引请求之间需要等待的秒数。如果bulk_max_size在该值之前到达,额外的批量索引请求生效。往log文件中追加日志
echo “123456789” >> test1.log
这个时候我们看一下效果: