文章目录
引言
ELK日志分析系统(一)之ELK原理
ELK日志分析系统(二)之ELK搭建部署
一、Filebeat简介
Filebeat由两个主要组成部分组成:prospector(探勘者)和 harvesters(矿车)。这些组件一起工作来读取文件并将事件数据发送到指定的output。
- prospector: 负责找到所有需要进行读取的数据源
- harvesters:负责读取单个文件的内容,并将内容发送到output中,负责文件的打开和关闭。
二、Filebeat的工作方式
启动Filebeat时,它将启动一个或多个输入,这些输入将在为日志数据指定的位置中查找。对于Filebeat所找到的每个日志,Filebeat都会启动收集器。每个收集器都读取单个日志以获取新内容,并将新日志数据发送到libbeat,libbeat将聚集事件,并将聚集的数据发送到为Filebeat配置的输出。
三、Filebeat工作原理
Filebeat可以保持每个文件的状态,并且频繁地把文件状态从注册表里更新到磁盘。这里所说的文件状态是用来记录上一次Harvster读取文件时读取到的位置,以保证能把全部的日志数据都读取出来,然后发送给output。如果在某一时刻,作为output的ElasticSearch或者Logstash变成了不可用,Filebeat将会把最后的文件读取位置保存下来,直到output重新可用的时候,快速地恢复文件数据的读取。在Filebaet运行过程中,每个Prospector的状态信息都会保存在内存里。如果Filebeat出行了重启,完成重启之后,会从注册表文件里恢复重启之前的状态信息,让FIlebeat继续从之前已知的位置开始进行数据读取。
四、Filebeat用途
- 适用于集群环境下,服务多,且部署在不同机器
1、为什么要用filebeat来收集日志?为什么不直接用logstash收集日志?
因为logstash是jvm跑的,资源消耗比较大,启动一个logstash就需要消耗500M左右的内存(这就是为什么logstash启动特别慢的原因),而filebeat只需要10来M内存资源。常用的ELK日志采集方案中,大部分的做法就是将所有节点的日志内容通过filebeat发送到logstash,logstash根据配置文件进行过滤。然后将过滤之后的文件输送到elasticsearch中,通过kibana去展示。
2、filebeat结合logstash带来好处
- 通过Logstash,具有基于磁盘的自适应缓冲系统,该系统将吸收传入的吞吐量,从而减轻Elasticsearch持续写入数据的压力
- 从其他数据源(例如数据库,s3对象存储或消息传递队列)中提取
- 将数据发送到多个目的地,例如S3,HDFS(Hadoop分布式文件系统)或写入文件
- 使用条件数据流逻辑组成更复杂的处理管道
3、Filebeat和Logstash的区别
Logstash | Filebeat | |
---|---|---|
内存 | 大 | 小 |
CPU | 大 | 小 |
插件 | 多 | 多 |
功能 | 从多种输入端采集并实时解析和转换数据并输出到多种输出端 | 传输 |
轻重 | 相对较重 | 轻量级二进制文件 |
过滤能力 | 强大的过滤能力 | 有过滤能力但是弱 |
进程 | 一台服务器只允许一个logstash进程,挂掉之后需要手动拉起 | |
原理 | Logstash使用管道的方式进行日志的搜集和输出,分为输入input处理filter(不是必须的)输出output,每个阶段都有不同的替代方式 | 开启进程后会启动一个或多个探测器(prospectors)去检测指定的日志目录或文件,对于探测器找出的每一个日志文件,filebeat启动收割进程(harvester) ,每一个收割进程读取一个日志文件的新内容,并发送这些新的日志数据到处理程序(spooler),处理程序会集合这些事件,最后filebeat会发送集合的数据到你指定的地点 |
集群 | 单节点 | 单节点 |
输出到多个接收方 | 支持 | 6.0之前支持 |
二次开发或者扩展开发 | 难 | 易 |