Filebeat简介

Filebeat是一个轻量级的收集日志和传输日志的工具(一直以为Filebeat是存储数据,并不是的它只是做一个收集传输功能);Filebeat安装在每一个你想要收集日志的服务器上,相当于客户端。Filebeat监控你指定的日志文件或者路径,收集日志事件向Elasticsearch或者Logstach进行索引。
 

简单理解Filebeat是如何工作的

当你启动Filebeat,它开始监视你指定的一个或多个文件或路径。Filebeat定位的每个日志,Filebeat开始启动一个harvester。每个harvester读取到一个日志的新内容就发送到libbeat,聚合起来然后把聚合的数据发送到你设置输出的地方,如elasticsearch,logstach等。如图:
 
 
 
 
 

Filebeat是如何工作的

两个组件:inputs harvesters  这两个组件一起工作跟踪文件并将事件发送到指定的输出。
 

harvesters(收割机,谷歌翻译的,哈哈,也可以这么理解,因为是去收集文件并传输确认也像收割机)

职责:harvesters负责收取单个文件的内容。harvesters读取文件,一行一行的读取文件,并将内容发送到Output。
每个文件启动一个harvester,harvester负责打开或关闭一个文件,这意味着当harvest运行时文件描述符处于打开状态。如果文件在获取过程中被移走了或者被重名了,Filebeat会继续读取文件,这样做的副作用是磁盘上的空间被一直占用着直到harvester被关闭。默认情况下,Filebeat会保持打开状态直到close_inactive信号到达。
 

input

职责:找到所有的读取来源和管理harvesters
假如文件来源是log,那么input会找到所有定义下匹配的文件并且给每个文件开启一个harvester,如:
 
