初识Filebeat

一、简介

    Filebeat是一个用于转发和集中日志数据的轻量级托运人。Filebeat作为代理安装在您的服务器上,它监视您指定的日志文件或位置,收集日志事件,并将它们转发到Elasticsearch或Logstash进行索引.

   我们可以将filebeat简单的作为一个搬运工的角色,既然是搬运工,则需要考虑三个问题,从哪里搬?已经搬了多少?搬到那里去?如下图所示

 二、原理

 Prospector(采矿者)

① 定义输入文件的路径,也就是从哪里获取数据,一般定义日志的路径,当然可以匹配多条日志路径。

② 保存文件状态信息,为每一个文件保留一个状态。

filebeat.inputs:
- type: log
  paths:
    - /var/log/*.log

 Harvester(收割机)

一个收割机负责一个日志文件,收割过程如下,打开文件负责读取文件内容,它将逐行读取每个文件,并将读取的内容搬运到es或者kafka等。

三.问题

   1.如果日志文件内容此时有360行,收割机读取日志文件已经到了360行,当项目运行产生了新的日志,收割机是从361行以后开始读取,还是从第一行读取?如果从361行读取,它是如何保存文件读取状态的呢?

   毫无疑问日志接着上次的内容继续读取,也就是说从361行开始继续读取,如果从第一行读取,不仅会存在重复读取数据,在时间性能方面更差。每次haverster读取文件内容后,prospector内存中也会保存一下文件状态信息,当日志文件大小发生变化时,haverster将继续读取文件内容。

2.filebeat在搬到哪里这个过程中,也就是输出过程中是否存在数据丢失的情况?

  不会,filebeat将数据输出后,会等到接收端确认已收到,如果没有接收到返回消息,filebeat将再次发送数据到接收端。它会保证至少交付一次给接收端。

  

   av  

发布了240 篇原创文章 · 获赞 435 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/fjxcsdn/article/details/103103023