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页面可以选择要打开的仪表板。

  • 相关阅读:
    SpringMVC中静态获取request对象 Spring中获取 HttpServletRequest对象【转载】
    springcloud 的loadbalancer 轮询算法切换方法 2021.4.3
    springboot项目启动增加图标
    rabbitmq 端口作用以及修改方法
    centos8 安装rabbitmq
    springcloud config client Value获取不到信息的问题的处理方法
    springcloud config配置git作为数据源然后启动报错 If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
    Sublime Text的列模式如何操作
    centos8 安装redis
    jQuery简单的Ajax调用
  • 原文地址:https://www.cnblogs.com/whych/p/9909445.html
Copyright © 2011-2022 走看看