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. java 秒时间格式化

    public static String durationFormat(Integer totalSeconds) { if (totalSeconds == null || totalSeconds ...

  2. SpringMVC云题库错题及答案汇总

    试题分析:D,BeanNameViewResolver:这个视图解析器跟XmlViewResolver基本相同,它是通过把返回的逻辑视图名称去匹配定义好的视图bean对象 @ModelAttribut ...

  3. Docker Toolbox

    Toolbox包含以下Docker工具: 用于运行docker-machine命令的Docker Machine 用于运行docker命令的Docker Engine Docker Compose用于 ...

  4. 第一章 Java入门

    一.JAVA的特点 简单.面向对象.平台无关.多线程.动态 (平台无关的原因:在操作系统上再提供JRE,只要提供JRE,JAVA编写的软件就能运行) 二.JAVA平台 JAVA SE(标准版).JAV ...

  5. Linux 环境下umount, 报 device is busy 的问题分析与解决方法

    在Linux环境中,有时候需要挂载外部目录或硬盘等,但当想umount时,却提示类似“umount:/home/oracle-server/backup:device is busy”这种提示. 出现 ...

  6. maven源码打包

    1.打包时附加外部Jar包 <!--编译+外部 Jar打包-->          <plugin>            <artifactId>maven-co ...

  7. KUANGBIN带你飞

    KUANGBIN带你飞 全专题整理 https://www.cnblogs.com/slzk/articles/7402292.html 专题一 简单搜索 POJ 1321 棋盘问题    //201 ...

  8. 模糊查询出list

    <resultMap id="shipList" type="com.sinochem.yunlian.yunliantraffic.domain.Ship&quo ...

  9. who are we?

    human been like animals,we work for our master. when we dreaming,we drive the machine run.

  10. 输入一个正整数n,计算出[0,n]这些整数中的二进制数没有连续3个1的数字有多少

    输入一个正整数n,计算出[0,n]这些整数中的二进制数没有连续3个1的数字有多少? 例子:输入数字9,则输出结果位9.因为[0-9]中,只有数字7有连续的三个‘1’出现,别的都没有,所以一共有9个数字 ...