zoukankan      html  css  js  c++  java
  • Filebeat原理与简单配置入门

    Filebeat工作原理

    Filebeat由两个主要组件组成:prospectors 和 harvesters。这两个组件协同工作将文件变动发送到指定的输出中。

    Harvester(收割机):负责读取单个文件内容。每个文件会启动一个Harvester,每个Harvester会逐行读取各个文件,并将文件内容发送到制定输出中。Harvester负责打开和关闭文件,意味在Harvester运行的时候,文件描述符处于打开状态,如果文件在收集中被重命名或者被删除,Filebeat会继续读取此文件。所以在Harvester关闭之前,磁盘不会被释放。默认情况filebeat会保持文件打开的状态,直到达到close_inactive(如果此选项开启,filebeat会在指定时间内将不再更新的文件句柄关闭,时间从harvester读取最后一行的时间开始计时。若文件句柄被关闭后,文件发生变化,则会启动一个新的harvester。关闭文件句柄的时间不取决于文件的修改时间,若此参数配置不当,则可能发生日志不实时的情况,由scan_frequency参数决定,默认10s。Harvester使用内部时间戳来记录文件最后被收集的时间。例如:设置5m,则在Harvester读取文件的最后一行之后,开始倒计时5分钟,若5分钟内文件无变化,则关闭文件句柄。默认5m)。

    Prospector(勘测者):负责管理Harvester并找到所有读取源。

    1
    2
    3
    4
    filebeat.prospectors:
    - input_type: log
      paths:
        - /apps/logs/*/info.log

    Prospector会找到/apps/logs/*目录下的所有info.log文件,并为每个文件启动一个Harvester。Prospector会检查每个文件,看Harvester是否已经启动,是否需要启动,或者文件是否可以忽略。若Harvester关闭,只有在文件大小发生变化的时候Prospector才会执行检查。只能检测本地的文件。

    Filebeat如何记录文件状态:

    将文件状态记录在文件中(默认在/var/lib/filebeat/registry)。此状态可以记住Harvester收集文件的偏移量。若连接不上输出设备,如ES等,filebeat会记录发送前的最后一行,并再可以连接的时候继续发送。Filebeat在运行的时候,Prospector状态会被记录在内存中。Filebeat重启的时候,利用registry记录的状态来进行重建,用来还原到重启之前的状态。每个Prospector会为每个找到的文件记录一个状态,对于每个文件,Filebeat存储唯一标识符以检测文件是否先前被收集。

    Filebeat如何保证事件至少被输出一次:

    Filebeat之所以能保证事件至少被传递到配置的输出一次,没有数据丢失,是因为filebeat将每个事件的传递状态保存在文件中。在未得到输出方确认时,filebeat会尝试一直发送,直到得到回应。若filebeat在传输过程中被关闭,则不会再关闭之前确认所有时事件。任何在filebeat关闭之前为确认的时间,都会在filebeat重启之后重新发送。这可确保至少发送一次,但有可能会重复。可通过设置shutdown_timeout 参数来设置关闭之前的等待事件回应的时间(默认禁用)。

     

    Filebeat安装配置

    rpm安装的默认路径:
      home: /usr/share/filebeat
      bin: /usr/share/filebeat/bin
      config: /etc/filebeat
      data: /var/lib/filebeat
      logs: /var/log/filebeat

    一、安装Filebeat:
    curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.4.2-x86_64.rpm
    rpm -i filebeat-6.4.2-x86_64.rpm

    二、配置:
      1.定义日志文件的路径:
      filebeat.inputs:
      - type: log
      enabled: true
      paths:
       - /var/log/*.log
      此中的输入收集路径中的所有文件/var/log/*.log,也可以使用可以使用以下模式:/var/log/*/*.log。这.log将从子文件夹中获取所有文件/var/log。
      它不从/var/log文件夹本身获取日志文件。目前,无法以递归方式获取目录的所有子目录中的所有文件。

      2.配置输出。Filebeat支持各种输出,但通常可以将事件直接发送到Elasticsearch,也可以发送到Logstash以进行其他处理(我这里将输出发送到elasticsearch)。

        1)将输出发送到elasticsearch,配置如下:
          #-------------------------- Elasticsearch output ------------------------------
          output.elasticsearch:
          hosts: ["127.0.0.1:9200"]
          根据不同的host可以指定相应的IP和端口

        2)要将输出发送到Logstash,配置如下:
          #----------------------------- Logstash output --------------------------------
          output.logstash:
          hosts:[“127.0.0.1:5044”]
          根据不同的host可以指定相应的IP和端口

      

      3.配置使用Kibana仪表盘
        使用随Filebeat提供的示例Kibana仪表板:
          setup.kibana:
          host: "localhost:5601"
          host是运行kibana的地址和端口,
          如果在端口后指定路径,可以是http://localhost:5601/path

      4.在elasticsearch中加载索引模板:
        默认情况下,如果启用了Elasticsearch输出,Filebeat会自动加载推荐的模板文件fields.yml,可以将filebeat.yml配置文件中的默认值更改为:
        setup.template.name: "your_template_name"
        setup.template.fields: "path/to/fields.yml"

        覆盖现有模板:
        setup.template.overwrite: true
        禁用自动模板加载:(如果禁用自动模板加载,则需要手动加载模板)
        setup.template.enabled: false
        要手动加载模板,请运行setup命令。需要连接到Elasticsearch。如果启用了Logstash输出,则需要临时禁用Logstash输出并使用-E选项启用Elasticsearch。此处的示例假定已启用Logstash输出。如果已启用Elasticsearch输出,则可以省略-E标志。

        filebeat setup --template -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'

      5.设置kibana仪表盘:
        1) Filebeat附带了示例Kibana仪表板,可视化和搜索,以便在Kibana中可视化Filebeat数据。在使用仪表板之前,
        您需要创建索引模式filebeat-*,并将仪表板加载到Kibana中。为此,您可以运行setup命令(如此处所述)或在配置文件中配置仪表板加载filebeat.yml。(我这里暂时选用此种方式)
          filebeat setup --dashboards


        2) 设置logstash输出仪表盘:
          在仪表板加载期间,Filebeat连接到Elasticsearch以检查版本信息。要在启用Logstash输出时加载仪表板,您需要临时禁用Logstash输出并启用Elasticsearch。要连接到安全的Elasticsearch集群,还需要传递Elasticsearch凭据。
          filebeat setup -e
           -E output.logstash.enabled=false
           -E output.elasticsearch.hosts=['localhost:9200']
           -E output.elasticsearch.username=filebeat_internal
           -E output.elasticsearch.password=YOUR_PASSWORD
           -E setup.kibana.host=localhost:5601

    三、启动
      systemctl start filebeat
      查看示例仪表盘:
      进入kibana的web界面,在discover,确保filebeat-*选择预定义的索引模式查看filebeat数据。
      dashboard页面可以选择要打开的仪表板。

  • 相关阅读:
    Android之遍历SD卡所有文件显示在ListView
    Android之ViewPager
    控制ViewPager的切换速度
    Android中显示sd卡的图片和视频
    java中主线程等待所有子线程结束
    Android之ViewFlipper实现图片切换
    Android闹钟服务详解
    Gradle基本操作入手
    设计模式
    【CSON原创】 基于HTML5的小球物理测试系统
  • 原文地址:https://www.cnblogs.com/whych/p/9909445.html
Copyright © 2011-2022 走看看