官网下载安装包 html
解压到指定目录,打开解压后的目录,打开filebeat.yml进行配置。linux
①:配置 Filebeat prospectors->path 这里的路径是所要收集日志的路径 。。eg:在当前目录下建一个data文件夹,里面放下载的示例文件(在Logstash那篇),人家应该是linux下的文件。shell
我这里将下载的日志文件 加了后缀.log ,放在data目录下windows
因此个人配置以下:elasticsearch
- type: log
# Change to true to enable this input configuration.
enabled: true
# Paths that should be crawled and fetched. Glob based paths.
paths:
- E:\filebeat-6.6.2-windows-x86_64\data\logstash-tutorial.log\*.log
#- c:\programdata\elasticsearch\logs\*
②:配置 enabled: true 这个配置很重要,只有配置为true以后配置才可生效,不然不起做用。
③:配置Outputs ,这里的Outputs有elasticsearch,logstash。按照配置文件下面的示例配置便可。只能配置一个输出。默认是ElasticSearchide
output.elasticsearch: # The Logstash hosts hosts: ["localhost:9200"]
默认状况下,Filebeat写事件到名为filebeat-6.3.2-yyyy.MM.dd的索引,其中yyyy.MM.dd是事件被索引的日期。为了用一个不一样的名字,你能够在Elasticsearch输出中设置index选项。
而后在当前目录下,新建一个bat文件,eg : run.bat 内容post
.\filebeat -e -c filebeat.yml
单击bat,启动filebeat学习
正常状况下,应该有个连接ES的过程,将数据输出到es。fetch
打开ES能看到多了一个filebeat-6.6.2-年月日的索引。。ui
若没有这个,而是一直Non-zero metrics inthe last 30s。这个时间参数是个扫描文件的频率,能够修改。那就要看下 配置的路径对不对。命令行中会有读取的文件的路径信息,仔细检查一下。
filebeat目录下有POWERSHELL脚本(install-service-filebeat.ps1),运行一下便可。将Powershell脚本的默认打开方式选择为Powershell.exe,直接运行。而后在服务中启动。
若是你想使用Logstash对Filebeat收集的数据执行额外的处理,那么你须要将Filebeat配置为使用Logstash。
output.logstash: hosts: ["127.0.0.1:5044"]
setup.kibana: host: "localhost:5601"
更多配置参数,查看官网
Filebeat是使用GO语言开发,由两个主要组件组成:prospector 和harvester。这些组件一块儿工做来读取文件(tail file)并将事件数据发送到您指定的输出。
工做原理以下:当Filebeat启动时,它会启动一个或者多个prospector监控日志路径或日志文件,每一个日志文件会有一个对应的harvester,harvester按行读取日志内容并转发至后台程序。Filebeat维护一个记录文件读取信息的注册文件,记录每一个harvester最后读取位置的偏移量。
下面是一个简单的Filebeat配置,采集2个文件夹下的日志并转发至Logstash。
filebeat:
prospectors:
-
paths:
- /dir1/access_log.*
input_type: log
document_type: dir1_log
-
paths:
- /dir2/ofbiz.log.*
input_type: log
document_type: dir2_log
output:
logstash:
hosts: ["10.90.4.9:5044"]
在Logstash中根据 document_type定义解析日志的正则并输出到ELasticsearch集群。
input { beats{ host => "192.2.11.145" port => 5044 } } filter { if[type]=="dir1_log"{ grok { match => { "message" => "%{COMBINEDAPACHELOG}"} } } else if ([type]=="dir2_log") { grok { match => { "message" => "%{TIMESTAMP_ISO8601:time}\s*%{NUMBER:logtime} \[\s*%{JAVAFILE:class}\:%{NUMBER:lineNumber}\s*\:%{LOGLEVEL:level}\s*\]\s*(?<info>([\s\S]*))"} } } } output { elasticsearch { hosts => ["10.90.4.9","10.90.4.8","10.90.4.7"] } }
中文翻译的配置参数:Filebeat6.3文档—Log input配置
更多参考官网学习