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. JavaScript的局部变量和全局变量小知识

    (了解一下,避免初学者犯错,但下面定义全局变量的做法并不推荐,只是让你们知道这是怎么一回事) 如果在函数中使用var定义一个变量,那么这个变量在函数退出后就会被销毁,例如: function test ...

  2. POST 调用 301 Moved Permanently 问题

    如上测试了2种,第一个post访问接口https能正常返回,第二个post访问接口http时301 Moved Permanently出现永久重定向问题,经检查发现服务器nginx对80端口做了重定向 ...

  3. spring-data-mongodb与mongo shell的对应关系

    除了特殊注释外,本文的测试结果均基于 spring-data-mongodb:1.10.6.RELEASE(spring-boot-starter:1.5.6.RELEASE),MongoDB 3.0 ...

  4. 利用Excel-Vba进行多表汇总和数据透视表

    汇总表格式 详情表格式 要求根据汇总表中的信息,到详情表中查找详细物料的具体个数 最终,对物料的个数进行汇总,结果如下图: ExcelVba代码如下(有一些注释代码供参考) Sub Start() S ...

  5. 使用SSD检测框架训练自己的数据

    数据集做好后,训练程序为/examples/ssd/ssd_pascal.py,运行之前,我们需要修改相关路径代码,主要是训练路径的修改和关于自己数据集参数的一些修改. cd /examples/ss ...

  6. 修改VScode行号区的背景颜色

    vs code是相当不错的一个编辑器,现阶段我用来编写nim程序. vs code非常丧心病狂一点就是行号区和编辑区的背景颜色都是一样, 这样会导致要看行首有没有对齐会非常吃力.这个问题让我纠结了非常 ...

  7. golang反射

    要点 1.变量 2.反射 3.结构体反射 4.反射总结以及应用场景 一.变量介绍 1.变量的内在机制 A.类型信息,这部分是元信息,是预定义好的 B.值类型,这部分是程序运行过程中,动态改变的 var ...

  8. Python 语法2

    文档字符串,这个只能是用于紧跟函数第二行的内容. 输出文档说明的部分,代码格式是 函数名称.(dot)__(双下划线)doc__(双下划线) ///////////////////////////// ...

  9. <FAT文件系统> -- DBR

    FAT16是比较简单的文件系统,相比NFTS等文件系统,该系统的学习比较easy,容易上手,同时对于数据存储的机理以及数据的恢复有一定的帮助.FAT文件系统有一定的弊端,不能支持太大的数据存储. FA ...

  10. web移动端类型检测

    移动端检测 插件通用下载: https://www.bootcdn.cn/ 根据一个库 device.js 下载地址 传送 api 传送 和 传送 常用检测类型 device.ipad() 返回一个布 ...