zoukankan      html  css  js  c++  java
  • (ELK)FileBeat的使用

    FileBeat

    一、FileBeat的概述

    1.1、filebeat和beats的关系

    首先filebeat是Beats中的一员。
      Beats在是一个轻量级日志采集器,其实Beats家族有6个成员,早期的ELK架构中使用Logstash收集、解析日志,但是Logstash对内存、cpu、io等资源消耗比较高。相比Logstash,Beats所占系统的CPU和内存几乎可以忽略不计。
    目前Beats包含六种工具:

    Packetbeat:网络数据(收集网络流量数据)

    Metricbeat:指标(收集系统、进程和文件系统级别的CPU和内存使用情况等数据)

    Filebeat:日志文件(收集文件数据)

    Winlogbeat:windows事件日志(收集Windows事件日志数据)

    Auditbeat:审计数据(收集审计日志)

    Heartbeat:运行时间监控(收集系统运行时的数据)

    image-20200910161052559

    1.2、Filebeat是什么

    Filebeat是用于转发和集中日志数据的轻量级传送工具。Filebeat监视您指定的日志文件或位置,收集日志事件,并将它们转发到Elasticsearch或 Logstash进行索引。

      Filebeat的工作方式如下:启动Filebeat时,它将启动一个或多个输入,这些输入将在为日志数据指定的位置中查找。对于Filebeat所找到的每个日志,Filebeat都会启动收集器(Harvester)。每个收集器都读取单个日志以获取新内容,并将新日志数据发送到libbeat,libbeat将聚集事件,并将聚集的数据发送到为Filebeat配置的输出。

    工作的流程图如下:

    image-20200907194420813

    1.3、filebeat和logstash的关系

      因为logstash是jvm跑的,资源消耗比较大,所以后来作者又用golang写了一个功能较少但是资源消耗也小的轻量级的logstash-forwarder。不过作者只是一个人,加入http://elastic.co公司以后,因为es公司本身还收购了另一个开源项目packetbeat,而这个项目专门就是用golang的,有整个团队,所以es公司干脆把logstash-forwarder的开发工作也合并到同一个golang团队来搞,于是新的项目就叫filebeat了。

    二、filebeat工作原理

    2.1、filebeat的构成

      filebeat结构:由两个组件构成,分别是inputs(输入)和harvesters(收集器),这些组件一起工作来跟踪文件并将事件数据发送到您指定的输出,harvester负责读取单个文件的内容。harvester逐行读取每个文件,并将内容发送到输出。为每个文件启动一个harvester。harvester负责打开和关闭文件,这意味着文件描述符在harvester运行时保持打开状态。如果在收集文件时删除或重命名文件,Filebeat将继续读取该文件。这样做的副作用是,磁盘上的空间一直保留到harvester关闭。默认情况下,Filebeat保持文件打开,直到达到close_inactive

    关闭harvester可以会产生的结果:

    • 文件处理程序关闭,如果harvester仍在读取文件时被删除,则释放底层资源。
    • 只有在scan_frequency结束之后,才会再次启动文件的收集。
    • 如果该文件在harvester关闭时被移动或删除,该文件的收集将不会继续

      一个input负责管理harvesters和寻找所有来源读取。如果input类型是log,则input将查找驱动器上与定义的路径匹配的所有文件,并为每个文件启动一个harvester。每个input在它自己的Go进程中运行,Filebeat当前支持多种输入类型。每个输入类型可以定义多次。日志输入检查每个文件,以查看是否需要启动harvester、是否已经在运行harvester或是否可以忽略该文件。

    2.2、filebeat如何保存文件的状态

      Filebeat保留每个文件的状态,并经常将状态刷新到磁盘中的注册表文件中。该状态用于记住harvester读取的最后一个偏移量,并确保发送所有日志行。如果无法访问输出(如Elasticsearch或Logstash),Filebeat将跟踪最后发送的行,并在输出再次可用时继续读取文件。当Filebeat运行时,每个输入的状态信息也保存在内存中。当Filebeat重新启动时,来自注册表文件的数据用于重建状态,Filebeat在最后一个已知位置继续每个harvester。对于每个输入,Filebeat都会保留它找到的每个文件的状态。由于文件可以重命名或移动,文件名和路径不足以标识文件。对于每个文件,Filebeat存储唯一的标识符,以检测文件是否以前被捕获。

    2.3、filebeat何如保证至少一次数据消费

      Filebeat保证事件将至少传递到配置的输出一次,并且不会丢失数据。是因为它将每个事件的传递状态存储在注册表文件中。在已定义的输出被阻止且未确认所有事件的情况下,Filebeat将继续尝试发送事件,直到输出确认已接收到事件为止。如果Filebeat在发送事件的过程中关闭,它不会等待输出确认所有事件后再关闭。当Filebeat重新启动时,将再次将Filebeat关闭前未确认的所有事件发送到输出。这样可以确保每个事件至少发送一次,但最终可能会有重复的事件发送到输出。通过设置shutdown_timeout选项,可以将Filebeat配置为在关机前等待特定时间

    三、安装和使用FlieBeat

    本次操作在本地Windows系统安装FileBeat

    3.1、下载、安装FileBeat

    直接解压下载之后的文件。

    3.2、配置文件

    在filebeat.yml文件中配置一个简单示例:filebeat.inputs和output.elasticsearch

    从*.log日志文件

    #=========================== Filebeat inputs =============================
    filebeat.inputs:
    # Each - is an input. Most options can be set at the input level, so
    # you can use different inputs for various configurations.
    # Below are the input specific configurations.
    - type: log
      # Change to true to enable this input configuration.
      enabled: true        #只有配置为true之后配置才可生效,否则不起作用。
      # Paths that should be crawled and fetched. Glob based paths.
      paths:
        - C:UsersAdministratorDesktoplog*.log      #需要解析的文件,查找log文件下所有后缀名为log的日志文件
        #- /var/log/*.log
        #- c:programdataelasticsearchlogs*
     
    #-------------------------- Elasticsearch output ------------------------------
    output.elasticsearch:
      hosts: ["localhost:9200"]         #配置输出elasticsearch
    
    

    启动Elasticsearch(配置好的)

    elasticsearch-7.7.0-windows-x86_64elasticsearch-7.7.0inelasticsearch.bat
    

    启动Kibana(配置好的)

    kibana-7.7.0-windows-x86_64inkibana.bat
    

    启动Filebeat

    #在filebeat-7.7.0-windows-x86_64 的目录下新建run.txt,然后修改后缀名为bat。内容为:
    .filebeat -e -c filebeat.yml  #直接输入此内容启动filebeat也可以
    #然后利用run.bat启动filebeat
    filebeat-7.7.0-windows-x86_64
    un.bat
    

    启动成功之后,filebeat.yml文件下paths配置下的log文件内容就已经被输入到了elasticsearch中。

    3.3、查看elasticsearch数据

    3.3.1、利用elsaticsearch-head查看数据

    在Google 浏览器安装elsaticsearch-head查看,输入http://localhost:9200/然后连接即可连接到ES。

    image-20200910145257062

    可以在索引下看到 index:filebeat-7.7.0-2020.09.08-000001 这就是利用filebeat获取的log日志数据。filebeat默认的索引名为:filebeat-7.7.0-yyyy.MM.dd-序号

    可以通过基本查询和复合查询查看该索引下数据

    image-20200910145627873

    log日志下数据为:

    0:0:0:0:0:0:0:1 - - [24/May/2018:22:44:52 +0800] "GET /bos HTTP/1.1" 302 - http-bio-8888-exec-1 0
    0:0:0:0:0:0:0:1 - - [24/May/2018:22:44:52 +0800] "GET /bos/ HTTP/1.1" 200 9676 http-bio-8888-exec-3 225
    0:0:0:0:0:0:0:1 - - [24/May/2018:22:44:52 +0800] "GET /bos/js/easyui/themes/icon.css HTTP/1.1" 200 1650 http-bio-8888-exec-5 4
    0:0:0:0:0:0:0:1 - - [24/May/2018:22:44:52 +0800] "GET /bos/js/ztree/zTreeStyle.css HTTP/1.1" 200 6316 http-bio-8888-exec-7 3
    0:0:0:0:0:0:0:1 - - [24/May/2018:22:44:52 +0800] "GET /bos/js/easyui/themes/default/easyui.css HTTP/1.1" 200 44396 http-bio-8888-exec-2 9
    0:0:0:0:0:0:0:1 - - [24/May/2018:22:44:52 +0800] "GET /bos/css/default.css HTTP/1.1" 200 3100 http-bio-8888-exec-6 8
    0:0:0:0:0:0:0:1 - - [24/May/2018:22:44:52 +0800] "GET /bos/js/easyui/locale/easyui-lang-zh_CN.js HTTP/1.1" 200 2624 http-bio-8888-exec-7 2
    0:0:0:0:0:0:0:1 - - [24/May/2018:22:44:52 +0800] "GET /bos/js/ztree/jquery.ztree.all-3.5.js HTTP/1.1" 200 121519 http-bio-8888-exec-9 7
    0:0:0:0:0:0:0:1 - - [24/May/2018:22:44:52 +0800] "GET /bos/js/jquery-1.8.3.js HTTP/1.1" 200 267739 http-bio-8888-exec-4 25
    0:0:0:0:0:0:0:1 - - [24/May/2018:22:44:52 +0800] "GET /bos/js/easyui/jquery.easyui.min.js HTTP/1.1" 200 296791 http-bio-8888-exec-8 19
    0:0:0:0:0:0:0:1 - - [24/May/2018:22:44:52 +0800] "GET /bos/images/logo.png HTTP/1.1" 200 44774 http-bio-8888-exec-8 3
    0:0:0:0:0:0:0:1 - - [24/May/2018:22:44:52 +0800] "GET /bos/home.html HTTP/1.1" 200 2904 http-bio-8888-exec-8 1
    

    因为没有设置模板,是使用的filebeat的默认模板。如果自定义模板就会细致的区分message内容。

    3.3.2、利用kibana查看es数据

    3.3.2.1、登录kibana
    http://localhost:5601/  #进入kibana可以加载kibana准备好的实例数据
    
    3.3.2.2、搜索数据

    进去Dev Tools(开发工具)菜单对ES中的数据进行操作

    image-20200910154943467

    3.3.2.3、索引模式

    进入Management管理菜单的-Kibana-索引模式-创建索引模式

    image-20200910152419175

    找到我们需要的索引

    image-20200910152504510

    创建完成

    image-20200910152828416

    之后我们就能在Discover菜单下通过刷选查看数据,如果提示没有数据,可能是时间范围设定的问题。

    可以在KQL录入过滤条件数据。

    image-20200910153306770

    3.3.3、更新*.log日志

    在log中新增的内容,filebeat会及时将新数据反馈到es中。

  • 相关阅读:
    【逆序对】N*M Puzzle / Simple Puzzle
    【逆序对】Ultra
    bzoj 1814 Fornula 1
    hdu 1693 插头dp入门
    bzoj 2154
    没有上司的舞会
    【HNOI】合唱队
    luogu 自适应Simpson2
    luogu 自适应Simpson1
    【bzoj 1502】月下柠檬树
  • 原文地址:https://www.cnblogs.com/zxone/p/13668571.html
Copyright © 2011-2022 走看看