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. 判断浏览器大于等于ie9

    方便自己查找 <script> (function (window) { var theUA = window.navigator.userAgent.toLowerCase(); if ...

  2. Java语法基础学习DayTwentyOne(网络编程)

    一.IP地址和端口号 1.作用 通过IP地址,唯一的定位互联网上一台主机. 端口号标识正在计算机上运行的进程,不同进程有不同的端口号,被规定为一个16位的整数0~65535,其中0~1023被预先定义 ...

  3. 谱聚类(Spectral Clustring)原理

    谱聚类(spectral clustering)是广泛使用的聚类算法,比起传统的K-Means算法,谱聚类对数据分布的适应性更强,聚类效果也很优秀,同时聚类的计算量也小很多,更加难能可贵的是实现起来也 ...

  4. linux启动流程的理解

    1.bios 2.grub 选择 3.内核自解压vmlinux 4.内核引导的模式与变量(引导期内存分页映射)设置 #汇编级 5.内核内存再分页(内存空间映射),宏定义与设置,初始化consol,启动 ...

  5. Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2

    pycharm运行TensorFlow警告:Your CPU supports instructions that this TensorFlow binary was not compiled to ...

  6. FreeCAD_DWG文件格式支持

    FreeCAD 是一款开源的三维模型制作软件,体积小.功能强大,可结合软件包划分网格进行有限元分析,上手速度极快.但也存在问题,即软件自身不支持DWG文件格式.本文介绍 FreeCAD 支持 DWG格 ...

  7. L2-001 紧急救援 (25 分)

    L2-001 紧急救援 (25 分)   作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快 ...

  8. 神州数码BGP路由协议配置

    实验要求:了解BGP路由协议的配置方法及原理 拓扑如下 R1 enable 进入特权模式 config 进入全局模式 hostname R1 修改名称 interface l0 进入端口 ip add ...

  9. ansible 自动化运维

    Ansible 自动化运维 ansible安装epel #yum list all *ansible*#yum install *ansible*#yum info ansible#rpm -ql a ...

  10. contos7搭建syslog服务端与客户端

    搭建中心服务端1,编辑文件/etc/rsyslog.conf,找到以下内容,将前面的#注释符合去除#$ModLoad imtcp#$InputTCPServerRun 514 2,在/etc/rsys ...