1. 引言
Filebeat是一个轻量级的日志采集器,当您要面对成百上千、甚至成千上万的服务器、虚拟机和容器生成的日志时,请告别 SSH 吧。Filebeat 将为您提供一种轻量型方法,用于转发和汇总日志与文件,让简单的事情不再繁杂。可以用官网一幅图直观地对其进行描述:
官网地址:https://www.elastic.co/cn/downloads/beats/filebeat
文档地址:https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-getting-started.html
注意:之后所有的博文中的实验都会在Ubuntu16.04进行。安装方式为使用官方最新tar包。
2. 下载并解压
下载:
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.6.0-linux-x86_64.tar.gz
解压:
tar -zxvf filebeat-5.6.0-linux-x86_64.tar.gz
3. 修改配置文件
在解压的目录下,我们可以看到filebeat完整的配置文件(filebeat.full.yml),里面包含了filebeat所有的配置项,我们后面会逐一进行讲解。简化版本的配置文件是:filebeat.yml,你可以基于这个简化版本的配置文件进行实验。但是在实验之前,最好对原始配置文件做个备份:
cp filebeat.yml filebeat.yml.bak
3.1 filebeat.yml配置文件解读
通过命令:
cat filebeat.yml | grep -v "^#" | grep -v "#" | grep -v "^$"
我们可以看到filebeat.yml中已经激活的配置项:
filebeat.prospectors:
- input_type: log
paths:
- /var/log/*.log
output.logstash:
hosts: ["localhost:5044"]
在这个配置文件中,主要定义了两个部分:第一个部分是数据采集源头,也就是你要从哪个地方搜集什么样的数据,比如本例中就是采集/var/log目录下所有的.log后缀的日志文件;第二个部分是输出部分,也就是你采集到的数据要输出到哪儿去,本例中是输出到logstash中,logstash的host为localhost,port为5044。当然你可以设置为控制台、文件、kafka、ElasticSearch、logstash等。
3.2 用于测试的配置文件
为了不在刚开始就和Elastic的其他组件进行交互,我们将输出改为控制台输出的方式,我们最终使用的测试配置文件(hello.yml)为:
filebeat.prospectors:
- input_type: log
paths:
- /var/log/*.log
output.console:
# Boolean flag to enable or disable the output module.
enabled: true
# Pretty print json event
pretty: true
该测试的配置文件将/var/log下的所有.log日志文件采集输出到控制台中。配置文件设置完成后,记得改变该配置文件的权限为600,不然不能启动
chmod 600 hello.yml
4. 运行filebeat
filebeat的启动帮助可以通过
./filebeat -h
查看。本例中使用:
./filebeat -c hello.yml
启动filebeat,启动瞬间就会在控制台出现以下形式的数据:
{
"@timestamp": "2017-09-15T12:43:30.795Z",
"beat": {
"hostname": "yangyue",
"name": "yangyue",
"version": "5.6.0"
},
"input_type": "log",
"message": "2017-09-14 22:24:24 status config-files linux-image-4.4.0-89-generic:amd64 4.4.0-89.112",
"offset": 87198,
"source": "/var/log/dpkg.log",
"type": "log"
}
5. 小结
本文主要介绍了Filebeat的应用场景,并实现了Filebeat的HelloWord,如果有任何问题,欢迎评论留言。