Filebeat中文指南

翻译自:https://www.elastic.co/guide/en/beats/filebeat/current/index.html

译者:kerwin

鸣谢:tory chuck

一、概述

Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并且转发这些信息到elasticsearch或者logstarsh中存放。

以下是filebeat的工作流程:当你开启filebeat程序的时候,它会启动一个或多个探测器(prospectors)去检测你指定的日志目录或文件,对于探测器找出的每一个日志文件,filebeat启动收割进程(harvester),每一个收割进程读取一个日志文件的新内容,并发送这些新的日志数据到处理程序(spooler),处理程序会集合这些事件,最后filebeat会发送集合的数据到你指定的地点。

 

二、Filebeat入门

开始配置使用filebeat之前,你需要安装并配置好这些依赖程序:

Elasticsearch 作为存储和索引这些数据。

Kibana 作为展示平台。

Logstash(可选)去插入数据到elasticsearch

详见 beatelastic的入门 

 

在安装完毕elastic集群之后,阅读接下来的选项学习怎样安装,配置,与运行filebeat

 

第一步:安装filebeat

请选择你系统中的下载安装命令来下载安装filebeat(deb for Debian/Ubuntu, rpm for Redhat/Centos/Fedora, mac for OS X, and win for Windows).

如果你使用yum或者apt,你可以从我们的安装仓库中更方便的安装或更新到新版本。

 

deb:

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-amd64.deb

sudo dpkg -i filebeat-5.1.1-amd64.deb

rpm:

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-x86_64.rpm

sudo rpm -vi filebeat-5.1.1-x86_64.rpm

mac:

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-darwin-x86_64.tar.gz

tar xzvf filebeat-5.1.1-darwin-x86_64.tar.gz

win:

略。

 

第二步:配置filebeat

编辑配置文件来配置filebeat,对于rpm或者deb来说,配置文件是/etc/filebeat/filebeat.yml这个文件,对于MAC或者win来说,请查看你的解压文件中。

这里有一个简单的filebeat的配置文件filebeat.yml的样本,filebeat会使用很多默认的选项。

filebeat.prospectors:

- input_type: log

  paths:

    - /var/log/*.log

#- c:\programdata\elasticsearch\logs\*

 

让我们来配置filebeat

1、定义你的日志文件的路径(一个或多个)

对于大多数的基本filebeat配置,你可以定义一个单一探测器针对一个单一的路径,例如:

filebeat.prospectors:

- input_type: log

  paths:

    - /var/log/*.log

 

PS:若收取日志格式为json的log,请开启此配置

json.keys_under_root: true

在这个例子中,探测器会收集/var/log/*.log的所有匹配文件,这意味这filebeat会手机所有的/var/log下以.log结尾的文件,此处还支持Golang Glob支持的所有模式。

在预定义级别的子目录中获取所有文件,可以使用这个配置:/var/log/*/*.log,这会找到/var/log下所有子目录中所有的以.log结尾的文件。但它并不会找到/var/log文件夹下的以.log结尾的文件。现在它还不能递归的在所有子目录中获取所有的日志文件。

如果你设置输出到elasticsearch中,那么你需要在filebeat的配置文件中设置elasticsearchIP地址与端口。

output.elasticsearch:

  hosts: ["192.168.1.42:9200"]

如果你设置输出到logstarsh,那么请参考第三步,配置filebeat使用logstarsh

第三步:配置filebeat或elasticsearch使用logstarsh

如果要使用logstashfilebeat收集起来的数据执行其他处理,你需要配置filebeat使用logstash

你需要编辑filebeat的配置文件,注释elasticsearch的选项,并打开logstash的配置的注释:

#----------------------------- Logstash output --------------------------------

output.logstash:

  hosts: ["127.0.0.1:5044"]

hosts选项需要指明logstash服务所监听的地址和它的端口。

对于这个配置,你必须手动将索引模板加载到elasticsearch中,因为自动加载模板的选项仅适用于Elasticsearch输出。

注:若要测试你的配置文件,切换到你安装好的filebeat的可执行文件的目录,然后在命令行运行以下选项:./filebeat -configtest -e ,确保您的配置文件在默认配置文件目录下,见 目录布局

 

在使用这个配置之前,你需要提前设置好logstash来接收数据。

 

如果想不通过logstash直接入库到elasticsearch,可注释掉logstash入库部分,直接打开elasticsearch入库部分即可。

output.elasticsearch:

  hosts: ["localhost:9200"]

 

 

第四步:在elasticsearch中加载索引模板#非必要,可直接进行第五步。filebeat会获取默认模板。

Elasticsearch中,索引模板是用于定义字段应如何分析的设置和映射。

推荐的filebeat索引模板文件已经在filebeat的安装包中了,如果你允许默认的模板加载到配置文件filebeat.yml中,filebeat会在成功链接elasticsearch后自动加载这些模板。如果模板已经存在了,除非你配置了filebeat.yml,否则它不会被复写。

如果你不想自动加载索引模板,或者你想加载你自己的索引模板,你你可以在filebeat的配置文件中改变模板的配置,如果你选择了关闭自动加载模板,你需要手动加载模板。更多的信息请看:

配置模板加载:只支持输出到elasticsearch

手动加载模板:需要输出到logstash时 #实测并不需要手动加载,或配置任何,一样可以输出到logstash

配置模板加载

默认上,filebeat自动加载推荐的模板文件,filebeat.template.json,如果禁用输出到elasticsearch,你可以配置filebeat.yml中的template.nametemplate.path选项:

output.elasticsearch:

  hosts: ["localhost:9200"]

  template.name: "filebeat"

  template.path: "filebeat.template.json"

  template.overwrite: false

默认上,如果索引里已经有这个模板,新的并不会覆盖旧的。若是想覆盖现有的模板,在配置文件中设置template.overwriteture

若禁用自动加载模板,注释掉elasticsearch输出下模板的那一部分。

如果使用Logstash输出,则不支持自动加载模板的选项。

手工加载模板

如果你禁止了模板的自动加载,你需要运行接下来的命令来加载模板:

curl -XPUT 'http://localhost:9200/_template/filebeat' -d@/etc/filebeat/filebeat.template.json

这里的location9200elasticsearch监听的ip和端口

注:如果你已经使用filebeat输出索引数据到elasticsearch中,这些索引可能包含旧的文档,在你加载了索引模板后,你可以从filebeat-*中删除旧的文档,以强制kibana查看新的索引文档。

命令如下:

curl -XDELETE 'http://localhost:9200/filebeat-*'

 

第五步:启动filebeat

rpm安装:

sudo /etc/init.d/filebeat start

 

现在,filebeat已经准备好读取你的日志文件并发送到你定义的输出中了!


本文转自:

http://www.cnblogs.com/kerwinC/p/6227768.html