zoukankan      html  css  js  c++  java
  • 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这个配置文件中。

  • 相关阅读:
    微信端支付
    flex布局
    最近的一些计划
    工作中遇到的一些小问题
    获取url参数
    localStorage中使用json
    倒计时函数(单个和多条)
    刚进入页面强制刷新
    [模板][倍增] ST算法 RMQ 区间中最大得值
    [思维]奇数码问题
  • 原文地址:https://www.cnblogs.com/songgj/p/10356987.html
Copyright © 2011-2022 走看看