filebeat.inputs:
- type: log
paths:
- /var/log/*.log
- /var/path2/*.log

Filebeat目前支持的输入类型

Log、Stdin、Redis、UDP、Docker、TCP、Syslog、NetFlow,每个输入类型可以定义多次,log输入会检查每个文件是否需要启动harvester,是否已经启动或者可以忽略这个文件,当harvester关闭后只有文件大小被改变新的行才会拾取新的行。
 

Filebeat如何保持文件的状态

1、Filebeat保持每个文件的状态,并经常将该状态刷新到磁盘上的注册表文件;这个状态用于记住harvester的最后偏移量,并确保发送所有日志行。如果对于Output像Elasticsearch或者Logstach,送达不到,那么Filebeat继续跟踪最后的发送行,一旦Output再次可用,它将继续读取文件。
2、Filebeat运行时,状态信息也会保存在每个input的内存中;当Filebeat重启后,注册表文件中的状态用于重建数据,Filebeat在最后已知的位置使harvester继续收集日志。
3、对于每一个输入,Filebeat保存每个找到的文件的状态。因为文件可能会被重命名或者移动,文件名和路径不足以标识文件。对于每一个文件,Filebeat会存储唯一标识符以检测文件是否在之前获取。
 

Filebeat是如何确保至少一次交付的

1、Filebeat保证事件将至少一次传输到配置的输出并且不会有数据丢失,Filebeat能够实现这种行为是因为他将每个事件的传递状态存储存储在注册表文件中。
2、在定义的Output被阻塞且未确认所有的事件的情况下,Filebeat将会继续尝试发送事件直到输出确认接收到事件为止。
3、如果Filebeat在发送事件的过程中关闭,他不会在关闭之前等待Output确认所有事件。发送到Output的任何事件,在Filebeat关闭之前没有得到确认,当Filebeat重新启动时会再次发送。这就确保任何事件至少被发送了一次,但有可能你会发送重复的事件到Output。可以通过设置shutdown_timeout选项让Filebeat在关闭之前等待一定的时间。
4、Filebeat的至少一次交互有一个限制当涉及到日志轮训和删除旧文件时,如果日志文件被写入磁盘轮询的速度快于Filebeat的处理的速度,或者当output不能使用的时候删除了文件,数据可能会丢失。在Linux上,Filebeat也有可能会因为inode的重用跳过一些行。
 

自己想的的几个问题(暂时未去验证)

1、Input正常,Output不正常,当Output正常后,是怎么发送收集到的数据的,是从Output不正常时最后确认收到的文件事件后,从没有确认的那一个开始传送,还是从不正常之后,到正常这段时间的数据都不会再有?
2、Input不正常,Output正常,当Input正常后,数据是怎么发送的
 
 
官方文档:https://www.elastic.co/guide/en/beats/filebeat/current/how-filebeat-works.html#harvester
 
 
 
 

Filebeat工作过程(二)的更多相关文章

  1. 一种3位sar adc工作过程推导(二)

    3位sar adc采用下图的电容阵列,需要23个电容,它的基本单元有二进制加权的电容阵列.1个与LSB电容等值的电容:它利用电容上的初始电荷再分配完成二进制搜索算法,因此功耗一般比较小,而且不需要额外 ...

  2. ASP.NET Web API 控制器创建过程(二)

    ASP.NET Web API 控制器创建过程(二) 前言 本来这篇随笔应该是在上周就该写出来发布的,由于身体跟不上节奏感冒发烧有心无力,这种天气感冒发烧生不如死,也真正的体会到了什么叫病来如山倒,病 ...

  3. 主动模式下FTP的详细工作过程(转) 挺详细

    主动模式下FTP的详细工作过程   PORT FTP是常用的FTP工作方式,当客户端的连接请求到来时,FTP服务器会利用默认的21端口与客户端建立连接,该连接属于命令通道,利用该通道来下达控 制指令: ...

  4. Nginx reopen reload作用及工作过程

    http://www.iigrowing.cn/nginx-reopen-reload-zuo-yong-ji-gong-zuo-guo-cheng.html Nginx reopen reload作 ...

  5. LTE工作过程

    LTE工作过程 一.LTE开机及工作过程如下图所示: 二.小区搜索及同步过程 整个小区搜索及同步过程的示意图及流程图如下: 1)   UE开机,在可能存在LTE小区的几个中心频点上接收信号(PSS), ...

  6. DHCP工作过程详解

    DHCP动态主机配置协议的作用我想作为网管的兄弟们都应该知道了,这里我就不多废话了,今天我要谈的是DHCP的工作过程,了解了工作过程,要排除故障就容易了.   一.DHCP客户机初始化: 1. 寻找D ...

  7. 《Android开发艺术探索》读书笔记 (9) 第9章 四大组件的工作过程

    第9章 四大组件的工作过程 9.1 四大组件的运行状态 (1)四大组件中只有BroadcastReceiver既可以在AndroidManifest文件中注册,也可以在代码中注册,其他三个组件都必须在 ...

  8. 【Canal源码分析】parser工作过程

    本文主要分析的部分是instance启动时,parser的一个启动和工作过程.主要关注的是AbstractEventParser的start()方法中的parseThread. 一.序列图 二.源码分 ...

  9. 5、Filebeat工作原理

    Filebeat工作原理 Filebeat由两个主要组件组成:inputs和harvesters. 这些组件协同工作来查看最新文件内容并将事件数据发送到指定的输出.(注意与之前版本的不同,之前版本是p ...

随机推荐

  1. 【转】QT 添加外部库文件

    转自:Qt 添加外部库文件 LIBS += D:\Code\Opengltest\OpenGL32.Lib D:\Code\Opengltest\GlU32.Lib # 直接加绝对路径 LIBS += ...

  2. 新手学习之浅析一下c/c++中的指针

    一.我们先来回忆一下指针的概念吧,方便下面的介绍 指针是存放地址值的变量或者常量.例如:int a=1;&a就表示指针常量(“&”表示取地址运算符,也即引用).int *b,b表示的是 ...

  3. wpf binging(三) 绑定方法的返回值

    有时候我们不能绑定对象的属性或者成员,我们需要绑定一个对象的方法时 可以用 ObjectDataProvider 比如先声明一个类 含有加法 ObjectDataProvider 的简单使用 以下为综 ...

  4. Android选择多图上传

    大概是这么个效果,类似与微信朋友圈选择图片的效果,如下图所示 首先,图片预览的这个界面我用的是GridView,当然也可以使用GridLayout,根据需求制定行列即可.同时重写适配器实现末尾是添加图 ...

  5. VS2012及VS2013连接SQL2008提示 Could not load file or assembly 'Microsoft.SqlServer.Management.Sdk.Sfc'

    今天用同学的电脑,出现了这个错误.使用vs2012中的sqldatasoure控件,连接数据库.用的数据库是2008R2.已成功. 出现这样的错误. 解决办法: 安装以下三个组件: 安装顺序:SQLS ...

  6. Hadoop集群启动

    1.初始化集群 要启动Hadoop集群,需要启动HDFS和YARN两个集群 注意:首次启动HDFS时,必须对其进行格式化操作.本质上是一些清理和准备工作, 因为此时的HDFS在物理上还是不存在的 命令 ...

  7. L3-015 球队“食物链” (30 分)

    L3-015 球队“食物链” (30 分)   某国的足球联赛中有N支参赛球队,编号从1至N.联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场. 联赛战罢,结果已经尘埃落定.此时,联赛主席 ...

  8. 从零开始写自己的PHP框架系列教程[前言]

    我觉得程序员进步的理由:多看->多写->多总结 我自我介绍下,我不是程序员,但是我爱编程,作为业余程序员自己写框架让人感到兴奋的,目前有很多框架(js有jQuery.Express.soc ...

  9. 王者荣耀交流协会互评Beta版本--爱阅app

    测评人:任思佳 爱阅APP软件说明书地址:http://www.cnblogs.com/szjzsd/p/7881686.html 1.根据NABCD评论作品的选题:   N(Need):相比α发布来 ...

  10. 使用sed在匹配行之后增加一行数据

    需求:在原来大量的shell文件中,给出了错误信息打印,现在要求打印错误后直接退出脚本. if [ $? -eq 0 ];then echo_green "done!" else ...