Beats及Filebeat轻量型日志采集器

Beats简介

  Beats被官方称为Lightweight Data Shipper,就是轻量级数据传送者,它主要有几个分类,如下:

    1. Filebeats日志文件,主要是针对日志文件。

    2. Metricbeat度量数据,主要可以收集CPU等数据,内存,磁盘,服务器软件(如nginx,Mysql等)。

    3. Packetbeat网络数据,主要收集网络数据。

    4. Winlogbeat Windows数据,针对windows系统日志数据。

    5. Heartbeat健康检查。  

     下图是Beats在整个Elastic Stack中的位置。

  

   Beats位于上图的左侧,也就是数据产生的起始端,它们可以将数据直接传输到elasticsearch中,也可以通过logstash对数据进行解析和转换,然后在传输到elasticsearch,最后在对数据进行可视化的展示。

 

什么是Filebeat

  Filebeat是一款使用go语言开发的,主要是对日志文件进行处理的,是一个属于Beats系列的日志托运者 (一组安装在主机上的轻量级托运人),用于将不同类型的数据传送到ELK堆栈进行分析。每个Beat专门用于传送不同类型的信息,例如,Winlogbeat发布Windows事件日志,Metricbeat发布主机指标等等。顾名思义,Filebeat提供日志文件。

  Filebeat处理流程

    1. 日志文件输入(Input)。

    2. 处理日志文件(Filter)。

    3. 输出到目标对象中(Output)。

    

      上图是Filebeat的结构图。 上图左边灰色框中就是Filebeat,右边是Filebeat的输出对象,Filebeat可以将日志输出到Elasticsearch,Logstash,Kafka,redis等。

 

   Filebeat的组成

     根据上图可以看到Filebeat由两个主要组件组成,prospector 和 harvester。
    1. harvester(收割者):
      负责读取单个文件的内容。
      如果文件在读取时被删除或重命名,Filebeat将继续读取文件。


    2. prospector(观察者):
      prospector负责管理harvester并找到所有要读取的文件来源,主要监控文件是否变化,如果输入类型为日志,则查找器将查找路径匹配的所有文件,并为每个文件启动一个harvester(上图prospector1就有两个harvester),如果文件有变化harvester就会收集新的日志。

     Filebeat可以有多个prospector,每个prospector负责的文件是不同的。      
      

 Filebeat安装

  可以先将Filebeats下载,去官网下载,地址:https://www.elastic.co/downloads/beats,也可以在这个地址 https://elasticsearch.cn/download/#seg-4

  Filebeats官网地址:https://www.elastic.co/cn/beats/filebeat

      Filebeats文档地址:https://www.elastic.co/guide/en/beats/filebeat/current/index.html

  

   Filebeats目录说明

 

  Mac系统安装:

  可以先查看filebeat安装信息

  

   安装

  

   查看安装是否成功

  

安装后Filebeat的相关安装位置:

  1. 安装目录:/usr/local/Cellar/filebeat/{filebeat版本}/

  2. 配置目录:/usr/local/etc/filebeat/

  3. 缓存目录:/usr/local/var/lib/filebeat/

  

   启动featbeat,可以通过命令brew services start filebeat

  

 

  

Filebeat配置

  Filebeat的配置文件是filebeat.yml。Filebeat使用的是yaml语法,下面是Filebeat配置示例

filebeat.prospector:
  - input_type: log     
paths:                  
  - /var/log/apache/httpd-*.log
document_type: apache
  - input_type: log
paths:
  - /var/log/messages
  - /var/log/*.log 

 说明:

  1. prospector可以配置多个,所以这里yaml对于数组是用 - 符号来表示的,每个prospector都有输入类型(input_type),这里log表示日志文件。

  2. paths也是数组(下面也有-这个符号),path用于指定日志路径。

 

  Filebeat Output配置

    1. Filebeat Console(标准输出):Filebeat将收集到等数据,输出到console里,一般用于开发环境中,用于调试。

output.console
    pretty.true
enable: true

    2. Filebeat Elasticsearch

output.elasticsearch
    host:["http://localhost:9200"]
    username: "admin"
    password: "123456"

  

  Filebeat Filter配置

   Filebeat本身可以对数据进行处理,不过处理能力还是有点弱,同时也缺乏对数据转换的能力。

 

Filebeat 演示-收集Nginx日志

   通过stdin收集日志。

       先查看Nginx是否启动,在浏览器上输入http://127.0.0.1:8080/

   

 

   如果不知道你的环境nginx监听的端口,可以查看nginx.conf配置文件中listen就可以。

  

  查看下nginx日志内容

songguojundeMacBook-Pro:~ songguojun$ head -n 10 /usr/local/var/log/nginx/access.log 
127.0.0.1 - - [07/May/2020:22:38:13 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:76.0) Gecko/20100101 Firefox/76.0"
127.0.0.1 - - [07/May/2020:22:44:36 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:76.0) Gecko/20100101 Firefox/76.0"

 先对nginx.yml文件进行配置,我的Mac系统nginx.yml路径在/usr/local/etc/filebeat/modules.d/下面,如果没有,可以新建一个nginx.yml文件。

该文件内容配置如下:

filebeat.prospectors:
- input_type: stdin

output.console:
    pretty: true

 

在输入命令head -n 10 /usr/local/var/log/nginx/access.log | filebeat -e -c /usr/local/etc/filebeat/modules.d/nginx.yml

 nginx日志每一条都被封装到json中。

 

 

Filebeat和Elasticsearch Ingest Node

  Filebeat是缺乏对数据转换的能力。所以ES在5.x版本的时候增加了一个新的node类型Ingest Node。这个Ingest Node可以在数据写入ES之前可以对数据进行转换,使用的Api是pipeline。

 

Filebeat Module介绍

  Filebeat Module是针对社区中常见的需求进行配置,封装来增加易用性,比如常见nginx的日志,apache日志,mysql日志。这些封装都在featbeat.yml这个配置文件中。

 

posted @ 2019-02-08 23:47  songguojun  阅读(2249)  评论(0编辑  收藏  举报