Elasticsearch黑鸟教程13:Filebeat的安装和使用
1、Filebeat是什么?
Filebeat是用于转发和集中日志数据的轻量级传送工具。
Filebeat监视用户指定的日志文件或位置,收集日志事件,并将日志数据转发到Elasticsearch或Logstash进行索引。
2、Filebeat和Logstash的关系
Logstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地。
因为Logstash是跑在JVM上的,资源消耗比较大,所以后来作者又用golang写了一个功能较少但是资源消耗也小的轻量级的logstash-forwarder,其设计初衷是这样的:logstash-forwarder搜集日志,汇总给Logstash,然后输出到Elasticsearch,并由Kibana展现Web界面。后来,作者加入了elastic公司,其公司内部有一个专门的golang团队,elastic公司干脆把logstash-forwarder的开发工作也合并到同一个golang团队来搞,于是新的项目就叫filebeat。
3、Filebeat的工作方式
Filebeat的工作方式如下:启动Filebeat时,它将启动一个或多个输入,这些输入将在为日志数据指定的位置中查找。对于Filebeat所找到的每个日志,Filebeat都会启动收集器。每个收集器都读取单个日志以获取新内容,并将新日志数据发送到libbeat,libbeat将聚集事件,并将聚集的数据发送到为Filebeat配置的输出。
工作的流程图如下:
4、Filebeat的安装和配置
第一步:安装Filebeat
从官网下载,解压即可:https://www.elastic.co/cn/beats/filebeat
第二步:配置Filebeat
配置文件:filebeat.yml
(1)定义日志文件路径
对于最基本的Filebeat配置,你可以使用单个路径。例如:
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
在这个例子中,获取/var/log/*.log
路径下的所有文件作为输入,这就意味着Filebeat将获取/var/log
目录下所有以.log结尾的文件。
为了从预定义的子目录级别下抓取所有文件,可以使用以下模式:/var/log/*/*.log
。这将抓取/var/log的子文件夹下所有的以.log结尾的文件。它不会从/var/log
文件夹本身抓取。目前,不可能递归地抓取这个目录下的所有子目录下的所有.log文件。
(2)如果你发送输出目录到Elasticsearch(并且不用Logstash),那么设置IP地址和端口以便能够找到Elasticsearch:
output.elasticsearch:
hosts: ["127.0.0.1:9200"]
(3)如果你想使用Logstash对Filebeat收集的数据执行额外的处理,那么你需要将Filebeat配置为使用Logstash。
output.logstash:
hosts: ["127.0.0.1:5044"]
第三步:启动Filebeat
./filebeat -e -c filebeat.yml -d "publish"