⽇志收集器Filebeat详解
⼀、简介
1、Beats是elastic公司的⼀款轻量级数据采集产品,它包含了⼏个⼦产品:
1)packetbeat(⽤于监控⽹络流量)
2)filebeat(⽤于监听⽇志数据,可以替代logstash-input-file)
3)topbeat(⽤于搜集进程的信息、负载、内存、磁盘等数据)
4)winlogbeat(⽤于搜集windows事件⽇志)
注:社区还提供了dockerbeat等⼯具(⾮elastic公司)
2、Filebeat是⼀个开源的⽂件收集器,采⽤go语⾔开发,重构logstash采集器源码,安装在服务器上作为代理来监视⽇志⽬录或特定的⽇志⽂件,并把它们发送到logstash或elasticsearch等。
3、Filebeat是代替logstash-forwarder的数据采集⽅案,原因是logstash运⾏在jvm上,对服务器的资源消耗⽐较⼤
⼆、实现原理
当开启filebeat程序的时候,它会启动⼀个或多个探测器(prospectors)去检测指定的⽇志⽬录或⽂件,对于探测器出的每⼀个⽇志⽂件,filebeat启动收割进程(harvester),每⼀个收割进程读取⼀个⽇志⽂件的新内容,并发送这些新的⽇志数据到处理程序(spooler),处理程序会集合这些事件,最后filebeat会发送集合的数据到你指定的地点。
三、输出⽅式
1)Elasticsearch(推荐)
2)Logstash(推荐,注:logstash⽤于过滤)
3)File
4)Console
5)Kafka(⽹上普遍吐槽)
6)Redis
官⽅⽂档:
四、使⽤
1、下载、安装
1)源码
wget /beats/filebeat/filebeat-1.3.0-x86_
tar -zxvf filebeat-1.3.0-x86_
2)deb
curl -L -O/beats/filebeat/filebeat_1.3.0_amd64.deb
sudo dpkg -i filebeat_1.3.0_amd64.deb
borderbox3)rpm
curl -L -O/beats/filebeat/filebeat-1.3.0-x86_64.rpm
sudo rpm -vi filebeat-1.3.0-x86_64.rpm
4)MAC
curl -L -O/beats/filebeat/filebeat-1.
tar -xzvf filebeat-1.2、安装
5)win
a、下载windows zip⽂件 点击下载.
b、解压⽂件到 C:\ProgramFiles.
c、重命名为 Filebeat.
d、打开PowerShell提⽰符作为管理员(右键单击PowerShell的图标,并选择以管理员⾝份运⾏)。如果您运⾏的是Windows XP,则可能需要下载并安装PowerShell
e、运⾏以下命令来安装Filebeat作为Windows服务
cd ‘C:\ProgramFiles\Filebeat’
C:\ProgramFiles\Filebeat> .\install-service-filebeat.ps1
2、修改配置⽂件
Filebeat的配置⽂件是/etc/l,遵循YAML语法。具体可以配置如下⼏个项⽬:
Filebeat
Output
Shipper
Logging(可选)
Run Options(可选)
Filebeat主要定义prospector的列表,定义监控哪⾥的⽇志⽂件,关于如何定义的详细信息可以参考l中的注释,下⾯主要介绍⼀些需要注意的地⽅。
paths:指定要监控的⽇志,⽬前按照Go语⾔的glob函数处理。没有对配置⽬录做递归处理,⽐如配置的如果是:
/var/log/*/*.log
则只会去/var/log⽬录的所有⼦⽬录中寻以”.log”结尾的⽂件,⽽不会寻/var/log⽬录下以”.log”结尾的⽂件。
·        encoding:指定被监控的⽂件的编码类型,使⽤plain和utf-8都是可以处理中⽂⽇志的。
·        input_type:指定⽂件的输⼊类型log(默认)或者stdin。
·        exclude_lines:在输⼊中排除符合正则表达式列表的那些⾏。
·        include_lines:包含输⼊中符合正则表达式列表的那些⾏(默认包含所有⾏),include_lines执⾏完毕之后会执
⾏exclude_lines。
·        exclude_files:忽略掉符合正则表达式列表的⽂件(默认为每⼀个符合paths定义的⽂件都创建⼀
个harvester)。
·        fields:向输出的每⼀条⽇志添加额外的信息,⽐如“level:debug”,⽅便后续对⽇志进⾏分组统计。默认情况下,会在输出信息的fields⼦⽬录下以指定的新增fields建⽴⼦⽬录,例如fields.level。
fields:
level: debug
fields_under_root:如果该选项设置为true,则新增fields成为顶级⽬录,⽽不是将其放在fields⽬录下。⾃定义的field会覆盖filebeat默认的field。例如添加如下配置:
fields:
level: debug
fields_under_root: true
·        ignore_older:可以指定Filebeat忽略指定时间段以外修改的⽇志内容,⽐如2h(两个⼩时)或者5m(5分钟)。
·        close_older:如果⼀个⽂件在某个时间段内没有发⽣过更新,则关闭监控的⽂件handle。默认1h,change只会在下⼀次scan才会被发现
·        force_close_files:Filebeat会在没有到达close_older之前⼀直保持⽂件的handle,如果在这个
时间窗内删除⽂件会有问题,所以可以把force_close_files设置为true,只要filebeat检测到⽂件名字发⽣变化,就会关掉这个handle。
·        scan_frequency:Filebeat以多快的频率去prospector指定的⽬录下⾯检测⽂件更新(⽐如是否有新增⽂件),如果设置为0s,则Filebeat会尽可能快地感知更新(占⽤的CPU会变⾼)。默认是10s。
·        document_type:设定Elasticsearch输出时的document的type字段,也可以⽤来给⽇志进⾏分类。
·        harvester_buffer_size:每个harvester监控⽂件时,使⽤的buffer的⼤⼩。
·        max_bytes:⽇志⽂件中增加⼀⾏算⼀个⽇志事件,max_bytes限制在⼀次⽇志事件中最多上传的字节数,多出的字节会被丢弃。
·        multiline:适⽤于⽇志中每⼀条⽇志占据多⾏的情况,⽐如各种语⾔的报错信息调⽤栈。这个配置的下⾯包含如下配置:
<code class="hljs applescript has-numbering" Source Code Pro", monospace;font-size:undefined; white-space: pre;
border-radius: 0px; word-wrap: normal; background: transparent;">pattern:多⾏⽇志开始的那⼀⾏匹配的pattern negate:是否需要对pattern条件转置使⽤,不翻转设为<span class="hljs-constant" >true</span>,反转设置为<span class="hljs-constant" >false</span> match:匹配pattern后,与前⾯(<span class="hljs-keyword" >before</span>)还是后⾯(<span class="hljs-keyword"
>after</span>)的内容合并为⼀条⽇志 max_lines:合并的最多⾏数(包含匹配pattern的那⼀⾏) <span class="hljs-keyword" >timeout</span>:到了<span class="hljs-keyword" >timeout</span>之后,即使没有匹配⼀个新的pattern(发⽣⼀个新的事件),也把已经匹配的⽇志事件发送出
去</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: sol
id; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li >1</li><li >2</li><li >3</li><li >4</li><li >5</li></ul>
·        tail_files:如果设置为true,Filebeat从⽂件尾开始监控⽂件新增内容,把新增的每⼀⾏⽂件作为⼀个事件依次发送,⽽不是从⽂件开始处重新发送所有内容。
·        backoff:Filebeat检测到某个⽂件到了EOF之后,每次等待多久再去检测⽂件是否有更新,默认为1s。
·        max_backoff:Filebeat检测到某个⽂件到了EOF之后,等待检测⽂件更新的最⼤时间,默认是10秒。
·        backoff_factor:定义到达max_backoff的速度,默认因⼦是2,到达max_backoff后,变成每次等
待max_backoff那么长的时间才backoff⼀次,直到⽂件有更新才会重置为backoff。⽐如:
如果设置成1,意味着去使能了退避,每隔backoff那么长的时间退避⼀次。
·        spool_size:spooler的⼤⼩,spooler中的事件数量超过这个阈值的时候会清空发送出去(不论是否到达超时时间)。
·        idle_timeout:spooler的超时时间,如果到了超时时间,spooler也会清空发送出去(不论是否到达容量的阈值)。·        registry_file:记录filebeat处理⽇志⽂件的位置的⽂件
·        config_dir:如果要在本配置⽂件中引⼊其他位置的配置⽂件,可以写在这⾥(需要写完整路径),但是只处
理prospector的部分。
·        publish_async:是否采⽤异步发送模式(实验功能)。
3、启动
sudo /etc/init.d/filebeat start
4、停⽌
1)ps -ef |grepfilebeat
2)kill掉该进程
五、其他数据采集器
1)logstash-forwarder(elastic)
2)scribe(FaceBook)
3)chukwa(Apache)
4)flume(Cloudera)
5)fluentd
六、推荐解决⽅案
1、Filebeat(采集数据)+Elasticsearch(建⽴索引)+Kibana(展⽰)
2、Filebeat(采集数据)+Logstash(过滤)+Elasticsearch(建⽴索引)+Kibana(展⽰)
3、Filebeat(采集数据)+Kafka/Redis/File/Console(数据传输)+应⽤程序(处理,存储,展⽰)
4、Filebeat(采集数据)+Logstash(过滤)+Kafka/Redis/File/Console(数据传输)+应⽤程序(处理,存储,展⽰)
注:Redis/File/Console如何判断增量是⼀个问题

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。