日志系统优化选型之采集端

Filebeat简介

一 背景介绍

         目前比较主流的日志采集系统有ELK(ES+Logstash+Kibana),EFK(ES+Fluentd+Kibana)等。由于Logstash出现较早,大多数日志文件搜集采用了Logstash。但由于Logstash是JRuby实现的,性能开销较大,因此我们的日志搜集采用的Filebeat来减少性能开销。

二 Beats简介

   Beats是Elastic.co从packetbeat发展出来的一个集合了多种单一用途数据采集器的数据采集平台,其中包括

1. Filebeat:用于转发和汇总日志与文件;

2. Metricbeat:用于从系统和服务手机指标。您可以获取系统级的CPU 使用率、内存、文件系统、磁盘 IO 和网络 IO 统计数据,完全零依赖。

3. Packetbeat:用于深挖网上线传输的数据并实时解析,完全被动,零延迟开销,不妨碍基础架构

4. Winlogbeat:监控基于Windows的基础架构上发生的事件,

5. Auditbeat:收集Linux审计框架数据并监视文件的完整性。

6. Heartbeat:通过主动探测监控服务的可用性。

以上所有的采集器都可以将数据发送到Elasticsearch或者是发送到Logstash过滤后再发送到Elasticsearch,最后展示在Kibana。除此之外,从中抽象出来的libbeat提供了统一的数据发送方法,输入配置解析,日志记录框架等功能。所有的beat工具在配置上 除了input,在output、filter、shipper、logging、run-options 上的配置规则都是完全一致的。

三 Filebeat简介

      Filebeat是使用Go语言开发,由原先的logstash-forwarder的源码改造出来的,是logstash-forwarder的升级版本,最新版本为6.1.0,且在持续更新,Beat社区非常活跃。

1.架构图


2.主要组件

    Filebeat由两个主要组件组成: prospector 和 harvester。 这些组件一起工作来尾随文件并将事件数据发送到你指定的输出。

   prospector负责管理harvesters并找到所有的读取源。目前有几种类型:log(日志文件),stdin(标准输入),Redis,UDP和Docker,当配置日志类型时, prospector会查找驱动器上与所定义的全局路径匹配的所有文件,并为每个文件启动一个harvester。 每个prospector都在自己的Go例程中运行。

   harvester负责读取单个文件的内容。 harvester逐行读取每个文件,并将内容发送到输出。harvester负责打开和关闭文件,这意味着在harvesters运行时文件要保持打开状态。如果在收获文件时删除或重命名文件,Filebeat将继续读取文件。这有副作用,在harvester关闭之前,磁盘上的空间被保留。默认情况下,Filebeat保持文件打开,直到达到close_inactive的设置(close_inactive默认为5分钟,即5分钟之内,没有最新的日志信息产生则关闭文件句柄)。
关闭harvester有以下情况:

  • 如果在harvester还在读取文件时文件被删除,那么文件处理程序关闭,释放基础资源。
  • 只有在scan_frequency过后,文件的采集才会重新开始。(scan_frequency参数默认为10秒,每隔10秒prospector检查目录中日志文件的变化情况)
  • 如果在harvester关闭的情况下移动或移除文件,则不会继续收集文件。

3.工作原理

当开启filebeat程序的时候,它会启动一个或多个探测器(prospectors)去检测指定的日志目录或文件,对于探测器找出的每一个日志文件,filebeat启动收割进程(harvester),每一个收割进程读取一个日志文件的新内容,并发送这些新的日志数据到处理程序(spooler),处理程序会集合这些事件,最后filebeat会发送集合的数据到你指定的地点。

4.特性:

   Filebeat经常刷新注册表文件中的磁盘状态(保存在安装目录的data目录下,用于记录harvester正在读取的最后偏移量),并可以确保发送所有的日志行,如果接收端无法访问,Filebeat会跟踪发送的最后一行,并在输出再次可用时继续读取文件。如果宕机,重启进程时可以根据注册表文件的数据来重建状态,并继续每个文件上的harvester。对于单个文件会保留唯一标识用以检测文件是否被收集(防止重命名或者移动)。日志过多每天创建大量文件的话,注册表会变的很大,可以使用配置文件中的参数clean_inactive、clean_removed来调整。

    Filebeat会将每个event的传递状态存储在注册表中,在确认已经收到事件之前,会一直尝试发送事件。

5.部署Filebeat

DEB:

[root@h1 ~]# curl -L -Ohttps://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.1.1-amd64.deb

[root@h1 ~]# sudo dpkg -i filebeat-6.1.1-amd64.deb

RPM:

[root@h1 ~]#curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.1.1-x86_64.rpm
[root@h1 ~]#sudo rpm -vi filebeat-6.1.1-x86_64.rpm

MAC:

[root@h1 ~]#curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.1.1-darwin-x86_64.tar.gz
[root@h1 ~]#tar xzvf filebeat-6.1.1-darwin-x86_64.tar.gz

Docker:

docker pull docker.elastic.co/beats/filebeat:6.1.1

WIN:

  • 下载windows zip文件
  • 解压文件到 C:\Program Files.
  • 重命名为 Filebeat.

·        打开CMD命令窗口

·        运行以下命令来安装Filebeat作为Windows服务

cd  C:\Program Files\Filebeat
C:\Program Files\Filebeat> .\install-service-filebeat.ps1

6.主要配置

   Filebeat配置文件使用YAML,具体语法详见

https://www.elastic.co/guide/en/beats/libbeat/current/config-file-format.html

7.经典架构


8.问题

   日志写入磁盘的速度超过Filebeat读取日志的速度,或者当日志被删除或者被覆盖的时候可能丢失数据。

   filebeat在空载情况(没有日志可采集)下的确不会有大的内存开销,但在有大量的日志需要采集时,filebeat的内存占用是没有固定值的。

   Filebeat使用Go自带的encoding/json包是基于反射实现的,性能有一定问题, Go 有多个针对给定结构体做 JSON 序列化 / 反序列化的第三方包,可以使用来降低提高性能。

四 Logstash简介

1. 简介

Logstash是一个完全开源的日志管理工具,可以对日志进行收集、分析,并将其存储供以后开发者统计和查询日志信息。

2. 架构图

Logstash 社区通常习惯用shipper,broker 和 indexer 来描述数据流中不同进程各自的角色。如下图:

 

3.插件配置

logstash配置文件有2个内容组成,input和output,其实还有2个配置:filter和codec。下图是logstash内部的一个叫做事件处理管道(pipeline) 的核心概念的3大组成部分:


1)  input:

生成事件(logstash中的事件是由队列实现的,这个队列由ruby的SizedQueue实现)的数据来源,常见的有file(文件)、syslog(系统日志)、redis(缓存系统)、 lumberjack(lumberjack协议) 。

在每个部分中,也可以指定多个访问方式,例如我想要指定两个日志来源文件,则可以这样写:

input {

 file{ path =>"/var/log/messages" type =>"syslog"}

 file{ path =>"/var/log/apache/access.log" type=>"apache"}

}

2)  filter:修改事件内容,常见的filter有grok(正则过滤器)、mutate、drop、clone、geoip

3)  output:展现结果,常见的有elasticsearch(搜索引擎)、file、graphite、statsd

4)  codec:可以作为input或output的一部分,主要用来处理日志过程中产生的消息,常见的codec有json、rubydebug

五 Filebeat对比Logstash

   见Filebeat对比Logstash的Excel。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值